Table of Contents

Telephony: Dialplan

Conditions and Destination Variables

To create conditions you can use regular expressions to match the value in the variable field. The following expressions can be used:

\d      => 1 digit (0-9)
\d*     => 0 or more digits
\d+     => 1 or more digits
\d{3}   => exactly 3 digits
[0-9]   => any digit (1 digit only) 
[1-3]   => a digit between 1 and 3 (1 digit only) 
[13]    => digit is 1 or 3 (1 digit only)
[134-7] => digit is 1, 3, 4, 5, 6 or 7 (1 digit only) 

^123    => the value starts by 123
123$    => the value ends by 123


^00\d+$   => the number starts by 00 followed by 1 or more digits
^00(\d+)$ => the number starts by 00 followed by 1 or more digits, but the 1 or more digits is save in variable ${val1}

You can check at http://www.regular-expressions.info/ for a full documentation to learn more about regular expressions.

When calling a destination you can use variables that are passed to the action (check the manual for a complete list of variables), for example you can do:

${destination_number} => the destination number dialed by the user
${caller_id_number} => the call caller id number
${caller_id_name} => the call caller id name
${effective_caller_id_number} => the call caller id number effective from change in action dialplan
${effective_caller_id_name} => the call caller id name effective from change in action dialplan
${local_caller_id_number} => the call caller id number local from account or domain
${local_caller_id_name} => the call caller id name local from account or domain
${external_caller_id_number} => the call caller id number external from account or domain
${external_caller_id_name} => the call caller id name external from account or domain
${origination_caller_id_number} => the call caller id number is or effective_caller_id_number or external_caller_id_number or local_caller_id_number or caller_id_number
${origination_caller_id_name} => the call caller id name is or effective_caller_id_name or external_caller_id_name or local_caller_id_name or caller_id_name
${val1}, ${val2}, ... => use the resulting match from the regular expression inside () 
${domain_name} => the domain name
${line_name} => the line name
${account_name} => the account name
${description} => the account description
${accountcode} => the call accountcode
${userfield} => the call userfield
${uuid} => The call unique identifier
${call_uuid} => The call uuid unique identifier
${channel_name} => the channel name
${channel_type} => the channel type
${channel_type} => the channel type
${context} => The dial-plan context name
${extension} => The dial-plan extension name
${billsec} => The call billsec time in seconds
${bridge_hangup_cause} => The hangup cause for the bridge action
${bridge_originate_disposition} => The originate cause for the bridge action
${ivr_digits} => digits pressed inside the ivr
${odbc_[\w-]+} => The odbc return variables
${chan_[\w-]+} => The custom channel variable defined in action channel variable
${sip_p_[\w-]+} => SIP optional P-Key-Flags headers variables
${sip_x_[\w-]+} => SIP optional custom headers variables
${sip_to_user} => SIP to user variable.

Example:

  • Removing 3 digits and add the prefix #31#
Expression: ^456(\d+)$ => call to: #31#${val1}
  • Goto self voicemail when dialing *20#
Expression: ^\*20#$ => action voicemail: ${caller_id_number} % commsmundi.com

Bridge local

This action allows you call to local accounts or local groups.

Bridge local - account

To call to a account.

  • Name: call account
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^20\d$
  • Action: x - custom: Bridge Local; Type: x - account; Domain: commsmundi.com; Number: ${destination_number}
  • click Add

Bridge local - group

To call to a group.

  • Name: call group
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^666$
  • Action: x - custom: Bridge Local; Type: x - group; Domain: commsmundi.com; Number: technical

Bridge custom

To make a call using a line (SIP or TDM) the action used in the dialplan is the action Bridge Custom. This action allows you to also call to local accounts ignoring the internal forwards activated in the account, it calls directly to the registered endpoint.

Bridge custom - single

To call to a landline (using Spain national numeration) use the following parameters:

  • Name: call landline
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^[89][1-8]\d{7}$
  • Action: x - custom: Bridge Custom; Type: x - Single; Destination: Remote; Line: <select a line>; Number: ${destination_number}; Timeout: 60
  • click Add

Bridge custom - multiple

