CallInterface

Description (v1.15.3)

INFO Call the specific interface.
INFO If the call is not answered before the timeout is expired, the call is sent to the "Timeout Extension".
INFO If the interface is busy, the call is sent to the "Busy Extension".

Release notes

Version 1.15.3 - Early deployment
  • Bugfix: VoIP devices won't play any tone when a call is answered. (backport) (M22044)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.15.2 - Early deployment
  • Bugfix: Fixed parsing warning (M20686)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.15.1 - Early deployment
  • Bugfix: Called lost in case the call is not answered (M18886)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.13.0 - General deployment
  • Improvement: It is now possible to set a non-standard PAI if needed (M11293)
  • Bugfix: All ISUP causes checked (M11440)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.12.2 - General deployment
  • Bugfix: try the second interface even if we catch ISUP cause 20 (M0)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.11.0 - General deployment
  • Feature: Have different callerid per trunk (M8655)
  • Feature: Add the possibility to use P-Preferred-ID header (M8963)
  • Dependency:
    • OugoingSipTrunk Interface v1.52 or higher (if used among the interface list)
    • SangomaBRI Interface v2.4.0 or higher (if used among the interface list)
    • SangomaPRI Interface v2.4.0 or higher (if used among the interface list)

Version 1.10.3 - General deployment
  • Improvement: Set anonymous in From field when CLIR(M0006838)
  • Dependency:
    • OugoingSipTrunk Interface v1.45 or higher (if used among the interface list)

Version 1.10.2 - General deployment
  • Bugfix: Callerid was incorrect when the originating channel was using the "Local" technology (M6243)
  • Potential update impact level 1 DONE: no critical impact expected. Update can be applied without risk of breaking critical functionality.: If you are still using a legacy implementation where a call forward is set on the phone level and you also use an outgoing callflow, you have to modify your outgoing callflow to keep supporting this legacy behaviour. Refer to the action documentation for more information on how to do this.
  • Dependency:
    • OugoingSipTrunk Interface v1.45 or higher (if used among the interface list)

Version 1.10.1 - General deployment
  • Bugfix: There was an infinit loop when CallInterface was used on asterisk 1.2 (M6590)
  • Dependency:
    • OugoingSipTrunk Interface v1.45 or higher (if used among the interface list)

Version 1.10.0 - Deprecated
  • Bugfix: Missing host name in the SIP Private Asserted Identity Header
  • Bugfix: Hide mode was not working anymore
  • Bugfix: Call could hang forever with busy tone being played
  • Deprecated: There is an infinite loop when used on Asterisk 1.2 (M6590)
  • Dependency:
    • OugoingSipTrunk Interface v1.45 or higher (if used among the interface list)

Version 1.9.0 - General deployment
  • Feature: Added the possibility to configure the ring tone generation

Version 1.8.1 - General deployment
  • Improvement: Support Communication Server (M5836)
  • Improvement: CLIR can be forced in the callflow using ForceCLIR variable (M5770)
  • Bugfix: When using CLIR flag, an outgoing number is now always set in the P-Asserted-Identity header (M5770)

Version 1.8.0 - Deprecated
  • Feature: Support CLIR flag in order to be compliant with IMS standard (M5276)
  • Improvement: 'As set in Global Parameters' mode renamed to 'Translate'
  • Bugfix: Caller presentation was not set properly anymore on Asterisk 1.2x
  • Limitation: Only supports Asterisk 1.2.x (M5836)
  • Deprecated: In CLIR mode the number is always hidden which is not IMS compliant (M5276)

Version 1.7 - General deployment
  • Improvement: Compatibility with the Communication Server module

Version 1.6 - General deployment
  • Feature: Allow to configure congestion detection mechanism

Version 1.5 - General deployment
  • Feature: If an interface does not exist on the SOP, the next interface is selected

Version 1.4 - General deployment
  • Bugfix: P-Asserted-Identity and Privacy headers instructions were skipped

Version 1.3 - General deployment
  • Feature: Add the option to clear the RDNIS
  • Feature: Add P-Asserted-Identity and Privacy headers when outgoing number is hidden
  • Feature: Variable MaximumCallDuration can be used to limit the maximum call duration

Version 1.2 - General deployment
  • Force to generate ringback tone

Version 1.1 - General deployment
  • Implement linear and random hunting among maximum 4 interfaces.

Version 1.0 - General deployment
  • First production version

Version 0.3 - General deployment
  • Add congestion action output.

Version 0.2 - General deployment
  • Bugfix: Fix Callback integration issue

Version 0.1 - Deprecated

Version 0.0 - Deprecated

