How Blueworx Voice Response processes incoming SIP Invites

To determine the Called Party number, the To and Request headers are extracted from the message and processed as follows:

  1. Depending on the setting of the ‘Use Request header’ system parameter, the content of the To or Request header is analyzed to look for a valid numeric ‘User Part’. If found, this becomes the numeric Called Number which is passed using SV185 to the state table environment and on from there to the java, VXML and CCXML programming environments.
  2. If set, the Request header must have a ‘sip’ URI for the number for example, <sip:123456@anyhost.com>.
  3. If set, the To header can be comprised of one ‘sip’ or ‘tel’ URI.
  4. Any numeric user part is processed to remove leading E164 international dialling prefix characters as described in step 1 of the next section.
  5. If the set header (To or Request) does not meet the above criteria, the Called Number (SV185) is set to the configured SIP default calling line id. If this has not been set, then the SV185 will be set to NULL.

To determine the Calling Party, Original Called and Last Redirecting numbers, the following additional headers are extracted from the incoming Invite:

These are processed as follows:

  1. If present, P-Asserted-Identity headers (one or two) are processed looking for a ‘sip’ or ‘tel’ URI with a valid numeric user part (priority is given to ‘sip’ over ‘tel’). Leading E164 characters are removed and the resulting number is passed to the Blueworx Voice Response application in SV186.
  2. If a valid P-Asserted-Identity header has not been found and a Remote-Party-ID header is present, it is examined for a valid numeric user part (with leading E164 digits removed) and is passed to the Blueworx Voice Response application in SV186. If a valid calling number has been found, the privacy parameter is extracted from the message for later use.
  3. If a valid numeric calling number cannot be found in either P-Asserted-Identity or Remote-Party-ID headers, the From header is examined for a valid numeric user part. If one can be found, any E164 leading digits are removed and the resulting number is passed to the Blueworx Voice Response application in SV186.
  4. If no valid Calling Party number can be found in the P-asserted-ID, Remote-Party-ID or From headers (in that order of priority), the Blueworx Voice Response application receives NULL in SV186 as a Calling Number.
  5. If the Override Privacy system parameter is set, the privacy string extracted from either the Privacy header or the privacy parameter of the Remote-Party-ID header is set to NULL.
  6. If one or more Diversion Headers are present, the topmost (first) and bottommost (last) are inspected for ‘sip’ or ‘tel’ URIs with valid numeric user parts. If found, the numeric user part of the topmost Diversion header is passed to Blueworx Voice Response in SV187 (Original Called Number) and the bottommost Diversion header user part is passed in SV188 (Last Redirecting Number).
  7. The following parameters are extracted from the first (or only) Diversion header: reason, counter, limit, privacy, screen, and extension. These are made available to Blueworx Voice Response as tagged string attributes.
  8. The Accept-Language header is extracted, and if present, is passed to the Blueworx Voice Response application using a tagged string.

E164 processing on any number is as follows:

  1. If a number does not begin with a ‘+’, it is assumed to NOT be E164 formatted and no further action is taken.
  2. For E164 numbers, the + is always removed in addition to any further digits as defined in the ‘E164 Strip’ system parameter. If the ‘E164 Strip’ system parameter is set to 1,44, 393, for example, +1, +44, or +393 is removed from the number.

If present in the SIP header and defined in the configuration file /usr/lpp/dirTalk/db/sys_dir/voip/siphdrtags.cfg, the following information is then passed to the Blueworx Voice Response application using VoiceXML and CCXML variables and the SV542 tagged string (SV542 must be saved in another System Variable prior to the AnswerCall action being executed):

The SIP Invite To and From headers are always processed, but the processing of the other SIP headers above is controlled by the configuration file /usr/lpp/dirTalk/db/sys_dir/voip/siphdrtags.cfg. As supplied, the configuration file entries for the SIP Call-ID and Call-Info headers are commented out. To use the information in these headers in state table, VoiceXML, or CCXML applications, you must edit the configuration file manually and remove the # character in front of the header or headers that you want processed.

In addition, the following system variables are set: