Dynamic Routes Reference documentation

From voipsupport
Revision as of 04:16, 8 June 2018 by John (talk | contribs) (→‎Substitutions)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Dynamic Route

The following information documents how to fill in the fields of a Dynamic Route. This documentation refers to the V13 functionality. Not all options are available in previous versions.

Field name Comment
Dynamic Route Name The name of the dynamic route. This can be chosen at will. It is used to identify the route when selecting it as a destination from other applications or inbound routes.
Dynamic Route Description Optional description text for the Dynamic Route. This is for documentation purposes only
Enable DTMF Input Setting: Yes or No. Default: No. If set to yes the call waits for input on the touch tone keypad. This can be used to capture caller input (for example a customer number).
Announcement The system recording to be played back. If Enable DTMF input is set to Yes then playback takes palce before waiting for DTMF input.
Timeout Timeout in seconds to wait for DTMF input. This value is only used if Enable DTMF Input is set to Yes. If no value is given for timeout, the default for the channel is used. It is best to set an explicit value to avoid doubts.
Validation Validation rules using a Asterisk regular expression (see Asterisk REGEX). For example to ensure the input is between 3 and 4 digits long you could use ^[0-9]\{3,4\}$
Invalid Retries Number of times to retry if DTMF input does not match validation rules.
Invalid Retry Recording Recording to play if DTMF input does not match validation rules.
Invalid Recording Recording to play if DTMF input does not match validation rules and Invalid Retries have been exhausted.
Invalid Destination The destination to send the call to if DTMF input does not match the validation rules and Invalid Retries ahve been exhausted. The call is sent to this destination after playing the Invalid Recording if it is defined.
Saved input varibale name Name of variable in which to save DTMF input for future use in the dial plan or further dynamic routes. This is available as [name] in the query/lookup where name is the name of the variable you specify here. To use the variable in the dial plan (e.g. custom applications) it is necessary to prefix it with DYNROUTE_ e.g. DYNROUTE_name
Saved result variable name Name of variable in which to save lookup result for future use in the dial plan or further dynamic routes. This is available as [name] in the query/lookup where name is the name of the variable you specify here. To use the variable in the dial plan (e.g. custom applications) it is necessary to prefix it with DYNROUTE_ e.g. DYNROUTE_name
Source Type The type of lookup (see under Source types below for further information
Default Destination Destination to send the call to if the lookup result does not match one of the match values in the Dynamic Route Entries section or if the lookup fails. This is optional but is strongly recommended. If there is no default destination defined, then in the case of a lookup failure or if the lookup result does not match one of the defined values, the call will be disconnected. If this is not what is required, define the default destination with the desired behaviour.
Dynamic Route Entries Zero or more entries to be matched by the lookup result. If the lookup matches, then the call is routed to the chosen destination. Each match is tried in the order given until one matches. If no match is found then the call is sent to the Default Destination. Additional rows may be added by clicking the + symbol. Entries may be deleted by cancelling the value in the Match field.

Source Type

The following are the currently available source types for lookups. Each source type has its own specific fields for defining the lookup parameters.

Source Type Comment
none No lookup is carried out. The call is sent to the default destination
MySQL A lookup is done to a MySQL database. The parameters used are:
  • MySQL hostname: hostname of server
  • MySQL database: database name
  • MySQL username: username
  • MySQL password: password
  • MySQL query: the SQL to be used. It can contain substitutions as indicated in the table below. Example: select destination from callerid_table where calleridnum like '%[NUMBER]'
ODBC A lookup is done to an Asterisk ODBC data source. The parameters used are:
  • ODBC function: the Asterisk ODBC function name that has been configured
  • ODBC query: the query. It can contain substitutions as indicated in the table below. Example: select destination from callerid_table where calleridnum like '%[NUMBER]'

For information about setting up ODBC see this article

URL A lookup is done to a URL. The parameters used are:
  • URL Looup: the URL to be used for the lookup. The results must be text only. HTML, XML and JSON is not supported. The URL may contains parameters and the parameter values may include the substitutions indicated in the following table. Example: http://localhost/test.php?param1=4&param2=[NUMBER]
AGI A lookup is done by launching an Asterisk AGI script. The parameters used are:
  • AGI Lookup: the name of the Asterisk AGI script to be launched.
  • AGI Result Variable: the name of the variable that the script uses to communicate the result. The script should execute a SET VARIABLE command using this variable name at the end of execution in order to pass back the lookup result. An example script is given in the installation directory (test.agi).
Asterisk Variable The lookup value is read from an Asterisk Variable. The parameters used are:
  • Asterisk Variable: the variable name from which to read the result. Example: ${xxx}. Complex expressions may also be written provided they use valid Asterisk functions, for example: ${REGEX("^1.3$" ${DYNROUTE_dtmf})} would check that the DTMF input was in the range 1000-1999 (providing that the Saved input variable name was set to "dtmf")

Substitutions

In the lookup

When defining the query field for the lookup, the following Variable Names will be substituted by the corresponding value at the time of the call routing.

Variable Name Substituted by
[INPUT] The DTMF input by the caller on the touchtone keypad
[NUMBER] The callerid of the incoming call
[DID] The called number
[name] Where "name" is the value of one of these two fields: Saved input varibale name or Saved result varibale name. In the case of Saved input variable name, the DTMF input is saved under this name. This is useful if you are using two levels of Dynamic Route so that you can save the DTMF from the previous Dynamic Route in a uniquely named variable and use that variable in the lookup of the second Dynamic Route. In the case of Saved result variable name, the result returned from the lookup is saved to the variable name and can be used in a later Dynamic Route.

If you want to use a variable created outside Dynamic Routes in the lookup, then name the variable with a DYNROUTE_ prefix. Then [name] will be substituted by the value of the asterisk variable DYNROUTE_name. There is currently no way of reading an arbitrarily named asterisk variable, except for the lookup type "Asterisk variable".

In custom dial plan or other FreePBX modules

Variable Name Substituted by
DYNROUTE_name Where "name" is the value of one of these two fields: Saved input varibale name or Saved result varibale name. In the case of Saved input variable name, the DTMF input is saved under this name. This is useful if you need to use the value in a custom dial plan application or another FreePBX module. In the case of Saved result variable name, the result returned from the lookup is saved to the variable name and can be used in a custom dial plan application or another FreePBX module. To obtain the value of the variable named name, use ${DYNROUTE_name} in the Asterisk dial plan.

Screenshot of adding a Dynamic Route

Dynamic route add.png