To call simultaneously to two different accounts. The first to answer the call takes the control and makes the other to hangup.

  • Name: call multiple destinations at same time
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^555$
  • Action: x - custom: Bridge Custom; Type: x - Multiple;
    • Destination: Local; Domain: commsmundi.com; Number: 300; Timeout: 60
    • Destination: Local; Domain: commsmundi.com; Number: 301; Timeout: 60

Bridge custom - failover

To call to a landline (using Spain national numeration), if the first operator returns error it will use the second line.

  • Name: call landline
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^[89][1-8]\d{7}$
  • Action: x - custom: Bridge Custom; Type: x - Failover;
    • Destination: Remote; Line: <select a line 1>; Number: ${destination_number}; Timeout: 60
    • Destination: Remote; Line: <select a line 2>; Number: ${destination_number}; Timeout: 60

Bridge custom continue between rules

To call to a landline (using Spain national numeration). If the call can't be completed using the first rule, try to make the call using a second rule.

Add the first rule:

  • Name: call landline 1
  • Priority: last
  • Continue: x - Continue after extension
  • Conditions: x - custom; x - Destination number: x-Expression: ^[89][1-8]\d{7}$
  • Action: x - custom: Bridge Custom; Type: x - Single;
    • Destination: Remote; Line: <select a line 1>; Number: ${destination_number}; Timeout: 60
    • Continue; Condition: x - On timeout; x -On failure

Add the second rule:

  • Name: call landline 2
  • Priority: after call landline 1
  • Conditions: x - custom; x - Destination number: x-Expression: ^[89][1-8]\d{7}$
  • Action: x - custom: Bridge Custom; Type: x - Single;
  • Destination: Remote; Line: <select a line 2>; Number: ${destination_number}; Timeout: 60

Bridge custom retrieve blind transfer between extensions

If the call can not be completed using the first rule, retrieve blind transfer between extensions.

Add the first rule:

  • Name: retrieve_blind_transfer_between_extensions
  • Priority: first
  • Conditions: x - custom; x - Destination number: x-Expression: ^account/(\d+)@.*$
  • Action: x - custom: Bridge Local;
    • Destination: Type; account: <domain>; Number: ${val1};

Add the second rule:

  • Name: call local
  • Priority: after retrieve_blind_transfer_between_extensions
  • Conditions:
  • x - custom; x - Destination number: x - list: <list_domain>
  • x - Advanced; x - Channel variable: Name: isblindtransfer , Expression: ^true$
  • Action: x - custom: Bridge Custom;
  • Destination: Domain: <domain>; Number: ${destination_number};
  • Continue; Condition: x - On timeout; x -On failure
  • Transfer; Destination: ${blind_transfer_channel_name} % <context>

Bridge custom - single and list condition

To call to destination using list condition, use the following parameters:

- add the list

  • Name: list_calls
  • Mode: Full match
  • click Add

- add the values in list

  • Value: 100
  • Parameters: 612345678
  • click Add
  • ….

- add rule action

  • Name: call
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-list: <list_name>$
  • Action: x - custom: Bridge Custom; Type: x - Single; Destination: Remote; Line: <select a line>; Number: ${list1}; Timeout: 60
  • click Add

Bridge custom - single and send dtmf

To call to a landline (using Spain national numeration) and send dtmf use the following parameters:

  • Name: call landline
  • Priority: last
  • Conditions: x - custom; x - Destination number: x-Expression: ^([89][1-8]\d{7})(\d+)$
  • Action: x - custom: Bridge Custom; Type: x - Single; Destination: Remote; Line: <select a line>; Number: ${val1}; Timeout: 60
    • x - DTMF;
    • x - Destination;
    • Digits: ${val2} Duration: <Duration>; Delay: <Delay>;
  • click Add

Callback

The function callback allows to trigger an automatic call between a destination and an action. For example, you can use this function to build an automatic system where you can call and CM returns you the call and connects it to the application disa, so you can make calls as a normal company extension.

Callback - return call connecting to DISA