Action parameters

  • Description: Free description to describe the goal of the action instance within the call flow
  • Number to dial: Number which will be dialed by the interface(s)
  • Interface 1..4: This action implements a hunt group of up to 4 interfaces (Interface 1 to Interface 4)
  • Hunting Mechanism: The hunting mechanism can either be
    • 'Linear': the order of the interface is preserved, or
    • 'Random' the order is taken randomly
  • Timeout: Each interface will be called during a certain timeout. (infinite if empty)
  • Caller ID policy:
    • Translate (previously "As set in Global Parameter"): Update the caller id using the information from Outgoing Number Mapping (callerid_[caller id] global parameters)
    • Transparent: Do not change the caller id
    • Hide: Hide the caller id. The caller ID is set to '00' and the caller presentation indicates the caller ID as a private number
    • Clear RDNIS: RDNIS (Redirected Dialed Number Information Service) is mainly used on ISDN interfaces. The normal way is that when a call is redirected through a phone set call forwarding, the RDNIS will be the initial caller id. Fore some reasons, some provider does not support RDNIS (example: BASE mobile provider). This feature enables to clear it. (available on version 1.3 or higher)
    • CLIR: CLIR stands for Calling Line Identification Restriction. On an ISDN line this will set the CLIR flag in the outgoing SETUP in order to ask the network to keep the Caller ID private, except for the emergency services and billing services. In SIP, it will add the Privacy header in order to indicate that the provided caller ID must remain private. When used together with the 'Translate' mode, this will make sure that a proper caller ID is always provided to the remote network. If the callerid_[caller id] is empty, the PrivateAssertedIdentityNumber will be used instead in order to set the Caller ID.

This action has 3 exits:

  • Congestion:
    • If one of the interfaces is congested, the following interface in the list is called.
    • If all the interfaces are congested, the action goes to the 'congestion' exit.
  • Busy:
    • If one of the interfaces is busy, the call goes to the 'busy' exit.
  • Timeout:
    • If the specified timeout expired during an interface call, the following interface in the list is called
    • If all the interfaces time out, the call goes to the 'timeout' exit

Dependencies

  • Global Parameters:
    • PrivateAssertedIdentityNumber : If this variable is set when the action is called, the callinterface action will use this number to send the privacy header in SIP invite message when the CLI must be masked. This can be requested by specific SIP providers (Example: Belgacom NGN SIP trunk). (Only used in version 1.3 or higher)
    • MaximumCallDuration : If this variable is set, the call duration will have the correspondant maximum dureation. (Only used in version 1.3 or higher)
    • DialInterfaceOption : If this variable is set, the corresponding dialing option will be used. (For example, 'r' for forcing ringback tone by the PBX, 'm' to play music during ringback, ...)
  • Actions:
    • MapNumber 1.16+ : When CallInterface is used in an outgoing callflow, you should use at least this version of MapNumber. Otherwise the call history of basic/advanced reporting and net.Desktop will be incorrect.

Example of use

This action is mainly used to organize a specific routing mechanism for outgoing calls (extra cluster routing) and should be used within an outgoing call flow (see application notes for more details).

For example, if you need to route 120 simultaneous calls to a certain destination among 3 different Voice-Over-IP gateways taking care each gateway has the same load, you can use this action by:
  • Creating 3 SIP interfaces to the 3 VoIP gateways.
  • Creating an outgoing call flow which use the CallInterface action with the 3 interfaces. (Choose random hunting mechanism)
  • Create an external route to this outgoing call flow. (See Outgoing call flow application note)

Remark: It is not advised to use a CallInterface action within an incoming call flow because the routing mechanism to route incoming calls to internal extension should be implemented by the intra-cluster routing mechanism in order not to hard-code interfaces involved in the routing.

Integration Notes

Ring tone

By default the ring tone is the ring tone of the network. If you have a ring tone issue it is possible to force the SOP to play the ring tone. This can be done by adding a SetVar action in the callflow with the following parameters:
  • Variable: DialInterfaceOption
  • Value: ${DialInterfaceOption}r

The Dial option 'r' will indeed force this ring tone

NAT and firewall traversal

When a call is coming from a SIP trunk and sent back to this SIP trunk due to a callforward to an external number, often audio issues are encountered. In order to force the NAT or the firewall to open a door, the ring tone can be force via the option 'r' in the DialInterfaceOption.

Shared trunk and IMS trunk

When a trunk is shared by several organizations, the proper caller ID is to be provided in the outgoing number mapping page in order to always set the right caller ID. If a number is to be hidden, this is to be handled in a callflow. The privacy status can be stored in a profile parameter and used in an outgoing callflow in order to call the action CallInterface with the caller ID policy 'Translate - Set CLIR'.

This way of working is also recommended for an IMS trunk.

From version 1.10, if the parameter 'Send Caller Id method' defined in the SIP interface is set to 'Use P-Asserted-Identity', the caller ID and the caller Presentation of the current call will be used in order to create the header. The host defined in the P-Asserted-Identity will be the gateway defined in the SIP interface. If you work in this way, it is recommended to remove the global parameter 'PrivateAssertedIdentityNumber' which won't be used any more.

Phone based call forwarding

Version 1.10.2 removed a legacy feature which is no longer supported. If you were setting a phone based call forward to an external number and you were using an outgoing callflow to the PSTN, you have to modify the outgoing callflow to maintain this legacy behaviour. You have to add a few actions to your callflow:
If($[$["${CHANNEL:0:5}" = "Local"] & $["${LastUserExt}"!=""]])
 |
 | True: SetVar(CALLERID(num)=${LastUserExt})
 |  |
 |  | Redirect (<extension of false>)
 | 
 | False : <Rest of the previous callflow>

Copyright © Escaux SA