Sip Message Manipulation Reference Guide Ver 72
Sip Message Manipulation Reference Guide Ver 72
Sip Message Manipulation Reference Guide Ver 72
Version 7.2
Reference Guide Contents
Table of Contents
1 Introduction ......................................................................................................... 9
2 Field Syntax ....................................................................................................... 11
2.1 Message Type Field ............................................................................................... 11
2.1.1 Message Type Examples ........................................................................................11
2.2 Condition Field ....................................................................................................... 12
2.2.1 Condition Field Operands ........................................................................................12
2.2.2 Condition Field Examples ........................................................................................12
2.3 Action Subject Field ............................................................................................... 13
2.3.1 Action Subject Field Examples ................................................................................13
2.4 Action Type Field ................................................................................................... 14
2.5 Action Value Field .................................................................................................. 14
2.5.1 Action Value Field Examples ...................................................................................14
3 Detailed Syntax ................................................................................................. 15
3.1 Strings .................................................................................................................... 15
3.1.1 String Examples.......................................................................................................16
3.2 Headers.................................................................................................................. 17
3.2.1 Detailed Header Syntax ...........................................................................................17
3.2.2 Header Examples ....................................................................................................27
3.3 Body ....................................................................................................................... 29
3.3.1 Body Examples ........................................................................................................29
3.4 Parameters............................................................................................................. 30
3.4.1 Message Parameter Syntax ....................................................................................30
3.4.2 IP Groups Table Parameter Syntax.........................................................................33
3.4.3 Call Parameter Syntax .............................................................................................35
3.4.4 Parameter Examples ...............................................................................................35
3.4.4.1 Example for IP Group Keep-Alive ............................................................37
4 Advanced Manipulation Features .................................................................... 39
4.1 Wildcards for Header Removal .............................................................................. 39
4.2 Random Characters ............................................................................................... 39
4.3 SDP Body Fields .................................................................................................... 40
4.3.1 Source IP Address ...................................................................................................40
4.3.2 RTP Mode ................................................................................................................41
4.3.3 Origin Username......................................................................................................41
4.3.4 Origin IP Address.....................................................................................................41
4.3.5 Port ..........................................................................................................................41
4.3.6 IP Address ...............................................................................................................42
4.3.7 SDP Examples.........................................................................................................42
4.4 Regular Expressions (Regex) ................................................................................ 44
4.4.1 Regex Basic Examples ............................................................................................45
4.4.2 Regex Detailed Examples .......................................................................................46
4.5 Variables for Copying Data between Messages .................................................... 49
4.5.1 Call Variable ............................................................................................................49
4.5.2 Global Variable ........................................................................................................50
4.5.3 Session Variable ......................................................................................................51
4.5.4 Registered User Variable.........................................................................................51
4.6 ISUP Body Manipulation ........................................................................................ 53
4.6.1 Attaching ISUP Body ...............................................................................................59
List of Tables
Table 1-1: Configuration Tables and Relevant Fields ..............................................................................9
Table 2-1: Message Type Examples ......................................................................................................11
Table 2-2: Condition Operands ..............................................................................................................12
Table 2-3: Condition Examples ..............................................................................................................12
Table 2-4: Action Examples....................................................................................................................13
Table 2-5: Action Type Field Options .....................................................................................................14
Table 2-6: Action Examples....................................................................................................................14
Table 3-1: Configuration Tables and Relevant Fields for Strings...........................................................15
Table 3-2: Examples of Using Strings ....................................................................................................16
Table 3-3: Syntax for Manipulating SIP Headers ...................................................................................17
Table 3-4: Header Field Syntax Examples .............................................................................................27
Table 3-5: Header Field Manipulation Rules Examples .........................................................................27
Table 3-6: Message Body Syntax Examples..........................................................................................29
Table 3-7: Message Body Manipulation Rules Examples ......................................................................29
Table 3-8: Message Parameter Syntax ..................................................................................................30
Table 3-9: IP Group Parameter Syntax ..................................................................................................33
Notice
Information contained in this document is believed to be accurate and reliable at the time of
printing. However, due to ongoing product improvements and revisions, AudioCodes cannot
guarantee accuracy of printed material after the Date Published nor can it accept responsibility
for errors or omissions. Updates to this document can be downloaded from
https://www.audiocodes.com/library/technical-documents.
This document is subject to change without notice.
Date Published: April-22-2018
WEEE EU Directive
Pursuant to the WEEE EU Directive, electronic and electrical waste must not be disposed
of with unsorted waste. Please contact your local recycling authority for disposal of this
product.
Customer Support
Customer technical support and services are provided by AudioCodes or by an authorized
AudioCodes Service Partner. For more information on how to buy technical support for
AudioCodes products and for contact information, please visit our Web site at
https://www.audiocodes.com/services-support/maintenance-and-support.
LTRT Description
LTRT Description
Documentation Feedback
AudioCodes continually strives to produce high quality documentation. If you have any
comments (suggestions or errors) regarding this document, please fill out the
Documentation Feedback form on our Web site at at
https://online.audiocodes.com/documentation-feedback.
1 Introduction
This document describes the supported syntax for the configuration tables listed below.
Table 1-1: Configuration Tables and Relevant Fields
Table Fields
2 Field Syntax
2.1 Message Type Field
The 'Message Type' field defines the type of SIP message that you want to apply the
manipulation or condition rule.
Syntax:
<SIP-method/any>.<request/response/any>.<response-type>
where:
<SIP-method/any> specifies the SIP method used with the option to specify requests
of all method types.
<request/response/any> specifies the SIP request or SIP response type with the
option to specify any request or response type.
<response-type> specifies the SIP response type. You can also use the 'x' wildcard
to denote multiple response types:
• To denote all SIP 18x responses (e.g., 180, 181, 182 and 183), use the following
syntax: 18x
• To denote all response types belonging to a specific response group (i.e., 1xx for
provisional, 2xx for successful, 3xx for redirection, 4xx for client failure, 5xx for
server failure, and 6xx for global failure responses), use two 'x' wildcards instead
of the last two digits of the response: <first digit of response
group>xx (e.g., 1xx)
any.response.200 All 200 responses for all method types, where any is a
keyword.
invite Requests and responses of INVITE method.
Syntax:
<subject> <operand> <value>
where:
<subject> specifies the subject of the condition using the following format:
header/body/parameter
<operand> specifies the operand of the condition using the following format:
condition-operand
<value> specifies the value of the condition using the following format:
string/header/body/parameter/random/variable/regex
Condition Description
header.expires.time < '88888' Returns true if expires time is less than '88888'.
Condition Description
3 Detailed Syntax
This section describes the detailed syntax usage of the fields in the Message
Manipulations table. The following syntax is described:
Strings – see Section 3.1 on page 15
Headers – see Section 3.2 on page 17
Body – see Section 3.3 on page 29
Parameters – see Section 3.4 on page 30
3.1 Strings
The string type is a series of characters and the most basic of all syntax types.
Syntax
String enclosed by a single apostrophe:
'string'
To concatenate strings, use the plus "+" operator:
'string' + 'string'
To indicate carriage returns (new lines), use the double-backslash (\\):
'string\\string'
Table Fields
3.2 Headers
This section describes the syntax used for SIP headers in the Message Manipulations
table.
Syntax:
header.<header-name>.<header-index>.<sub-type>
where:
<header-name> specifies the header name as it arrives in the message. For example:
From, To, Contact (not case sensitive).
<header-index> refers to a specific header, in the event where more than one header
of the same type is present in the message (multiple header fields). The index starts at
0, therefore in order to refer to the first header in the list, the header-index value
should be 0. For example, header.contact.2 would refer to the third header in the list.
If <header-index> is not specified; however, a <sub-type> exists, then the sub-type
would reference the first header in the list, i.e. header.contact.url.user is identical to
header.contact.0.url.user.
If both <header-index> and <sub-type> are not specified, then the subject would refer
to all headers of this type. For example, to remove or modify all headers of a specific
type, refer to the header as header.contact.
<sub-type> specifies a specific part of the message. For example, url.user, url.host
etc.
Type header.content-
disposition.type
Handling header.content-
disposition.handling
Content-Length Header itself header.content-length
Content-Type Header itself header.content-type
Type header.content-type.type
Param header.content-type.param
Boundary header.content-type.boundary
Cseq Header itself header.cseq
Number header.cseq.num header.cseq.n
um=='1'
Type header.cseq.type
Date Header itself header.date
Diversion Header itself header.diversion
Name header.diversion.name
Parameter header.diversion.param
Privacy - 1 (full) / header.diversion.privacy header.divers
2 (off) ion.privacy==
'1'
Reason (enum) header.diversion.reason
Screen – yes / no header.diversion.screen
URL (see URL for header.diversion.url
Contact header)
Event Header itself header.event
Event Key header.event.eventkey
ID header.event.eventkey.id
Event package
header.event.eventkey.eventpac
kage
Parameter header.event.param header.event.
param.itsp-
abc
Expires Header itself header.expires
Expiry time header.expires.time
From Header itself header.from
Name header.from.name
Remove header.from.quotecontrol
quotation marks
The 'Action Value' field must be set to '0'.
Namespace header.resource-
priority.namespace
RPriority header.resource-
priority.rpriority
Retry-After Header itself header.retry-after
Time header.retry-after.time
RSEQ Header itself header.rseq
Server or User-Agent Header itself header.user-agent
header.server
Service-Route Header itself header.service-route
Service route list header.service- header.servic
entry route.<entry>.serviceroute eroute.1.serv
iceroute
Session-Expires Header itself header.session-expires
Parameter header.session-expires.param header.sessio
n-
expires.param
.longtimer
Refresher header.session- Note: The Action
expires.refresher Value '1' sets it to
"UAC"; the value '2'
sets it to "UAS" (i.e.,
UA type doing the
refreshing)
Time header.session-expires.time
SIP ETag Header itself header.sip-etag
SIP If-Match Header itself header.sip-if-match
Subject Header itself header.subject
Subject header.subject.subject
Subscription State Header itself header.subscription-state
Supported Header itself header.supported
SIP Capabilities header.supported.capabilities. header.suppor
(see SIP <capability> ted.capabilit
Capabilities for
Proxy-Require
ies.path
header)
tag header.to.tag
URL (see URL for header.to.url header.to.url
Contact header) .userphone
Unknown headers Header itself header.<unknown header name> header.color
BChannel header.x-channel.bchannel
BoardIP header.x-channel.boardip
HeaderType header.x-channel.headertype
X-RTP-Stat Header itself header.x-rtp-stat
Header Description
3.3 Body
This section describes the syntax used for the SIP body in the Message Manipulations
table.
Syntax:
body.<body-name>
where:
<body-name> specified the body name as it arrives in the message. For example,
'application/sdp' (case-insensitive).
Subject Description
The following table provides configuration examples of manipulation rules for the message
body.
Table 3-7: Message Body Manipulation Rules Examples
3.4 Parameters
This section describes the syntax used for the following SIP parameter types in the
Message Manipulations table:
Message Parameters
IP Group Parameters
Call Parameters
Subject Description
Subject Description
The parameter replaces the old
"param.message.address.dst.port"
parameter.
The parameter can only be used for
read-only operations in the message-
syntax based tables.
message.incoming.local-port Specifies the local port for the source of the
message, as a string (port on which the
message is received).
Note: The parameter can only be used for
read-only operations in the message-syntax
based tables.
message.outgoing.local-port Specifies the local port for the destination of
the message, as a string (port from which
the message is sent).
Note:
The parameter can be used for write
operations in the Call Setup Rules table
and read-only operations in the other
message-syntax based tables.
It has a non-zero value for the relevant
message only after being modified by
Call Setup Rules for that message.
param.message.address.src.addre Specifies the IP address as a string for the
ss source of the message.
Note: The parameter can only be used for
read-only operations in the message-syntax
based tables.
param.message.address.dst.addre Specifies the IP address as a string for the
ss destination of the message.
Note: The parameter can only be used for
read-only operations in the message-syntax
based tables.
param.message.address.src.<tran Specifies the transport type as a string for
sporttype> the source of the message, where
<transporttype> can be one of the
following:
UDP
TCP
TLS
Note: The parameter can only be used for
read-only operations in the message-syntax
based tables.
param.message.address.dst.<tra Specifies the transport type as a string for
nsporttype> the destination of the message, where
<transporttype> can be one of the following:
UDP
TCP
TLS
Note: The parameter can only be used for
read-only operations in the message-syntax
based tables.
param.message.address.src.sipin Specifies the SIP Interface ID on which the
terface message is received (source).
Note: The parameter can only be used for
Subject Description
read-only operations ('Action Value' and
'Condition' fields only) in the message-
syntax based tables..
param.message.address.dst.sipin Specifies the SIP Interface ID on which the
terface message is sent (destination).
Note: The parameter can only be used for
read-only operations ('Action Value' and
'Condition' fields only) in the message-
syntax based tables.
Syntax
param.ipg.src|dst|<ID>|<Name>.host|id|is-alive|name|tags|type|
user|user-defined
Where:
src specifies source IP Groups
dst specifies destination IP Groups
<ID> defines a specific IP Group by table row index
<Name> defines a specific IP Group by name
Note:
• Use the 'src' and 'dst' keywords only for Message Condition rules that are
assigned to Classification rules in the Classification table. For all other
configurations, use the <ID> or <Name> keywords.
• When using the syntax, param.ipg.<Name>, the IP Group name is case-sensitive
and cannot contain spaces or dots (.).
Subject Description
Syntax:
rand.string.<n>.a.z
where:
<n> is the number of random letter characters you wish to specify in the range a to z.
The following syntax shows how to specify random letter and/or numeric characters in the
range 0 to z in the Message Manipulations table.
Syntax:
Rand.string.<n>.0.z
where:
<n> is the number of random letter and/or numeric characters you wish to specify in
the range 0 to z.
The following syntax shows how to specify random numbers between n and m in the
Message Manipulations table.
Syntax
Rand.number.<n>.<m>
where:
<n> specifies the start value of the range of the random numbers that you wish to
specify.
<m> specifies the end value of the range of the random numbers that you wish to
specify.
The following table provides configuration examples for using random letters and numeric
characters in the Message Manipulations table.
Table 4-1: Examples using Random Letters and Numeric Characters
Syntax
Specific IP address:
param.message.sdp.ip
For example:
param.message.sdp.ip=='10.33.37.78’
IP address suffix:
param.message.sdp.ip suffix
For example:
param.message.sdp.ip suffix '10.10'
IP address prefix:
param.message.sdp.ip prefix
For example:
param.message.sdp.ip prefix '10.132'
Syntax
param.message.sdp.rtpmode
Possible values include the following:
sendonly
sendrecv
inactive
For example:
param.message.sdp.rtpmode=='sendrecv'
Syntax
param.message.sdp.originusername
Syntax
param.message.sdp.originaddress
Possible values include any IP address.
4.3.5 Port
You can use the first audio active media port number (i.e., port number greater than 0) in
the "m=" field of the SDP body for message manipulation.
Syntax
sdp.port
4.3.6 IP Address
You can use the IP address of the first active media (port greater than 0) for message
manipulation. The IP address is taken from the media "c=" field (the "c=" field below the
"m=" field) of the SDP body. Note that if the "m=" field doesn't contain a "c=" field, the IP
address is taken from the global "c=" field (the "c=" field at the top of the SDP).
Syntax
sdp.address
Action
Message Type Condition Action Subject Action Value Description
Type
invite.reques header.custom- Add param.message.sdp. Copies the port and IP
t rtp-address ip address in the SDP
body to a customized
invite.reques header.custom- Add param.message.sdp.
SIP header (e.g.,
t rtp-port port
Custom-RTP-
Address/Port) in the
outgoing INVITE
message.
reinvite. param.message. param.message. Modify 'sendonly' Changes the RTP mode
request sdp.ip == sdp.rtpmode to sendonly if the SDP
'0.0.0.0' "c=" field's address is
0.0.0.0.
param.message. Modify param.message.sdp. Changes the SDP "c="
sdp.ip originaddress field to the same
address as the "o="
field.
invite param.message. var.call.src.0 Modify '1' Uses the RTP mode as
sdp.rtpmode==' a condition.
sendrecv'
invite. var.call.dst.0 param.message. Modify 'sendonly'
response.200 =='1' sdp.rtpmode
invite param.message. header.diversi Add <sip:12345@p4.isp. Adds a Diversion header
sdp.ip=='10.33 on com>;reason=no- ("Diversion:
.37.78' answer <sip:12345@p4.isp.com
>;reason=no-answer") to
invite param.message. header.diversi Add <sip:12345@p4.isp.
sdp.ip prefix on com>;reason=no- incoming INVITE
'10.33' answer messages if the SDP
contains the IP address
10.33.37.78 or the prefix
of this IP address
(10.33). The IP address
is contained in the "c="
field of the SDP (e.g.,
"c=IN IP4 10.33.37.75").
invite.reques body.sdp Header.SDP- Add param.message.sdp. Adds a customized
t exists Origin- originusername header “SDP-Origin-
Action
Message Type Condition Action Subject Action Value Description
Type
UserName UserName”, where the
username is obtained
from the “o=” field in the
SDP body, if the INVITE
message contains an
SDP body.
invite.reques body.sdp param.message. Modify 'myname' Changes the username
t exists sdp.originuser in the “o=” field in the
name SDP body to "myname",
if the INVITE message
contains an SDP body:
Table Fields
Syntax:
<$n>
where: <$n> is used to reference a resulting sub-expression after executing a regex in a
condition; where n is an integer referencing the sub-expression.
Note:
The regex pattern ".*" for multi-line match is supported.
To concatenate, use the + operator, e.g., $1 + ‘some text’ + $3
Rand function can be used in the 'Replace-With' field (as a sub-value), for example,
$1 + rand.number.1.10.
Double backslash \\ can be used to state a new line (in 'Replace-With' field), for
example, to replace a pattern with multi-line text.
• Explanation: These rules are slightly complex as both the To and From headers
are inspected. This rule executes
♦ If the dialed number is prefixed with a number 6-8 (inclusive)
♦ If the calling party number is prefixed with 2001
If these conditions exist, then:
♦ Remove the first five digits of the dialled string.
♦ Prefix the result with the digit 3.
The first rule matches a dialled number that occurs in the To header (e.g.,
85262146). If a match occurs, it uses a variable to store the remaining three digits
and adds the digit 3 as the prefix. The second rule inspects the From header. If it
contains the string 2001, then the user part of the To header is modified with the
prepared variable. For example, the user (at 20011234) dials 85262146, which
generates the following substring from the first rule:
♦ $1 85262
♦ $2 146
♦ $3 10.132.10.100;user=phone>
Note: This configuration isolates the last three digits in the dialed number and
prefixes them with '3'. The variable now is set to '3146'. The second rule does not use
sub-expressions. It simply searches for 2001 in the From header and if there is a
match the user part of the To header is manipulated using the standard manipulation
syntax.
• Explanation: This rule matches everything up to the a=ptime in the SDP body as
$1, and stores as $3 everything after the 0 in the ptime attribute line. This is used
as the closing \r\n in the SDP body. The modify action then refers to the sub-
expressions $1 and $3, but does not make use of $2, instead replacing it with
a=ptime:10.
♦ (.*) = $5
The 'Value' field means keep $1, $2, and $3 (and remove $4 and $5). The lines in
the SDP represented by each $ is shown below:
Original SDP (color-coded to denote $ values):
v=0
o=mv 1980150132 244692855 IN IP6
2600:1f16:c96:aa00:951f:f946:4ebf:ef8c
s=-
c=IN IP6 2600:1f16:c96:aa00:951f:f946:4ebf:ef8c
t=0 0
a=group:ANAT 1 2
m=audio 11090 RTP/AVP 0 8 101
c=IN IP6 ::
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=mid:1
m=audio 11090 RTP/AVP 0 8 101
c=IN IP4 0.0.0.0
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=mid:2
SDP after Manipulation:
v=0
o=mv 1980150132 244692855 IN IP6
2600:1f16:c96:aa00:951f:f946:4ebf:ef8c
s=-
c=IN IP6 2600:1f16:c96:aa00:951f:f946:4ebf:ef8c
t=0 0
a=group:ANAT 1 2
m=audio 11090 RTP/AVP 0 8 101
c=IN IP6 ::
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=mid:1
Note:
• All variable types described in this section support up to 10 variables per entity.
For each variable type per entity, the 10 variables can together have up to 690
characters.
• Variable names can include alphanumeric and hyphens (-).
• Variable values can be any string.
For example:
1. Store a value in a call variable: Stores the subject URI parameter from the To header:
MessageManipulations 0 = 0, Invite.Request, , var.call.dst.My-
Call, 2, header.to.url.param.subject, 0;
2. Use the stored value: Allocates a Subject header for the 200 OK response for the
same call and assigns it the stored value:
MessageManipulations 0 = 0, Invite.response.200, ,
header.subject, 0, var.call.dst.My-Call, 0;
The following table provides additional configuration examples of using call variables in
Message Manipulation rules.
Table 4-6: Examples of Call Variables
Note:
• The user variable cannot be used in Outbound Manipulation for operations that
are terminated before Classification, Manipulation and Routing (responses for
REGISTER termination, Reply internal action, CMR failure).
• When a registered user expires and the device generates and sends an un-
REGISTER to the proxy, you can configure outbound manipulation for the Server-
type IP Group (i.e., proxy) using the param.ipg.src|dst.<x> syntax. For this stage,
you can also use the var.peer-user variable.
Note: For certain ISUP call actions, see also Section 4.7 on page 62.
ISUP
SIP
Message Parameter Field Syntax
Method
Type
ISUP
SIP
Message Parameter Field Syntax
Method
Type
gits
Generic Number Number qualifier indicator body.isup.iam.gene
(see Q.763.3.26) ric_num.qualifier
Number Plan (see Section body.isup.iam.gene
A.5.4) ric_num.plan
Number Type (see body.isup.iam.gene
Section A.5.5) ric_num.type
Address presentation body.isup.iam.gene
restricted indicator (see ric_num.presentati
Section A.5.15) on
Screening indicator (see body.isup.iam.gene
Section A.5.11) ric_num.screening
Address signal (string of body.isup.iam.gene
up to 50 characters) ric_num.digits
Location Number Number Plan (see Section body.isup.iam.loca
A.5.4) tion_num.plan
Number Type (see body.isup.iam.loca
Section A.5.5) tion_num.type
Address presentation body.isup.iam.loca
restricted indicator (see tion_num.presentat
Section A.5.15) ion
Screening indicator (see body.isup.iam.loca
Section A.5.11) tion_num.screening
Address signal (string of body.isup.iam.loca
up to 50 characters) tion_num.digits
Internal Network Number body.isup.iam.loca
indicator (INN) tion_num.inn
0: routing to internal
number allowed
1: (default) routing to
internal number not
allowed
Redirecting Number Plan (see Section body.isup.iam.redi
number A.5.4) recting_num.plan
Number Type (see body.isup.iam.redi
Section A.5.5) recting_num.type
Address presentation body.isup.iam.redi
restricted (see Section recting_num.presen
A.5.15) tation
Address signal (string of body.isup.iam.redi
up to 50 characters) recting_num.digits
Redirection Redirecting reason (see body.isup.iam.redi
ISUP
SIP
Message Parameter Field Syntax
Method
Type
information Section A.5.7) rect.info.reason
Original Redirect reason - body.isup.iam.redi
values 1, 2, and 3 (see rect_info.orig_rea
Section A.5.23) son
Redirection Counter body.isup.iam.redi
Number of redirections the rect_info.counter
call has undergone
expressed as a number
from 1 to 5.
Redirecting Indicator (see body.isup.iam.redi
Q.763.3.45) rect_info.indicato
r
Forward call National/international call body.isup.iam.fci.
indicator (see indicator InterationalInd
Q.763 3.23)
End-to-end method body.isup.iam.fci.
indicator End2EndMethod
Interworking indicator body.isup.iam.fci.
Interworking
End-to-end information body.isup.iam.fci.
indicator End2EndInformation
ISDN user part indicator body.isup.iam.fci.
IsdnUserPartIndica
tor
ISDN user part preference body.isup.iam.fci.
indicator IsdnUserPartPrefer
ence
ISDN access indicator body.isup.iam.fci.
IsdnAccess
SCCP method indicator body.isup.iam.fci.
SCCP
Transmission body.isup.iam.tmr
medium
requirement (see
Section A.5.16)
Calling party's body.isup.iam.cpc
category (see
Section A.5.19)
Hop Counter (1 to body.isup.iam.hop_
31) counter
Access transport Information transfer rate body.isup.iam.acce
Low layer ss_transport.trans
compatibility fer_rate
information
element (see User information layer 1 body.isup.iam.acce
4.5.19 of protocol ss_transport.
ISUP
SIP
Message Parameter Field Syntax
Method
Type
Recommendation layer1_protocol
Q.931)
User rate body.isup.iam.acce
ss_transport.user_
rate
User service Information transfer body.isup.iam.user
information capability _service.
(see 3.57 of transfer_capabilit
Q.763) y
Information transfer rate body.isup.iam.user
_service.transfer_
rate
User information Layer 1 body.isup.iam.user
protocol (usually used for _service.user_info
analogue modem calls)
_l1
Layer ident (usually used body.isup.iam.user
for analogue modem _service.layer_id
calls)
First 18x ACM Backward call Charge indicator (see body.isup.acm.bci.
indicator Section A.5.17) charge
Called party's status body.isup.acm.bci.
indicator (see Section status
A.5.18)
Called party's category body.isup.acm.bci.
indicator (see Section cpc
A.5.19)
ISUP
SIP
Message Parameter Field Syntax
Method
Type
SCCP
Optional Backward In-band information Body.isup.acm.obci
Call indicators indicator (see Q.763.3.37) .Inband
Call diversion may occur body.isup.acm.obci
indicator (see Q.763.3.37) .diversion
Simple segmentation body.isup.acm.obci
indicator (see Q.763.3.37) .segmentation
MLPP user indicator (see body.isup.acm.obci
Q.763.3.37) .MLPP
Not First CPG Event Information, body.isup.cpg.even
18x can be used only t_info
in condition, (see
Section A.5.20)
Backward Call Charge indicator (see body.isup.cpg.bci.
Indicator (to send it Section A.5.17) charge
cpc, must be set
manually by Called party's status body.isup.cpg.bci.
message indicator (see Section status
manipulation) A.5.18)
Called party's category body.isup.cpg.bci.
indicator (see Section cpc
A.5.19)
End-to-end method body.isup.cpg.bci.
indicator (see Q.763.3.5) End2EndMethod
Interworking indicator (see body.isup.cpg.bci.
Q.763.3.5) Interworking
End-to-end information body.isup.cpg.bci.
indicator (see Q.763.3.5) End2EndInformation
ISDN user part indicator body.isup.cpg.bci.
(see Q.763.3.5) IsdnUserPartIndica
tor
Holding indicator (see body.isup.cpg.bci.
Q.763.3.5) HoldingIndicator
ISDN access indicator body.isup.cpg.bci.
(see Q.763.3.5) IsdnAccess
Echo control device body.isup.cpg.bci.
indicator (see Q.763.3.5) Echo
SCCP method indicator body.isup.cpg.bci.
(see Q.763.3.5) SCCP
Optional Backward In-band information body.isup.cpg.obci
Call Indicators indicator (see Q.763.3.37) .inband
(sent only if at
least one of the Call diversion may occur body.isup.cpg.obci
fields is explicitly indicator (see Q.763.3.37) .diversion
ISUP
SIP
Message Parameter Field Syntax
Method
Type
set by a message Simple segmentation body.isup.cpg.obci
manipulation rule) indicator (see Q.763.3.37) .segmentation
MLPP user indicator (see body.isup.cpg.obci
Q.763.3.37) .mlpp
200 OK on ANM Connected number Number Plan (see Section body.isup.iam.conn
INVITE A.5.4) ected_num.plan
Number Type (see body.isup.iam.conn
Section A.5.5) ected_num.type
Address presentation body.isup.iam.conn
restricted (see Section ected_num.presenta
A.5.15) tion
Address signal (string of body.isup.iam.conn
up to 50 characters) ected_num.digits
200 OK on CON (for Backward call Charge indicator (see body.isup.con.bci.
INVITE Spirou indicator Section A.5.17) charge
variant
only, sent Called party's status body.isup.con.bci.
if SIP 18x indicator (see Section status
wasn’t A.5.18)
sent
before 200 Called party's category body.isup.con.bci.
reply) indicator (see Section cpc
A.5.19)
End-to-end method body.isup.con.bci.
indicator (see Q.763.3.5) end2endmethod
Interworking indicator (see body.isup.con.bci.
Q.763.3.5) interworking
End-to-end information body.isup.con.bci.
indicator (see Q.763.3.5) end2endinformation
ISDN user part indicator body.isup.con.bci.
(see Q.763.3.5) isdnuserpartindica
tor
Holding indicator body.isup.con.bci.
(see Q.763.3.5) holdingindicator
ISDN access indicator body.isup.con.bci.
(see Q.763.3.5) isdnaccess
Echo control device body.isup.con.bci.
indicator (see Q.763.3.5) echo
SCCP method indicator body.isup.con.bci.
(see Q.763.3.5) sccp
INFO FAC Transfer number Number Plan (see Section body.isup.fac.conn
A.5.4) ected_num.plan
Number Type (see body.isup.fac.conn
ISUP
SIP
Message Parameter Field Syntax
Method
Type
Section A.5.5) ected_num.type
Address presentation body.isup.fac.conn
restricted (see Section ected_num.presenta
A.5.15) tion
Address signal (string of body.isup.fac.conn
up to 50 characters) ected_num.digits
BYE, 4xx REL Cause value (see body.isup.rel.caus
Section A.5.21) e
Cause location body.isup.rel.loca
(see Section tion
A.5.22)
2. Assign the Message Condition rule to the Classification rule associated with the
source of the INVITE:
For example:
• To header before normalization:
To: <sip:100;phone-
context=1@10.33.2.17;user=phone;UnknownUrlParam>;UnknownHea
derlParam
• To header after SIP normalization (user parameter, unknown URL parameter,
and unknown header parameter are removed):
To: <sip:100@10.33.2.17;user=phone>
SDP Body: Removes unnecessary SDP fields (except v=, o=, s=, c=, t=, and r=) and
unknown media with all its attributes. For example, the bolded text is removed before
sending the message:
v=0
o=SMG 791285 795617 IN IP4 10.33.2.17
s=Phone-Call
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
e=j.doe@example.com (Jane Doe)
c=IN IP4 10.33.2.26
t=0 0
m=unknown 6000 RTP/AVP 8
a=unknown
a=sendrecv
a=ptime:20
m=audio 6000 RTP/AVP 8
a=rtpmap:8 pcma/8000
a=sendrecv
a=unknown
a=ptime:20
Message: Normalization of the entire message. Headers and bodies not listed below
are removed while those listed are retained and normalized (if necessary and if listed
as supported for normalization, as previously mentioned) :
• Headers:
♦ Request-URI
♦ Via
♦ Max-Forwards
♦ From
♦ To
♦ Call-ID
♦ Cseq
♦ Contact
♦ Record-Route
♦ Route
♦ Supported
♦ Allow
♦ P-Preferred-Identity
♦ Diversion
♦ Rack
♦ Required
♦ RSeq
♦ Authorization
♦ Proxy-Authorization
♦ WWW-Authenticate
♦ Proxy-Authenticate
♦ Event
♦ Refer-To
♦ Referred-By
♦ Replaces
♦ User-Agent
♦ P-Asserted-ID
♦ History-Info
♦ Priority
♦ Resource-Priority
♦ Unsupported
♦ Expires
♦ Session-Expires
♦ Min-SE
♦ Min-Expires
• Bodies:
♦ SDP
♦ DTMF
Configuration Examples:
Table 4-12: Normalization Examples
Message Action
Condition Action Subject Action Type Description
Type Value
Syntax
Source Tag:
srctags
srctags.<tag name>
Destination Tag:
dsttags
dsttags.<tag name>
Applicable Fields
Condition
Action Value
Message Action
Condition Action Subject Action Type Description
Type Value
Syntax
Result (i.e., URI) of the ENUM query:
enum.result.url.<x>
Where x is optional and can be any of the following:
• type
• host
• mhost
• userphone
• looseroute
• bnce
• cause
• user
• transport-type
• ac-int
• param
If ENUM query succeeded or not:
enum.found exists
enum.found !exists
Applicable Tables
Call Setup Rules table
Applicable Fields
Condition
Action Subject (only enum.result.url)
Action Value (only enum.result.url)
Example
Table 4-14: ENUM Query Example
Syntax:
Source SIP URI:
presence.src
Destination SIP URI:
presence.dst
For example, to search for a called mobile number, the searched LDAP Attribute is
"mobile" set to the value of the destination number ('mobile=+' + param.call.dst.user). If the
entry exists, the query searches for the Attribute userPrincipalName where the SIP URI is
defined for the corresponding mobile user. If found, the query returns the Attribute value
(i.e., URI) to the device (instructed using the special 'Condition' string "presence.dst" or
"presence.src").
Table 4-15: Source and Destination SIP URIs for Skype for Business Presence
5 Typical Examples
The following table provides a summary of typical examples of Message Manipulation
rules.
Table 5-1: Message Manipulation Examples
Action Value
Add 0
Remove 1
Modify 2
Add Prefix 3
Add Suffix 4
Remove Suffix 5
Remove Prefix 6
Action
Type
Rule: If the supported header does not contain 'mm,100rel,timer,replaces', then in all INVITE
messages add an Accept header:
MessageManipulations 8 = 1, invite, header.supported !=
'mm,100rel,timer,replaces', header.accept, 0, ' application/x-
private ', 0;
Result: Accept: application/x-private
A.2.2 Accept-Language
An example of the header is shown below:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
The header properties are shown in the table below:
A.2.3 Allow
An example of the header is shown below:
Allow:
REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRACK,REFER,INFO,SUB
SCRIBE
The header properties are shown in the table below:
A.2.4 Call-Id
An example of the header is shown below:
Call-ID: JNIYXOLCAIWTRHWOINNR@10.132.10.128
The header properties are shown in the table below:
Operations Supported No No No NA
A.2.5 Contact
An example of the header is shown below:
Contact: <sip:555@10.132.10.128:5080>
Multiple header fields support: Yes
The header properties are shown in the table below:
Operations Supported No No No 3
Rule: Change the user part in the Contact header in all INVITE messages to fred:
MessageManipulations 0 = 1, Invite, ,header.contact.url.user, 2,
'fred', 0;
Result: Contact: <sip:fred@10.132.10.128:5070>
A.2.6 Cseq
An example of the header is shown below:
CSeq: 1 INVITE
The header properties are shown in the table below:
A.2.7 Diversion
An example of the header is shown below:
Diversion: <sip:654@IPG2Host;user=phone>;reason=user-
busy;screen=no;privacy=off;counter=1
The header properties are shown in the table below:
A.2.8 Event
An example of the header is shown below:
Event: foo; id=1234
The header properties are shown in the table below:
A.2.9 From
An example of the header is shown below:
From: <sip:555@10.132.10.128;user=phone>;tag=YQLQHCAAYBWKKRVIMWEQ
The header properties are shown in the table below:
Example 2 Rule: Add a new parameter to the From header called p1 and set its value to
myParameter:
MessageManipulations 1 = 1, Invite.request,
,header.from.param.p1, 0, 'myParameter', 0;
Result: From:
<sip:fred@IPG2Host;user=phone>;p1=myParameter;tag=1c5891
Example 3 Rule: Modify the URL in the From header:
MessageManipulations 0 = 1, any, , header.from.url, 2,
'sip:3200@110.18.5.41;tusunami=0', 0;
Result: From:
<sip:3200@110.18.5.41;user=phone;tusunami=0>;tag=1c23750
A.2.10 History-Info
An example of the header is shown below:
History-Info: <sip:UserA@ims.example.com;index=1>
History-Info: <sip:UserA@audc.example.com;index=2>
The header properties are shown in the table below:
Example 2 Rule: Modify a Min-Expires header with the min-expires value and add an
additional 0:
MessageManipulations 0 = 1, Invite, , header.Min-
Expires.param, 2, header.Min-Expires.time + '0', 0;
Result: Min-Expires: 340;3400
A.2.12 P-Asserted-Identity
An example of the header is shown below:
P-Asserted-Identity: Jane Doe <sip:567@itsp.com>
The header properties are shown in the table below:
Example 2 Rule: Modify the P-Asserted-Identity host name to be the same as the host name in
the To header:
MessageManipulations 2 = 1, invite, , header.p-
asserted-identity.URL.host, 2, header.to.url.host, 0;
Result: P-Asserted-Identity: <sip:567@10.132.10.128>
A.2.13 P-Associated-Uri
An example of the header is shown below:
P-Associated-URI: <sip:12345678@itsp.com>
The header properties are shown in the table below:
Example 2 Rule: Modify the user portion of the URL in the header to 'alice':
MessageManipulations 5 = 1, register.response,
,header.P-Associated-URI.url.user, 2, 'alice', 0;
Result: P-Associated-URI:<sip:alice@10.132.10.108>
A.2.14 P-Called-Party-Id
An example of the header is shown below:
P-Called-Party-ID: <sip:2000@gw.itsp.com>
The header properties are shown in the table below:
A.2.15 P-Charging-Vector
An example of the header is shown below:
P-Charging-Vector: icid-value=1234bc9876e; icid-generated-
at=192.0.6.8; orig-ioi=home1.net
The header properties are shown in the table below:
A.2.16 P-Preferred-Identity
An example of the header is shown below:
P-Preferred-Identity: "Cullen Jennings" <sip:fluffy@abc.com>
The header properties are shown in the table below:
A.2.17 Privacy
An example of the header is shown below:
Privacy: none
The header properties are shown in the table below:
A.2.18 Proxy-Require
An example of the header is shown below:
Proxy-Require: sec-agree
The header properties are shown in the table below:
Example 3 Rule: Set the privacy options tag in the Proxy-Require header:
MessageManipulations 0 = 0, invite, , header.Proxy-
Require.capabilities.privacy, 0, 1 , 0;
Result: Proxy-Require: itsp.com, privacy
A.2.19 Reason
An example of the header is shown below:
Reason: SIP ;cause=200 ;text="Call completed elsewhere"
The header properties are shown in the table below:
Note: The protocol (SIP or Q.850) is controlled by setting the cause number to be greater
than 0. If the cause is 0, then the text string (see Example 3) is generated from the reason
number.
A.2.20 Referred-By
An example of the header is shown below:
Referred-By: <sip:referrer@referrer.example>;
The header properties are shown in the table below:
A.2.21 Refer-To
An example of the header is shown below:
Refer-To: sip:conference1@example.com
Refer-To:
<sips:a8342043f@atlanta.example.com?Replaces=12345601%40atlanta.ex
ample.com%3bfrom-tag%3d314159%3bto-tag%3d1234567>
The header properties are shown in the table below:
A.2.22 Remote-Party-Id
An example of the header is shown below:
Remote-Party-ID: "John Smith"
<sip:john.smith@itsp.com>;party=calling; privacy=full;screen=yes
The header properties are shown in the table below:
Example 2 Rule: Create a Remote-Party-Id header using the url in the From header using
the + operator to concatenate strings:
MessageManipulations 0 = 1, Invite, ,header.REMOTE-
PARTY-ID, 0, '<'+header.from.url +'>' +
';party=calling', 0;
Result: Remote-Party-ID:
<sip:555@10.132.10.128;user=phone>;party=calling;npi=
0;ton=0
Example 3 Rule: Modify the number plan to 1 (ISDN):
MessageManipulations 1 = 1, invite, , header.Remote-
Party-ID.numberplan, 2, '1', 0;
Result: Remote-Party-ID:
<sip:555@10.132.10.128;user=phone>;party=calling;npi=
1;ton=0
Example 4 Rule: Modify the Remote-Party-Id header to set the privacy parameter to 1 (Full):
MessageManipulations 1 = 1, invite, , header.Remote-
Party-ID.privacy, 2, '1', 0;
Result: Remote-Party-ID:
<sip:555@10.132.10.128;user=phone>;party=calling;priv
acy=full;npi=0;ton=0
A.2.23 Request-Uri
An example of the header is shown below:
sip:alice:secretword@atlanta.com;transport=tcp
SIP/2.0 486 Busy Here
The header properties are shown in the table below:
A.2.24 Require
An example of the header is shown below:
Require: 100rel
The header properties are shown in the table below:
MessageManipulations 0 = 0, invite, ,
header.require.capabilities.earlymedia, 0, 1 , 0;
Result: Require: em,replaces,early-session, early-media
Example 4 Rule: Set the privacy options tag in the Require header:
MessageManipulations 0 = 0, invite, ,
header.require.capabilities.privacy, 0, 1 , 0;
Result: Require: em,replaces,early-session, privacy
A.2.25 Resource-Priority
An example of the header is shown below:
Resource-Priority: wps.3
The header properties are shown in the table below:
A.2.26 Retry-After
An example of the header is shown below:
Retry-After: 18000
The header properties are shown in the table below:
A.2.28 Service-Route
An example of the header is shown below:
Service-Route: <sip:P2.HOME.EXAMPLE.COM;lr>,
<sip:HSP.HOME.EXAMPLE.COM;lr>
The header properties are shown in the table below:
route.1.serviceroute, 2, '<sip:itsp.com;lr>', 0;
Result: Service-Route:sip:itsp.com;lr
Service-Route: <sip:HSP.HOME.EXAMPLE.COM;lr>
Example 3 Rule: Modify the Service-Route header in list entry 0:
MessageManipulations 4 = 1, Invite, ,header.service-
route.0.serviceroute, 2, '<sip:home.itsp.com;lr>', 0;
Result: Service-Route:sip:home.itsp.com;lr
Service-Route: <sip:itsp.com;lr>
A.2.29 Session-Expires
An example of the header is shown below:
Session-Expires: 480
The header properties are shown in the table below:
A.2.30 Subject
An example of the header is shown below:
Subject: A tornado is heading our way!
The header properties are shown in the table below:
A.2.31 Supported
An example of the header is shown below:
Supported: early-session
The header properties are shown in the table below:
A.2.32 To
An example of the header is shown below:
To: <sip:101@10.132.10.128;user=phone>
The header properties are shown in the table below:
Operations Supported No No No NA
A.2.33 Unsupported
An example of the header is shown below:
Unsupported: 100rel
The header properties are shown in the table below:
Example 3 Rule: Set the path in the Unsupported headers options tag:
MessageManipulations 0 = 0, invite, ,
header.unsupported.capabilities.path, 0, true, 0;
Result: Unsupported: replaces, path
A.2.34 Via
An example of the header is shown below:
Via: SIP/2.0/UDP 10.132.10.128;branch=z9hG4bKUGOKMQPAVFKTAVYDQPTB
The header properties are shown in the table below:
Operations Supported No No No 10
A.2.35 Warning
An example of the header is shown below:
Warning: 307 isi.edu "Session parameter 'foo' not understood"
Warning: 301 isi.edu "Incompatible network address type 'E.164'"
The header properties are shown in the table below:
Example 2 Rule: Create a new header called "media", whose value is a concatenation of the
time in the Session-Expires header, followed by "000", followed by
";refresher=", followed by "1" or "2", depending on whether the refresher
parameter in the Session-Expires header has the value 'UAC' or 'UAS':
MessageManipulations 0 = 1, any, , header.media, 0,
header.Session-Expires.time + '000' + ';refresher=' +
header.Session-Expires.Refresher, 0;
Result: media: 3600000;refresher=1
A.3.2 Host
The host structure is applicable to the URL structure (see 'URL' on page 99) and the Via
header (see 'Via' on page 94).
Table A-3: Host Structure
Port Short
Name String
A.3.3 MLPP
This structure is applicable to the Reason header (see 'Reason' on page 84).
Table A-4: MLPP Structure
Type Enum MLPP Reason (see 'MLPP Reason Type' on page 102)
Cause Int
NONE Boolean
HEADER Boolean
SESSION Boolean
USER Boolean
CRITICAL Boolean
IDENTITY Boolean
HISTORY Boolean
A.3.6 SIPCapabilities
This structure is applicable to the following headers:
Supported (see 'Supported' on page 92)
Require (see 'Require' on page 88)
Proxy-Require (see 'Proxy-Require' on page 83)
Unsupported (see 'Unsupported' on page 94)
Table A-7: SIPCapabilities Structure
EarlyMedia Boolean
ReliableResponse Boolean
Timer Boolean
EarlySession Boolean
Privacy Boolean
Replaces Boolean
History Boolean
Unknown Boolean
GRUU Boolean
ResourcePriority Boolean
TargetDialog Boolean
SdpAnat Boolean
A.3.7 URL
This structure is applicable to the following headers:
Contact (see 'Contact' on page 75)
Diversion (see 'Diversion' on page 76)
From (see 'From' on page 78)
P-Asserted-Identity (see 'P-Asserted-Identity' on page 80)
P-Associated-Uri (see 'P-Associated-Uri' on page 80)
P-Called-Party-Id (see 'P-Called-Party-Id' on page 81)
P-Preferred-Identity (see 'P-Preferred-Identity' on page 82)
Referred-By (see 'Referred-By' on page 85)
Refer-To (see 'Refer-To' on page 85)
Remote-Party-Id (see 'Remote-Party-Id' on page 86)
Request-Uri (see 'Request-Uri' on page 87)
To (see 'To' on page 93)
Table A-8: URL Structure
AgentRole Value
Client 1
Server 2
Package Value
TELEPHONY 1
REFER 2
REFRESH 3
LINE_STATUS 4
MESSAGE_SUMMARY 5
RTCPXR 6
SOFT_SYNC 7
CHECK_SYNC 8
PSTN 9
DIALOG_PACKAGE 10
REGISTRATION 11
START_CWT 12
STOP_CWT 13
UA_PROFILE 14
LINE_SEIZE 15
Type Value
PreEmption Reason 0
MLPP Reason 1
Plan Value
ISDN 1
Data 3
Telex 4
National 8
Private 9
Reserved 15
A.5.6 Privacy
These ENUMs are applicable to the Remote-Party-Id (see 'Remote-Party-Id' on page 86)
and Diversion (see 'Diversion' on page 76) headers.
Table A-14: Enum Privacy
Full 1
Off 2
Reason Value
Busy 1
No Answer 2
Unconditional 3
Deflection 4
Unavailable 5
No Reason 6
Out of service 7
Reason Value
INVITE 5
REINVITE 6
BYE 7
OPTIONS 8
ACK 9
CANCEL 10
REGISTER 11
INFO 12
MESSAGE 13
NOTIFY 14
Reason Value
REFER 15
SUBSCRIBE 16
PRACK 17
UPDATE 18
PUBLISH 19
LAST_REQUEST 20
TRYING_100 100
RINGING_180 180
CALL_FORWARD_181 181
QUEUED_182 182
SESSION_PROGRESS_183 183
OK_200 200
ACCEPTED_202 202
MULTIPLE_CHOICE_300 300
MOVED_PERMANENTLY_301 301
MOVED_TEMPORARILY_302 302
SEE_OTHER_303 303
USE_PROXY_305 305
ALTERNATIVE_SERVICE_380 380
BAD_REQUEST_400 400
UNAUTHORIZED_401 401
PAYMENT_REQUIRED_402 402
FORBIDDEN_403 403
NOT_FOUND_404 404
METHOD_NOT_ALLOWED_405 405
NOT_ACCEPTABLE_406 406
AUTHENTICATION_REQUIRED_407 407
REQUEST_TIMEOUT_408 408
CONFLICT_409 409
GONE_410 410
LENGTH_REQUIRED_411 411
CONDITIONAL_REQUEST_FAILED_412 412
REQUEST_TOO_LARGE_413 413
REQUEST_URI_TOO_LONG_414 414
UNSUPPORTED_MEDIA_415 415
UNSUPPORTED_URI_SCHEME_416 416
UNKNOWN_RESOURCE_PRIORITY_417 417
Reason Value
BAD_EXTENSION_420 420
EXTENSION_REQUIRED_421 421
SESSION_INTERVAL_TOO_SMALL_422 422
SESSION_INTERVAL_TOO_SMALL_423 423
ANONYMITY_DISALLOWED_433 433
UNAVAILABLE_480 480
TRANSACTION_NOT_EXIST_481 481
LOOP_DETECTED_482 482
TOO_MANY_HOPS_483 483
ADDRESS_INCOMPLETE_484 484
AMBIGUOUS_485 485
BUSY_486 486
REQUEST_TERMINATED_487
NOT_ACCEPTABLE_HERE_488 488
BAD_EVENT_489 489
REQUEST_PENDING_491 491
UNDECIPHERABLE_493 493
SECURITY_AGREEMENT_NEEDED_494 494
SERVER_INTERNAL_ERROR_500 500
NOT_IMPLEMENTED_501 501
BAD_GATEWAY_502 502
SERVICE_UNAVAILABLE_503 503
SERVER_TIME_OUT_504 504
VERSION_NOT_SUPPORTED_505 505
MESSAGE_TOO_LARGE_513 513
PRECONDITION_FAILURE_580 580
BUSY_EVERYWHERE_600 600
DECLINE_603 603
DOES_NOT_EXIST_ANYWHERE_604 604
NOT_ACCEPTABLE_606 606
Reason Value
Busy 1
Immediate 2
No Answer 3
A.5.10 Refresher
These ENUMs are used in the Session-Expires header (see 'Session-Expires' on page 91).
Table A-18: Enum Refresher
UAC 1
UAS 2
A.5.11 Screen
These ENUMs are applicable to the Remote-Party-Id (see 'Remote-Party-Id' on page 86)
and Diversion (see 'Diversion' on page 76) headers.
Table A-19: Enum Screen
Screen Value
Yes 1
No 2
A.5.12 ScreenInd
These ENUMs are applicable to the Remote-Party-Id header (see 'Remote-Party-Id' on
page 86).
Table A-20: Enum ScreenInd
Screen Value
User Provided 0
User Passed 1
User Failed 2
Network Provided 3
A.5.13 TransportType
These ENUMs are applicable to the URL Structure (see 'URL' on page 99) and the Via
header (see 'Via' on page 94).
Table A-21: Enum TransportType
TransportType Value
UDP 0
TCP 1
TLS 2
SCTP 3
A.5.14 Type
These ENUMs are applicable to the URL Structure (see 'URL' on page 99).
Table A-22: Enum Type
Type Value
SIP 1
Tel 2
Fax 3
SIPS 4
Presentation Value
Allowed 0
Restricted 1
Speech 0
64 kbits/s unrestricted 2
No indication 0
No charge 1
Charge 2
No indication 0
Subscriber free 1
Ordinary subscriber 0
Test call 40
Priority 41
Payphone 70
No indication 71
No INFORMATION 0
ALERTING 1
PROGRESS 2
In-band information 3
Cause Value
Unallocated number 1
No route to specified transit network 2
No route to destination 3
Send special information tone 4
Misdialled trunk prefix 5
Channel unacceptable 6
Call awarded and being delivered in an established 7
channel
Preemption 8
Preemption – circuit reserved for reuse 9
Normal call clearing 16
User busy 17
No user responding 18
No answer from user (user alerted) 19
Subscriber absent 20
Call rejected 21
Number changed 22
Redirection to new destination 23
Exchange routing error 25
Non-selected user clearing 26
Destination out of order 27
Invalid number format (address incomplete) 28
Facility rejected 29
Response to STATUS ENQUIRY 30
Normal, unspecified 31
No circuit/channel available 34
Network out of order 38
Permanent frame mode connection out of service 39
Cause Value
Cause Value
implemented
Invalid information element contents 100
Message not compatible with call state 101
Recovery on timer expiry 102
Parameter non-existent or not implemented, passed on 103
Message with unrecognized parameter, discarded 110
Protocol error, unspecified 111
Interworking, unspecified 127
Location Value
user (U) 0
Busy 1
No reply 2
Deflection 4
Deflection Immediate 5
Mobile subscriber not reachable 6
Unconditional 15
!contains String Returns true if the header does not contain the
string.
exists Returns true if the header exists.
!exists Returns true if the header does not exist.
Action Modify String Replaces the entire header with the new value.
*Header
Remove Removes the header from the message, if the
header is part of a list only that header will be
removed.
Parameter Match == String Returns true if the header’s list equals to the
-List Parameter- string.
list
!= String Returns true if the header’s list not equals to
Parameter- the string.
list
contains String Returns true if the header’s list contains the
string.
String Match == String Returns true if the string element equals to the
value.
!= String Returns true if the string element not equals to
the value.
contains String Returns true if the value is found in the string
element.
!contains String Returns true if the value is not found in the
string element.
> String Performs a character by character compare.
Returns true if the ASCII value of the character
is greater than that in the value
>= String Performs a character by character compare.
Returns true if the ASCII value of the character
is greater than or equal to that in the value
< String Performs a character by character compare.
Returns true if the ASCII value of the character
is less than that in the value
<= String Performs a character by character compare.
Returns true if the ASCII value of the character
is less than or equal to that in the value
Action Modify String Sets the string element to the value.
Add prefix String Adds the value to the beginning of the string
element.
Remove String Removes the value from the beginning of the
prefix string element.
Add suffix String Adds the value to the end of the string element.
Remove String Removes the value from the end of the string
suffix element.
A.7 Syntax
This section describes the fields of the message manipulation tables:
A.7.2 Condition
Description: Matching criteria for the rule
Syntax: (Action Subject / param) SWS match-type [SWS Action Value] * [ SWS logical-
expression SWS Condition ]
Examples:
header.from.user == '100'
header.contact.header-param.expires > '3600'
header.to.host contains 'itsp'
param.call.dst.user != '100'
header.john exists
header.john exists AND header.to.host !contains 'john'
header.from.user == '100' OR header.from.user == '102' OR header.from.user ==
'300'
match-type
• Description: Comparison to be made
• Syntax:
♦ == equals
♦ != not equals
♦ > greater than
♦ < less than
♦ >= greater than or equal to
♦ <= less than or equal to
♦ contains does a string contain a value (relevant only to string fields)
♦ exists does a certain header exists
♦ !exists does a certain header not exists
♦ !contains does a string exclude a value. Relevant only to string fields
logical-expression:
• Description: Condition for the logical expression
• Syntax:
♦ AND logical And
♦ OR logical Or
Note: "A AND B OR C" is calculated as A AND (B OR C).
AudioCodes Inc.
27 World’s Fair Drive,
Somerset, NJ 08873
Tel: +1-732-469-0880
Fax: +1-732-469-2298
©2018 AudioCodes Ltd. All rights reserved. AudioCodes, AC, HD VoIP, HD VoIP Sounds Better, IPmedia, Mediant,
MediaPack, What’s Inside Matters, OSN, SmartTAP, User Management Pack, VMAS, VoIPerfect, VoIPerfectHD, Your
Gateway To VoIP, 3GX, VocaNom, AudioCodes One Voice and CloudBond are trademarks or registered trademarks of
AudioCodes Limited. All other products or trademarks are property of their respective owners. Product specifications
are subject to change without notice.
Document #: LTRT-29040