To configure a callback that returns you the call, without answer. Oce you answered the returned call connects you to the application disa, you must add the following rules:

  1. add the callback action in the context incoming, in this case my caller id number is 123456789
    • Name: callback me
    • Priority: first
    • Conditions: x - custom; x - caller id number: x-Expression: ^123456789$
    • Action: x - custom: Callback;
      • Callback: ${caller_id_number} @ <outgoing>; Timeout: 60 seconds
      • Destination: disa_callback @ <incoming>
      • Delay: 5000 ms
    • click Add
  2. add the disa action in the context incoming
    • Name: callback disa
    • Priority: first
    • Conditions: x - custom; x - Destination number: x-Expression: ^disa_callback$
    • Action: x - custom: DISA; Context: <outoing>; Timeout: 60 seconds
    • click Add

Eavesdrop

In order to listen for active calls, there are two options, listen to a particular caller or listen to the first active call in one group.

Forcing the destination

  • Name: listen to single
  • Priority: first
  • Conditions: x - custom; x - Destination number: x-Expression: ^\*0(\d+)$
  • Action: x - custom: Eavesdrop; Type: x - Account; Destination: ${val1} % commsmundi.com
  • click Add

Group the destination

  • Name: listen to group
  • Priority: first
  • Conditions: x - custom; x - Destination number: x-Expression: ^\*0$
  • Action: x - custom: Eavesdrop; Type: x - Group; Destination: group1 % commsmundi.com
  • click Add

:!: The destination group must have “telephony” enabled

Fax mailbox - receiving faxes

Receiving the fax can be done directly or when the destination number is shared between normal calls using a rule to detect if is a fax or not. You must configure in directory an account with fax feature enable.

Direct fax

  1. add the rule to directly receive the fax, in this case my destination number is 123456789
    • Name: fax
    • Priority: first
    • Conditions: x - custom; x - destination number: x-Expression: ^123456789$
    • Action: x - custom: fax mailbox;
      • Destination: fax @ commsmundi.com
    • click Add

Auto detect fax and transfer to another extension

  1. add the rule to directly receive the fax when transfer from the fax detection, in this case the destination number is fax
    • Name: fax
    • Priority: first
    • Conditions: x - custom; x - destination number: x-Expression: ^fax$
    • Action: x - custom: fax mailbox;
      • Destination: fax @ commsmundi.com
    • click Add
  1. add the rule to detect the fax
    • Name: fax
    • Priority: first
    • continue: x - Continue after extension
    • Conditions: x - any;
    • Action: x - custom: fax detect;
      • Timeout: 3 seconds
      • Transfer: fax @ incoming
    • click Add

:!: This two rules are added in the same context incoming. If you add the detection and the rule to receive the fax in different contexts, adjust the configuration.

Hold Music

It's possible to force a different music on hold per type of call.

Forcing hold music rule

Add a new rule using the following parameters:

  • Name: force hold music for all the calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Any;
  • Action: x -Music; x - Music on hold: x - Type: file; <select domain> and <select the filename>
  • click Add

Forcing hold music inline rule

Force the the music on hold in an already created rule

  • Name: dial extension
  • Priority: first
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x - Sound; x - Music on hold: x - Type: file; <select domain> and <select the filename>
  • click Add

Intercept

In order to capture incoming calls at one extension, there are two options, capture to a particular caller or capture to the last call in one group.

Forcing the destination

  • Name: capture to single
  • Priority: first
  • Conditions: x - custom; x - Destination number: x-Expression: ^\*0(\d+)$
  • Action: x - custom: Intercept; Type: x - Account; Destination: ${val1} % commsmundi.com
  • click Add

Group the destination

  • Name: capture in group
  • Priority: first
  • Conditions: x - custom; x - Destination number: x-Expression: ^\*0$
  • Action: x - custom: Intercept; Type: x - Group; Destination: group1 % commsmundi.com
  • click Add

:!: The destination group must have “telephony” enabled

Limit

It's possible to apply a limit to a random resource. This way we can limit the simultaneous calls that a domain can do, limit the international call rate, and more..

Limiting simultaneous calls in one domain

Add a new rule to the outgoing context used by the domain commsmundi. This rule allows 5 simultaneous calls for the domain commsmundi. When the value is higher than 5 the calls get dropped.

  • Name: limit calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any;
  • Action: x - custom: Limit; Resource: commsmundiCalls; Max: 5; Action: Hangup; Cause: USER_BUSY
  • click Add

Limiting call rate for one domain

