• Andy Newlands's avatar
    FS-9325 [mod_dptools] Priority flag for faster bind_digit_action matches · b5266ed6
    Andy Newlands 提交于
    Add exec: flag, 'P' (for "Priority") to bind_digit_action so that a
    match is returned as soon as it is found, without waiting for the
    inter-digit timeout to expire.
    
    This can be very useful where the system needs to be more responsive
    to the user.
    
    By default, if multiple bindings are enabled and one or more use a
    regex, switch_ivr_dmachine_check_match waits for the inter-digit
    timeout to expire before returning a match.  This ensures overlapping
    patterns, such as "^\d{4}$" and "^\12{3}$" can both be reliably matched
    
    When the 'P' flag is specified with bind_digit_action, whose action is
    exec, a match is returned as soon as the condition is satisfied,
    regardless of whether or not a longer match may be possible if further
    digits were entered.
    
    For example:
    
    	<action application="bind_digit_action" data="test,~^*\d{2}$,
    		exec[P]:execute_extension,myextn,self,self"/>
    
    	<action application="bind_digit_action" data="test,~^#\d{2}$",
    		exec:execute_extension,myotherextn,self,peer"/>
    
    	The first example causes a match to be returned immediately
    	after the 2nd digit is received, whereas the second example
    	defaults to waiting for the inter-digit timeout to expire
    	before returning.
    
    In cases where the 'P' flag is used with a regex and string, and both
    are matched, the more explicit, string match will be returned.
    
    For example:
    
    	<action application="bind_digit_action" data="test,~^*\d{2}$,
    		exec[P]:execute_extension,myextn,self,self"/>
    
    	<action application="bind_digit_action" data="test,*12,
    		exec[P]:execute_extension,myotherextn,self,self"/>
    
    	If "*12" is matched, myotherextn is executed, because "*12" is
    	more explicit/specific than "^*\d{2}$"
    
    If the 'P'(riority) flag is not used, behaviour is unchanged from
    previous versions.  This ensures backward compatibility.
    
    FS-9325 #resolve
    b5266ed6
switch_ivr_async.c 159.3 KB