To determine the Called Party number, the To and Request
headers are extracted from the message and processed as follows:
- 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.
- If set, the Request header must have a ‘sip’ URI for the number
for example, <sip:123456@anyhost.com>.
- If set, the To header can be comprised of one ‘sip’ or ‘tel’ URI.
- Any numeric user part is processed to remove leading E164 international dialling prefix characters as described
in step 1 of the next section.
- 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:
- The From header (FROM_HDR)
- Up to two P-Asserted-Identity headers (PASSID_HDR)
- Remote-Party-ID (RPARTYID_HDR)
- First and last Diversion Headers (DIV_HDR)
- Privacy Header (PRIVACY_HDR)
These are processed as follows:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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:
- If a number does not begin with a ‘+’, it is assumed
to NOT be E164 formatted and no further action is taken.
- 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):
- PROTOCOL — Always set to SIP (for SIP calls)
- TO_HDR — the full contents of the SIP Invite To header
- REQ_HDR — SIP Request header
- FROM_HDR — SIP From header
- DIV_HDR — Topmost (or only) Diversion header
- A_LANG_HDR — Accept Language header
- CALLID_HDR — SIP Call-ID header which contains a
unique call identifier
- CALLINFO_HDR — SIP Call-Info header which provides
additional information about the caller.
- PRIVACY_HDR — value of the SIP Privacy header if a P-Asserted-Identity
header was used for the Calling Party number or the privacy parameter
of the Remote-Party-ID if that header was used for the Calling Party
Number.
- Attributes for the Diversion Header: reason, counter, limit,
privacy, screen and extension
- Up to 10 other (non-standard) valid, unique SIP headers
can be added to the configuration file /usr/lpp/dirTalk/db/sys_dir/voip/siphdrtags.cfg.
These headers are processed in the order in which they are defined
in the file, subject to sufficient space being available in the buffer
for the header data. The total limit for all headers is 512 bytes.
Any subsequent non-standard SIP headers found in siphdrtags.cfg are
ignored. If the same header is specified multiple times within a
single INVITE message, the data from each header is appended to the
first instance, separated by commas.
Headers
definitions cannot be more than 31 characters long, and must not include
any of the following special characters:
"#$&(),./;<=>?@\^`{|}[]
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:
- SV185: Called Party number: extracted from the user part of Request
or To header (selected by system parameter).
- SV186: Calling Party number: extracted from the user part of
P-Asserted-Identity, Remote-Party-ID or From headers (in that order)
- SV187: Original Called Number: extracted from the user part of
the topmost (first) Diversion header (if present)
- SV188: Last Redirecting Number: extracted from the user part
of the bottommost (last) Diversion header (if present)