Add a new rule to the outgoing context used by the domain commsmundi. This rules allows 5 new calls per minute and then transfer the call to another context where CommsMundi will play a warning message.

  • Name: limit calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any;
  • Action: x - custom: Limit; Resource: commsmundiCalls; Max: 5; x - Period: 60 seconds; Action: Transfer; Destination: limitReached @ errormessage
  • click Add

ODBC

Using the function ODBC is possible to connect to external databases to extract or insert data. The use of this functions allows interact with external applications or executing dialplan actions in function of external data. In the SQL queries is possible to use dialplan variables.
To add a new ODBC connector go to the Comms Mundi administration page Home → ODBC. For more examples, please check ODBC.

Action ODBC

Adding a rule to extract total call duration for an account. Add the rule using the following parameters:

  • Name: control minutes
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: ODBC;
    • x - Execute inline;
    • ODBC: localhost;
    • SQL: select total from client where client_name='companyA';
  • click Add

Adding a rule to update the total call duration for an account upon hangup. Add the rule using the following parameters:

  • Name: control minutes
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: Execute on Hangup;
    • Action: ODBC;
    • ODBC: localhost;
    • SQL: update client set total=total+${billsec} where client_name='companyA';
  • click Add

Condition using ODBC

Matching a call with the extract value after the previous rule “control minutes”

  • Name: check minutes
  • Priority: after control minutes
  • Conditions: x - Custom; x - ODBC variable; Name: total; x-Expression: ^1000$
  • Action: x - custom: Text to Speech; language; en-US; Text: You have expire the total minutes allowed!
  • click Add

Record

It's possible to record any active call in CommsMundi. There are two possible methods to do this operation by trigger the recording from the dialplan or manual trigger in the active call.
All the audio recordings can be accessible from the user's web interface in the application Recording or connecting through FTP.

Recording from the dialplan

Add a new rule to record all the calls using the following parameters:

  • Name: record
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: Record; Start In: x - source; Recording mailbox: recordbox % commsmundi.com
  • click Add

Recording from the extension in an active call

Activate in the rule the Inline functions [Callee] or Inline features [Caller]:

  • Name: dial extension
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x Inline features [Callee]; x - Record: Key *21); Recording mailbox: recordbox % commsmundi.com
  • click Add

Ring-Back

It's possible to force a custom ring-back per type of call.

Forcing ring back rule

Add a new rule using the following parameters:

  • Name: force ring-back for all the calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Any;
  • Action: x -Music; x - Ring back: x - Type: file; <select domain> and <select the filename>
  • click Add

Forcing ring back inline rule

Force the the ring back in an already created rule

  • Name: dial extension
  • Priority: first
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x - Sound; x - Ring back: x - Type: file; <select domain> and <select the filename>
  • click Add

SIP-X-Headers

It's possible to set one or more SIP X headers that are used to send non-standard information via SIP protocol, for example, sending the customer credit information in the SIP package. Conditions can be done as well using the SIP X headers received from the remote end to execute actions.

Setting SIP X Headers

Add a new rule to set SIP X headers using the following parameters:

  • Name: Custom SIP X headers
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: SIP-X-Header; x - variable; (click add to more than one variable)
    • Name cm_client; Value: 111111
    • Name cm_credit; Value: 50
  • click Add

Condition using SIP X Headers

Matching a incoming call using SIP X headers:

  • Name: Identifying CM client
  • Priority: first
  • Conditions: x - Custom; x - SIP 'X-Header'; Name: cm_cliente; x-Expression: ^111111$
  • Action: x - custom: Text to Speech; language; en-US; Text: Called client 111111
  • click Add

SIP-PRESENCE

It could be used to turn on or off lights on a phone.

Add a new rule to force blf to blink:

  • Name: Forcing blf blink
  • Priority: First
  • Conditions: x – Custom; x – Destination number; x – Expression: ^2222$
  • Action: x – Custom: SIP; x – Event; x – PRESENCE; Destination: Domain: commsmundi.com Number: blftest; State: early
  • click Add

Forcing blf on (static/busy)

Add a new rule to force blf to stay static or busy:

  • Name: Forcing blf static or busy
  • Priority: First
  • Conditions: x – Custom; x – Destination number; x – Expression: ^2223$
  • Action: x – Custom: SIP; x – Event; x – PRESENCE; Destination: Domain: commsmundi.com Number: blftest; State: confirmed
  • click Add

