Interactive Voice Response SIP UserAgent (ivr)

Description

SIP-calls auto-service service using administrator’s preconfigured IVR-scripts. Also provides call initiation functionality from within the system.

Reserved and scaled in mode Active-Active.

Table 1. System Characteristics

Code

ivr

Mode of operation

Service

Backup mode

Active-Active

Types of sites

Any

Layer

Business logic

Placement

Internal

Saving and restoring state on reboot

No

appendix

era_sip

Limitations

  • Executes only those scripts that belong to the domains served on the current site.

Parameters

Table 2. Parameters
Name Type Default Description

name

str

required

Name. May consist of Latin letters and numbers, must begin with a letter.

roletype

str

required

Role Type. Possible values: "ivr".

iface

str

required

The alias of the server network interface on which the roles will interact internally with each other.

ext

json

empty

Additional role options. Contains a json object or list.

enabled

bool

empty

Role activity flag. When set to false, the role does not participate in validation and is not started.

roleid

int

required

Role ID.
Unique for the entire system, regardless of the site or server. Cannot be changed.
Integer from 1 to 9999.

separate

bool

required

An indication that the role has been allocated to a separate node.

udp

int

required

Local UDP port for SIP. The same port handles both TCP.
For example: 5095.
Used for internal communication with other microservices of the system via protocol SIP.
Raised only on the local interface to which the node is bound.
Should not be used by other microservices executing on the same server.

tcp

int

required

Local TCP port for SIP. If a value other than UDP is specified, it will be raised additionally.
For example: 5095.
Used for internal communication with other microservices of the system via protocol SIP.
Raised only on the local interface to which the node is bound.
Should not be used by other microservices executing on the same server.

log_cdr

bool

true

Switch for logging events to log cdr.

log_media

bool

true

Media function logging switch media.

log_mgct

bool

true

Switch for logging the communication protocol with the MGC controller to the logger mgct.

log_sip

bool

true

Switch for logging dialog state machine trace to logs sip.

log_trn

bool

true

SIP traffic logging switch to log trn.

b2bmedia

bool

true

Switch to apply media gateway role b2b for calls initiated by the current role instance ivr.

usemedia

bool

true

Service Field. Using the Media Gateway by Role ivr.
It is used when organizing load autotesting with initiation of calls by role ivr.

payloads_audio_offer

array<str>

["PCMA/8000", "PCMU/8000","telephone-event/8000"]

List of audio codec names used for call initiation (shoulder call).
As a value, a list containing the names of audio codecs in format "Name/Freq".
The following codecs are supported (case-sensitive):

  • telephone-event/8000,

  • PCMU/8000,

  • PCMA/8000,

  • GSM/8000,

  • G722/8000,

  • G729/8000,

  • CN/8000,

  • speex/8000,

  • speex/16000,

  • speex/32000,

  • G726-16/8000,

  • G726-24/8000,

  • G726-32/8000,

  • G726-40/8000,

  • iLBC/8000,

  • opus/48000/2.

The three basic formats, PCMA/8000, PCMU/8000 and telephone-event/8000 are automatically added to initiated calls at any field value.

payloads_video_offer

array<str>

empty

List of video codec names used to initiate a call (shoulder call).
Not actually applied.

As a value, a list containing the names of video codecs in format "Name/Freq".
The following codecs are supported (case-sensitive):

  • H263/90000,

  • H263-1998/90000,

  • H264/90000,

  • VP8/90000,

  • VP9/90000.

local_mg_lower_priority

bool

true

Switch to downgrade the priority of local MG media gateways located on the same server as the currently active signaling server.
During shutdown, local media gateways participate equally with other media gateways.
Enabled by default - local media gateways are used only if no other media gateways are found capable of serving the new context.
It is used in multi-server systems to preferentially disperse the responsibility for handling a call across different servers.
If a media gateway server serving media traffic goes down, the conversation can be saved only if all servers serving call signaling remain available.

default_ivrscriptcode

str

empty`

Enables the called party emulator mode.
The instance stops blocking incoming INVITE requests from arbitrary addresses, and initiates an IVR script for them with the code specified here.
In oppositional loaded systems, an unregistered account is created (presumably an ISP account), where the domain of the system where the script resides is specified as the domain of the system IVR.
With the help of the specified scenario it is possible to realize statistical processing - for example, part of calls can be repelled at once, part after some time, part can be voiced early-media, part can be serviced.
Note that transfers are directly sent to the initiating system, bypassing the usual route where the opposing side of any arm is a B2B instance of the current same system.

Configuration example

The configuration is managed in an application available to master domain administrators. The application hides the full content of the configuration, but it is nevertheless accessible via the API.

The configuration contains a section to describe all instances of all roles. Parameters are defined for each specific role instance.

Example node
{
  "name": "ivr1",
  "roletype": "ivr",
  "iface": "eth0",

  "roleid": 11270,
  "separate": true,
  "tcp": 5085,
  "udp": 5085,

  "log_cdr": true,
  "log_trn": true,
  "log_sip": true,
  "log_media": true,
  "log_mgct": true,

  "b2bmedia": true,

  "payloads_audio_offer": [
    "PCMU/8000", "CN/8000", "G722/8000"
  ]
}

See also