Forcing blf off (static/free)

Add a new rule to force blf to stay static or free:

  • Name: Forcing blf static or free
  • Priority: first
  • Conditions: x – Custom; x – Destination number; x – Expression: ^2224$
  • Action: x – Custom: SIP; x – Event; x – PRESENCE; Destination: Domain: commsmundi.com Number: blftest; State: terminated
  • click Add

SIP-NOTIFY

Create a new rule to reboot a Yealink phone typing any number.

  • Name: Reboot_phone
  • Priority: First
  • Conditions: x – Custom;
    • General: x – Destination number; x – Expression: ^900$
  • Action: x – Custom; SIP
    • x – Event; x – NOTIFY;
    • Destination: Domain: commsmundi.com Number: 100
    • Event string: check-sync; reboot=true
    • Content type: text/plain
  • click Add

Create a new rule to show text on a Yealink phone typing any number.

  • Name: Text_Screen
  • Priority: First
  • Conditions: x – Custom;
    • General: x – Destination number; x – Expression: ^800$
  • Action: x – Custom; SIP
    • x – Event; x – NOTIFY;
    • Destination: Domain: commsmundi.com Number: 100
    • Event string: Yealink-xml
    • Content type: application/xml
    • x – Message:
	<?xml version="1.0" encoding="ISO-8859-1"?>
	<YealinkIPPhoneTextScreen
 			Beep="yes"
			Timeout="10">
	<Title wrap="yes">TextScreen</Title>
	<Text>xml test</Text>
	</YealinkIPPhoneTextScreen>

Forcing phone to alert of a new message

Create a new rule to turn on the message light or to activate the message notification.

  • Name: Turnon_lightM
  • Priority: First
  • Conditions: x – Custom;
    • General: x – Destination number; x – Expression: ^200$
  • Action: x – Custom; SIP
    • x – Event; x – NOTIFY;
    • Destination: Domain: commsmundi.com Number: 100
    • Event string: message-summary
    • Content- type: application/simple-message-summary
    • x – Message:
	Messages-Waiting: yes
	Message-Account: sip:100@commsmundi.com
	Voice-Message: 3/0
	

SIP-Diversion

It's possible to set the header diversion when making outgoing calls.

Setting SIP Diversion

Add a new rule to set SIP Diversion using the following parameters:

  • Name: Custom SIP Diversion
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: SIP
    • x - Diversion; Address: sip:${destination_number}@192.168.10.25; Reason:<unconditional>
  • click Add

Accountcode

It's possible to set a custom variable Accountcode to group all the calls in one or multiple categories. The history page allows search by Accountcode.

Accountcode rule

Add a new rule to identify international calls using the following parameters:

  • Name: force Accountcode for international calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom; x - Destination number; x-Expression: ^00\d+$
  • Action: x - custom: Accountcode: international
  • click Add

Accountcode inline rule

Force the Accountcode in an already created rule indentifying calls between registered users.

  • Name: dial extension
  • Priority: first
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x - Accountcode: localcalls
  • click Add

Userfield

It's possible to set a custom variable userfield to group all the calls in one or multiple categories. The history page allows search by userfield.

userfield rule

Add a new rule to identify international calls using the following parameters:

  • Name: force userfield for international calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom; x - Destination number; x-Expression: ^00\d+$
  • Action: x - custom: userfield: international
  • click Add

Userfield inline rule

Force the userfield in an already created rule

  • Name: dial extension
  • Priority: first
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x - userfield: localcalls
  • click Add

Caller id

It's possible to set a caller id number and/or to group all the calls in one or multiple categories.

Caller id rule

Add a new rule to identify international calls using the following parameters:

  • Name: force Caller id number for international calls
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom; x - Destination number; x-Expression: ^00\d+$
  • Action: x - custom: Caller id ; x - Number: 00${caller_id_number}
  • click Add

Caller id inline rule

Force the Caller id number and/or name in an already created rule indentifying calls between registered users.

  • Name: dial extension
  • Priority: first
  • Conditions: x - any
  • Action: x - custom: bridge local; Type: x - account; Destination: ${destination_number} % commsmundi.com; x - Caller id: x - name: NAME
  • click Add

Voicemail

The voicemail action allows you to check your voicemail messages or directly send a call to a voicemail box to leave a message. To add, modify or delete voicemail accounts go to the CommsMundi administration page Directory.

voicemail rule check messages

Add a new rule to check messages in one account

  • Name: check voicemail messages
  • Priority: first
  • Conditions: x - Custom
    • x - Destination number; x-Expression: ^\*20#$
    • x - Channel name; x-Expression: ^account/(.*)@commsmundi.com
  • Action: x - custom: Voicemail; Type: x - Check messages ; Destination: ${val1} % commsmundi.com;
  • click Add

voicemail rule leave a message

Add a new rule to redirect a caller to a voicemail box when in period “leasure_time”

  • Name: voicemail leave a message
  • Priority: first
  • Conditions: x - Custom; x - Time period; leasure_time
  • Action: x - custom: Voicemail; Type: x - Leave message; Destination: voicemail % commsmundi.com;
  • click Add

Playback and Get Digits

The action play and get digits allows to store the dtmf digits introduced by the caller when interacting with a prompt message. The digits are store in a channel variable with the prefix digit that can later be used to trigger special rules or insert the value to a remote database using an odbc connector.

Playback and Get Digits action

Add a new rule to prompt a message to the caller and store the pressed dtmf

  • Name: ask age
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - any
  • Action: x - custom: Playback and Get Digits;
    • Sound: x - File ;
    • Variable: age
  • click Add

Add a rule to play the age (dtmf) introduced in previous rule

  • Name: check age
  • Priority: after: ask age
  • Conditions: x - any
  • Action: x - custom: text to speech;
    • Language: en-US
    • text: your age is ${chan_digit_age}
  • click Add

DB

The action DB allows to store values ​​in variables that will be reflected in Telephony/Dialplan/variable DB. This values can be used ​​in other rules to perform specific actions. Atention: the stored data are volatile.

Activate day and night mode (outgoing context)

Add a new rule to store information in the variable (activate day mode).

  • Name: activate day mode
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^1234$
  • Action: x - custom: DB;
    • Variable Name: mode;
    • Variable value: day
  • click Add

Add a new rule to play (the day mode is active).

  • Name: notify day mode
  • Priority: after: activate day mode
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^1234$
  • Action: x - custom: text to speech;
    • Language: en-US
    • text: day mode activated
  • click Add

Add a new rule to store information in the variable (activate night mode).

  • Name: activate night mode
  • Priority: after: notify day mode
  • Continue: x - Continue after extension
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^1235$
  • Action: x - custom: DB;
    • Variable Name: mode;
    • Variable value: night
  • click Add

Add a new rule to play (the night mode is active).

  • Name: notify night mode
  • Priority: after: activate night mode
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^1235$
  • Action: x - custom: text to speech;
    • Language: en-US
    • text: night mode activated
  • click Add

perform actions with the variable (incoming context)

Add a new rule to check night mode.

  • Name: check night mode
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^1235$
    • Advanced DB variable: name: mode
    • Advanced DB variable: expression: ^night$
  • Action: x - custom: text to speech;
    • Language: en-US
    • text: “custom message”
  • click Add

Add a new default rule to day mode

  • Name: check night mode
  • Priority: after: check night mode
  • Conditions: x - any
  • Action: x - custom: bridge local;
    • type: account
    • domain: commsmundi.com
    • number: ${destination_number}
  • click Add

JSON response

The HTTP action JSON response allows you to return values using a PHP file and working with this data.

Example php:

<?php

$array = array();
$array[0]['extension'] = "200";
$array[0]['name'] = "name1";
$array['example']['extension'] = "300";
$array['example']['name'] = "name2";

echo json_encode($array);

?>

Query and management of HTTP data (outgoing context)

Add a new rule to query the PHP data.

  • Name: HTTP query
  • Priority: first
  • Continue: x - Continue after extension
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^11$
  • Action: x - custom: HTTP;
    • options: x - execute inline, x - JSON response;
    • url: “direction where the php file is hosted”
  • click Add

Add a new rule to manage the consulted data.

  • Name: HTTP answer
  • Priority: after HTTP query
  • Conditions: x - Custom
    • Destination-number: X - Expression: ^11$
  • Action: x - custom: Text to speech;
    • language: en-US;
    • text: user ${chan_http_json-example.name} extension ${chan_http_json-example.extension}
  • click Add

The consulted data is stored in variable with this format:

  • ${chan_http_json-<array_name>.<name>}

If array is of one dimension the format would be:

  • ${chan_http_json-<name>}

Wake up call

You can create a rule to turn on your wake up call and another to disable it.

Turn on Wake up call

  • Name: Wakeup_on
  • Conditions: x - Destination number: ^1$
  • Action: x - Custom: Wake up call
  • Programmed: x - Enable
  • Account: 100 @ commsmundi.com
  • Time: 10:35
  • Click on Add

Disable Wake up call

  • Name: Wakeup_down
  • Conditions: x - Destination number: ^2$
  • Action: x - Custom: Wake up call
  • Programmed: x - Disable
  • Account: 100 @ commsmundi.com
  • Click on Add

IVR

To execte an IVR you need to configure a rule at dialplan.

  • Name: IVR
  • Conditions: x - Destination number; x - Expression: ^1$
  • Action: x - Custom; Destination: IVRTest

Call Center

Dial

You will need to create a rule on the dialplan so the agents will have access to the callcenter.

  • Name: Callcenter_test
  • Conditions: x - Custom; x - Destination number; x - Expression: ^343$
  • Action: x - Custom: Callcenter; Type: x - Dial; Destination: Test; Queue: Default queue; Priority: 0
  • Click on Add

Agent login/logout

You can create a rule so an agent can login or logout (only with dynamic users).

  • Name: Login/LogoutCC
  • Conditions: x - Custom; x - Destination number: ^131$
  • Action: x - Custom: Call center; Type: Agent login/logout
  • Destination: Test
  • Click on Add

Agent pause/unpause

You can create a rule so an agent can pause or start to receiving calls.

  • Name: Pause/UnpauseCC
  • Conditions: x - Custom; x - Destination number: ^141$
  • Action: x - Custom: Call center; Type: Agent pause/unpause
  • Destination: Test
  • Click on Add

DISA

  • Name: Disa_test
  • Conditions: x - Custom; x - Destination number; x - Expression: ^243$
  • Action: x - Custom: DISA; Context: outgoing
  • Click on Add

Scheduler

You can create a rule so Commsmundi will automatically playback, hangup, transfer… every x seconds or once a call. For example, if you want to hangup a call when it duration is 10 seconds when the call is answered:

  • Name: Scheudulerl_test
  • Continue: x - Continue after extension
  • Conditions: x - Any
  • Action: Scheduler
  • x - Repeate every 10 seconds; x - Count time once answered
  • Action: Hangup
  • Hangup case: x - Normal
  • Click on Add

Park

You can park a call and take it in a different phone.

Park in

  • Name: Park_in
  • Conditions: x - Custom
  • x - Destination number; x - Expression: ^213$
  • Action: Park; Type: x - In
  • Destination: 100 % commsmundi.com
  • Timeout: 300 seconds
  • Click on Add

Park out

  • Name: Park_out
  • Conditions: x - Custom
  • x - Destination number; x- Expression: ^214$
  • Action: Park; Type: x - Out
  • Destination: 100 % commsmundi.com
  • Click on Add

Attendance

You can generate input or output events in attendance.

Attendance in

  • Name: Attendance_in
  • Conditions: x - Custom
  • x - Channel name; x - Expression: ^account/(.*)@commsmundi.com
  • x - Destination number; x - Expression: ^213$
  • Action: Attendance; Type: x - In
  • Destination: domain: commsmundi.com number : ${val1}
  • Click on Add

Attendance out

  • Name: Attendance_out
  • Conditions: x - Custom
  • x - Channel name; x - Expression: ^account/(.*)@commsmundi.com
  • x - Destination number; x - Expression: ^214$
  • Action: Attendance; Type: x - Out
  • Destination: domain: commsmundi.com number : ${val1}
  • Click on Add
1)
When the callee press *2 it start or stop the recording
/home/www/wiki/data/pages/configuration/telephony/dialplan.txt · Last modified: 2024/08/12 12:06 by admin
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki