This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
cookbooks:devel:pseudovariables [2015/03/10 12:19] miconda [$rd - Domain in R-URI] |
cookbooks:devel:pseudovariables [2020/01/22 15:43] miconda |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Kamailio SIP Server | + | {{ : |
+ | ====== Kamailio SIP Server | ||
===== Introduction ===== | ===== Introduction ===== | ||
Line 9: | Line 10: | ||
There is a set of predefined pseudo-variables, | There is a set of predefined pseudo-variables, | ||
- | Pseudo-Variables are implemented by various modules, most of them are provided by **pv**. | + | Pseudo-Variables are implemented by various modules, most of them are provided by **pv** |
===== Pseudo-variables usage ===== | ===== Pseudo-variables usage ===== | ||
Line 19: | Line 20: | ||
* avpops | * avpops | ||
* htable | * htable | ||
+ | * http_async_client | ||
* textops | * textops | ||
* uac | * uac | ||
Line 75: | Line 77: | ||
**$aU** - whole username from Authorization or Proxy-Authorization header | **$aU** - whole username from Authorization or Proxy-Authorization header | ||
- | ==== $Au - Acc username ==== | + | ==== $Au - Acc username |
- | **$Au** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns $au if exits or From username | + | **$Au** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns |
+ | ==== $AU - Acc username ==== | ||
+ | **$AU** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns the auth username ($au) if exists or From user ($fU) otherwise. | ||
==== $branch(name) - Branch attributes ==== | ==== $branch(name) - Branch attributes ==== | ||
Line 169: | Line 173: | ||
**$conid** - The TCP connection ID of the connection the current message arrived on for TCP, TLS, WS, and WSS. Set to $null for SCTP and UDP. | **$conid** - The TCP connection ID of the connection the current message arrived on for TCP, TLS, WS, and WSS. Set to $null for SCTP and UDP. | ||
- | ==== $cs - CSeq ==== | + | ==== $cs - CSeq Number |
- | **$cs** - reference to the sequence number in the cseq header. The method in the CSeq header is identical to the request method, thus use $rm to get the method (works also for responses). | + | **$cs** - reference to the sequence number in the CSeq header. The method in the CSeq header is identical to the request method, thus use $rm to get the method (works also for responses). |
+ | ==== $csb - CSeq Header Body ==== | ||
+ | |||
+ | **$csb** - reference to the CSeq header body (number method). | ||
==== $ct - Contact header ==== | ==== $ct - Contact header ==== | ||
Line 221: | Line 228: | ||
If loose_route() returns TRUE a destination uri is set according to the first Route header. | If loose_route() returns TRUE a destination uri is set according to the first Route header. | ||
- | $du is also set if lookup() function of ' | + | $du is also set if lookup() function of ' |
- | set $du to any SIP URI. | + | if you use the path functionality. The function handle_ruri_alias() from the nathelper |
+ | module will also set it. You can set $du to any SIP URI. | ||
| | ||
| | ||
Line 230: | Line 238: | ||
To reset $du: | To reset $du: | ||
- | $du = null; | + | $du = $null; |
==== $fd - From URI domain ==== | ==== $fd - From URI domain ==== | ||
Line 274: | Line 282: | ||
**$mb** - reference to SIP message buffer | **$mb** - reference to SIP message buffer | ||
+ | |||
+ | ==== $mbu - updated SIP message buffer ==== | ||
+ | |||
+ | **$mbu** - reference to updated SIP message buffer, after applying changes | ||
==== $mf - Flags ==== | ==== $mf - Flags ==== | ||
Line 332: | Line 344: | ||
**$pp** - reference to process id (pid) | **$pp** - reference to process id (pid) | ||
- | ==== $pr - Protocol of received message ==== | + | ==== $pr or $proto |
+ | |||
+ | **$pr** or **$proto** - protocol of received message (udp, tcp, tls, sctp, ws, wss) | ||
+ | |||
+ | ==== $prid - protocol id ==== | ||
- | **$pr** or **$proto** - protocol | + | **$prid** - internal |
+ | * 0 - NONE | ||
+ | * 1 - UDP | ||
+ | * 2 - TCP | ||
+ | * 3 - TLS | ||
+ | * 4 - SCTP | ||
+ | * 5 - WS | ||
+ | * 6 - WSS | ||
+ | * 7 - OTHER | ||
==== $pU - User in P-Preferred-Identity header URI ==== | ==== $pU - User in P-Preferred-Identity header URI ==== | ||
Line 356: | Line 380: | ||
**$retcode** - same as **$rc** | **$retcode** - same as **$rc** | ||
+ | ==== $rd - Domain in R-URI ==== | ||
+ | |||
+ | **$rd** - reference to domain in request' | ||
+ | |||
+ | <fc # | ||
+ | |||
+ | ==== $rdir(key) - Request Direction ==== | ||
+ | |||
+ | **$rdir(key)** - get the direction of the request within dialog. | ||
+ | |||
+ | The direction is ' | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * id - the returned value is an integer: 1 - for direction downstream, 2 - for direction upstream | ||
+ | * name - the returned value is a string: ' | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if($rdir(name)==" | ||
+ | xlog(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | The variable is exported by **rr** module and append_fromtag parameter must be enabled. The variable has to be used after loose_route() function. | ||
==== $re - Remote-Party-ID header URI ==== | ==== $re - Remote-Party-ID header URI ==== | ||
Line 406: | Line 456: | ||
<fc # | <fc # | ||
+ | ==== $rv - SIP message version ==== | ||
+ | |||
+ | **$rv** - reference to SIP message (reply or request) version | ||
==== $ruid - Record internal Unique ID ==== | ==== $ruid - Record internal Unique ID ==== | ||
Line 413: | Line 466: | ||
**$rz** - returns R-URI scheme, possible values: sip, sips, tel, tels and urn, R-URI scheme parsing error should be reflected by value: none | **$rz** - returns R-URI scheme, possible values: sip, sips, tel, tels and urn, R-URI scheme parsing error should be reflected by value: none | ||
+ | |||
+ | ==== $RAi - Received advertised IP address ==== | ||
+ | |||
+ | **$RAi** - reference to advertised IP address of the interface where the request has been received, or $Ri if no advertised address. | ||
+ | |||
+ | ==== $RAp - Received advertised port ==== | ||
+ | |||
+ | **$RAp** - reference to advertised port where the request has been received, or $Rp if no advertised port. | ||
==== $Ri - Received IP address ==== | ==== $Ri - Received IP address ==== | ||
**$Ri** - reference to IP address of the interface where the request has been received | **$Ri** - reference to IP address of the interface where the request has been received | ||
- | |||
==== $Rp - Received port ==== | ==== $Rp - Received port ==== | ||
**$Rp** - reference to the port where the message was received | **$Rp** - reference to the port where the message was received | ||
+ | |||
+ | ==== $RAu - Advertised socket URI ==== | ||
+ | |||
+ | **$RAu** - local socket where the SIP messages was received in URI format, without transport parameter for UDP, using advertised address when available. | ||
+ | |||
+ | ==== $RAut - Advertised socket URI ==== | ||
+ | |||
+ | **$RAut** - local socket where the SIP messages was received in URI format, always with transport parameter, using advertised address when available. | ||
+ | |||
+ | ==== $Ru - Received socket URI ==== | ||
+ | |||
+ | **$Ru** - local socket where the SIP messages was received in URI format, without transport parameter for UDP. | ||
+ | |||
+ | ==== $Rut - Received socket URI ==== | ||
+ | |||
+ | **$Rut** - local socket where the SIP messages was received in URI format, always with transport parameter. | ||
+ | |||
+ | ==== $sas - Source address in socket format ==== | ||
+ | |||
+ | **$sas** - get source address in socket format (proto: | ||
+ | ==== $sbranch(attr) - Static Branch ==== | ||
+ | |||
+ | **$sbranch(attr)** - class of variables allowing to manage the values of attributes for static branch. The static branch is internal structure that is used by the functions sbranch_push_ruri() and sbranch_append() from **pv** module, enabling more flexibility in updating the R-URI (first) branch attributes as well as extra branches (e.g., for parallel forking). | ||
+ | |||
+ | The **attr** can be any of the supported values for **$branch(attr)** class of variables -- see above for proper details. | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | sbranch_reset(); | ||
+ | $sbranch(uri) = " | ||
+ | $sbranch(dst_uri) = " | ||
+ | $sbranch(path) = " | ||
+ | $sbranch(send_socket) = " | ||
+ | sbranch_set_ruri(); | ||
+ | </ | ||
==== $sf - Script flags ==== | ==== $sf - Script flags ==== | ||
Line 432: | Line 528: | ||
==== $si - Source IP address ==== | ==== $si - Source IP address ==== | ||
- | **$si** - reference to IP source address of the message | + | **$si** - reference to IP source address of the message |
+ | |||
+ | ==== $sid - Server ID ==== | ||
+ | |||
+ | **$sid** - the value for server id (server_id parameter) | ||
+ | ==== $siz - Source IP address ==== | ||
+ | |||
+ | **$siz** - reference to IP source address of the message, with enclosing square brackets for IPv6 | ||
==== $sp - Source port ==== | ==== $sp - Source port ==== | ||
Line 458: | Line 561: | ||
==== $sut - Source address as full URI ==== | ==== $sut - Source address as full URI ==== | ||
- | **$su** - returns the representation of source address (ip, port, proto) as full SIP URI. The proto UDP is added also as transport parameter. | + | **$sut** - returns the representation of source address (ip, port, proto) as full SIP URI. The proto UDP is added also as transport parameter. |
Its value looks like: | Its value looks like: | ||
Line 523: | Line 626: | ||
**$ua** - reference to user agent header field | **$ua** - reference to user agent header field | ||
+ | |||
+ | ==== $version() - version ==== | ||
+ | |||
+ | **$version(num)** - version as number | ||
+ | |||
+ | **$version(full)** - full version string "name version architecture/ | ||
+ | |||
+ | **$version(hash)** - TBA | ||
+ | |||
+ | ===== $env(NAME) - environment variables ===== | ||
+ | |||
+ | **$env(NAME)** - value of the environment variable named NAME | ||
===== $avp(id) - AVPs ===== | ===== $avp(id) - AVPs ===== | ||
Line 570: | Line 685: | ||
It is R/W variable (you can assign values to it directly in configuration file). | It is R/W variable (you can assign values to it directly in configuration file). | ||
+ | |||
+ | ===== $expires(key) - Expires Values ===== | ||
+ | |||
+ | Return the min and max of expires value for current SIP message. Contact headers are checked with higher priority, if no expires parameter there, then Expires header is used | ||
+ | |||
+ | If none is found, $null is returned. | ||
+ | |||
+ | Possible ' | ||
+ | |||
+ | * $expires(min) - the minimum value for expires | ||
+ | * $expires(max) - the maximum value for expires | ||
+ | |||
+ | When there is only one expires value, then min and max return the same. | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($expires(max)!=$null) { | ||
+ | xlog(" | ||
+ | } | ||
+ | </ | ||
===== $xavp(id) - XAVPs ===== | ===== $xavp(id) - XAVPs ===== | ||
- | xavp - extended AVP's - are structures that can store multiple values. They work like a stack, much like AVPs, and are attached to SIP transactions. Each xavp has a name and can contain multiple named values, the structure name and the value name are separated by '=>' | + | xavp - extended AVP's - are structures that can store multiple values. They work like a stack, much like AVPs, and are attached to SIP transactions. Each xavp has a name and can contain multiple named values, the structure name and the value name are separated by < |
<code c> | <code c> | ||
$xavp(root=> | $xavp(root=> | ||
Line 626: | Line 762: | ||
**$(hdr(name)[N])** - represents the body of the N-th header identified by ' | **$(hdr(name)[N])** - represents the body of the N-th header identified by ' | ||
- | If [N] is omitted then the body of the first header is printed. The first header is got when N=0, for the second N=1, a.s.o. In case of a comma-separated multi-body headers, it returns all the bodies, comma-separated. To print the last header of that type, use -1, or other negative values to count from the end. No white spaces are allowed inside the specifier (before }, before or after {, [, ] symbols). When N=' | + | If [N] is omitted then the body of the first header is printed. The body of first header is returned |
+ | |||
+ | If name is *, then any header name is matched, e.g., $hdr(*) is body of first header, $(hdr(*)[-1]) is body of last header. | ||
The module should identify compact header names. It is recommended to use dedicated specifiers for headers (e.g., $ua for user agent header), if they are available -- they are faster. | The module should identify compact header names. It is recommended to use dedicated specifiers for headers (e.g., $ua for user agent header), if they are available -- they are faster. | ||
Line 639: | Line 777: | ||
<fc # | <fc # | ||
+ | |||
+ | ===== $hdrc(name) - Number of Headers ===== | ||
+ | |||
+ | **$hdrc(name)** - get the number of headers with the respective name | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($hdrc(Via) == 2) { | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
===== $var(name) - Private memory variables (zero) ===== | ===== $var(name) - Private memory variables (zero) ===== | ||
Line 691: | Line 841: | ||
===== $shv(name) - Shared memory variables ===== | ===== $shv(name) - Shared memory variables ===== | ||
- | **$shv(name)** | + | **$shv(name)** |
Example - shv(name) pseudo-variable usage: | Example - shv(name) pseudo-variable usage: | ||
Line 707: | Line 857: | ||
<fc # | <fc # | ||
+ | ===== $dsv(key) - Dispatcher variables ===== | ||
+ | |||
+ | Return attributes related to dispatcher module. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * code - the SIP response code that caused the execution of event_route ' | ||
+ | * reason - the SIP response reason that caused the execution of event_route ' | ||
+ | * flags - flags set internally when executing event_route ' | ||
===== $time(name) - Broken-down time ===== | ===== $time(name) - Broken-down time ===== | ||
- | **$time(name)** - the PV provides access to broken-down time attributes. | + | **$time(name)** - the PV provides access to broken-down time attributes |
The ' | The ' | ||
Line 732: | Line 891: | ||
</ | </ | ||
+ | ===== $utime(name) - Broken-down time ===== | ||
+ | **$utime(name)** - the PV provides access to broken-down time attributes in UTC. | ||
+ | |||
+ | See **$time(name)** above for the possible attributes | ||
===== $timef(format) - Strftime Formatted Time ===== | ===== $timef(format) - Strftime Formatted Time ===== | ||
Line 741: | Line 904: | ||
<code c> | <code c> | ||
xlog(" | xlog(" | ||
+ | </ | ||
+ | |||
+ | ===== $utimef(format) - Strftime Formatted UTC Time ===== | ||
+ | |||
+ | **$utimef(format)** - return current time in UTC as formatted by strftime ' | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | xlog(" | ||
</ | </ | ||
Line 759: | Line 932: | ||
} | } | ||
</ | </ | ||
- | ===== Send Address | + | ===== Received Data Attributes ===== |
+ | |||
+ | ==== $rcv(key) ==== | ||
+ | |||
+ | Attributes of received data. The variables must be used inside **event_route[core: | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * buf - received message | ||
+ | * len - lenght of received message | ||
+ | * srcip - source ip | ||
+ | * rcvip - local ip where it was received | ||
+ | * scrport - source port | ||
+ | * rcvport - local port where it was received | ||
+ | * proto - protocol as int id | ||
+ | * sproto - protocol as string | ||
+ | * af - address family | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | event_route[core: | ||
+ | xlog(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Send Data Attributes ===== | ||
==== $sndfrom(name) ==== | ==== $sndfrom(name) ==== | ||
Line 778: | Line 977: | ||
* af - address family to be used to send (numeric) | * af - address family to be used to send (numeric) | ||
* port - port of destination address | * port - port of destination address | ||
- | * proto - transport protocol to be used to send (numeric) | + | * proto - transport protocol to be used to send (numeric |
+ | * sproto - transport protocol to be used to send (string) | ||
* buf - entire send buffer as string | * buf - entire send buffer as string | ||
* len - length of outgoing packet (length of above buf) | * len - length of outgoing packet (length of above buf) | ||
Line 794: | Line 994: | ||
</ | </ | ||
- | ===== Benchmark module Pseudo-Variables | + | ===== SIPDUMP Module ===== |
+ | |||
+ | ==== $sipdump(name) ==== | ||
+ | |||
+ | **$sipdump(name)** | ||
+ | |||
+ | The name can be: | ||
+ | |||
+ | * tag - the tag of processing (rcv or snd) | ||
+ | * buf - entire message buffer as string | ||
+ | * len - length of the message (length of above buf) | ||
+ | * af - address family | ||
+ | * src_ip - source IP address | ||
+ | * dst_ip - destination IP address | ||
+ | * src_port - port of source address | ||
+ | * dst_port - port of source address | ||
+ | * proto - transport protocol | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | |||
+ | event_route[sipdump: | ||
+ | if($sipdump(len) > 1024) { | ||
+ | ... | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Benchmark Module | ||
==== $BM_time_diff ==== | ==== $BM_time_diff ==== | ||
$BM_time_diff - the time difference elapsed between calls of bm_start_timer(name) and bm_log_timer(name). The value is 0 if no bm_log_timer() was called. | $BM_time_diff - the time difference elapsed between calls of bm_start_timer(name) and bm_log_timer(name). The value is 0 if no bm_log_timer() was called. | ||
- | ===== Dialog | + | ===== Dialog |
==== $dlg(attr) ==== | ==== $dlg(attr) ==== | ||
Line 835: | Line 1065: | ||
Return the attribute of the context for current processed dialog. | Return the attribute of the context for current processed dialog. | ||
- | <fc #0000ff>It is R/W variable.</ | + | <fc #0000ff>Some of the attributes are R/W variables.</ |
The ' | The ' | ||
- | * set | + | * set - returns 1 if the dialog for current context is set, 0 otherwise |
- | * flags | + | * flags - get/set dialog |
- | * timeout_route | + | * timeout_route |
- | * timeout_bye | + | * timeout_route_id - get internal id for the route to be executed on timeout |
+ | * timeout_bye | ||
+ | * timeout - set the dialog lifetime (in seconds) | ||
+ | * on - get/set an integer value associated with the context (cfg usage) | ||
+ | * dir - get direction of the request for the dialog of the current context (0 - unknown, 1 - downstream, 2 - upstream) | ||
==== $dlg_var(key) ==== | ==== $dlg_var(key) ==== | ||
Line 851: | Line 1085: | ||
The ' | The ' | ||
- | ===== HTable module Pseudo-Variables | + | ===== Erlang Module ===== |
+ | |||
+ | ==== Attributes === | ||
+ | |||
+ | * type - get variable type. Possible types are: atom, integer, list, string, tuple, pid and ref. | ||
+ | |||
+ | * length - get length of list or tuple. | ||
+ | |||
+ | * format - prints a term, in clear text. It tries to resemble the term printing in the Erlang shell. | ||
+ | |||
+ | ==== $erl_atom(name) ==== | ||
+ | |||
+ | // | ||
+ | Erlang atom is a literal, a constant with name. Formatted output pseudo variable | ||
+ | atom could be enclosed in single quotes (') if it does not begin with a | ||
+ | lower-case letter or if it contains other characters than alphanumeric characters, | ||
+ | underscore (_), or @. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | $erl_atom(A) = " | ||
+ | |||
+ | xlogl(" | ||
+ | </ | ||
+ | |||
+ | ==== $erl_list(name) ==== | ||
+ | Compound data type with a variable number of terms. Formally, a list is either | ||
+ | the empty list [] or consists of one or more elements. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | $erl_atom(E) = " | ||
+ | $erl_list(L) = " | ||
+ | $erl_list(L) = " | ||
+ | $erl_list(L) = $erl_atom(E); | ||
+ | |||
+ | xlogl(" | ||
+ | |||
+ | # empty list | ||
+ | $erl_tuple(E[*]) = $null; | ||
+ | </ | ||
+ | |||
+ | ==== $erl_tuple(name) ==== | ||
+ | From the Erlang point of view the tuple compound data type with a fixed number | ||
+ | of terms. The module implementation of tuple has the same behavior as the list. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | $erl_atom(e) = " | ||
+ | |||
+ | $erl_tuple(T) = " | ||
+ | $erl_tuple(T) = $erl_atom(e); | ||
+ | |||
+ | xlogl(" | ||
+ | </ | ||
+ | |||
+ | ==== $erl_pid(name) ==== | ||
+ | Holds Eralng process identifier. Provides access to Erlang PID value and could | ||
+ | be used in send message. | ||
+ | |||
+ | ==== $erl_ref(name) ==== | ||
+ | Holds Erlang reference. Provides access to reference value and could be used in | ||
+ | send message. | ||
+ | |||
+ | ==== $erl_xbuff(name) ==== | ||
+ | Generic pseudo variable to acts as other pseudo variables exported from Erlang | ||
+ | module. | ||
+ | |||
+ | ===== HTable Module | ||
==== $sht(htable=> | ==== $sht(htable=> | ||
Line 857: | Line 1162: | ||
Access hash table entries. | Access hash table entries. | ||
- | <fc # | + | <fc # |
The “htname” must be a hash table name defined via “htable” parameter. | The “htname” must be a hash table name defined via “htable” parameter. | ||
Line 969: | Line 1274: | ||
... | ... | ||
</ | </ | ||
- | ===== Memcached | + | |
+ | ==== $shtitkey(iname) ==== | ||
+ | |||
+ | The key at the current position in the iterator. | ||
+ | |||
+ | ==== $shtitval(iname) ==== | ||
+ | |||
+ | The value at the current position in the iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | sht_iterator_start(" | ||
+ | while(sht_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | sht_iterator_end(" | ||
+ | </ | ||
+ | |||
+ | ==== $shtrecord(id) ==== | ||
+ | |||
+ | Get the key or the value of expired item inside the event_route[htable: | ||
+ | |||
+ | The id can be: | ||
+ | |||
+ | * key | ||
+ | * value | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | event_route[htable: | ||
+ | xlog(" | ||
+ | } | ||
+ | </ | ||
+ | ===== Memcached | ||
==== $mct(key) ==== | ==== $mct(key) ==== | ||
Line 1045: | Line 1385: | ||
... | ... | ||
</ | </ | ||
+ | |||
+ | ===== http_async_client Module ===== | ||
+ | |||
+ | ==== $http_req_id ==== | ||
+ | |||
+ | The $http_req_id read-only variable can be used in REQUEST_ROUTE to retrive the unique identifier for a query after sending it or in the HTTP callback route to retrive the id of the query the reply belongs to. Useful mainly in non-transactional context. | ||
+ | |||
+ | ==== $http_req(key) ==== | ||
+ | |||
+ | The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query. | ||
+ | |||
+ | **key** can be one of: | ||
+ | * all: if set to $null, resets all the parameters to their default value (the ones defined in modparam) | ||
+ | * hdr: sets/ | ||
+ | * body: sets/ | ||
+ | * method: sets the HTTP method: either " | ||
+ | * timeout: sets the HTTP timeout. (Note, this timeout should be normally less than tm.fr_timer timeout, because transaction timeout has a higher priority over HTTP timeout) | ||
+ | * tls_client_cert: | ||
+ | * tls_client_key: | ||
+ | * tls_ca_path: | ||
+ | * authmethod: Sets the preferred authentication mode for HTTP/HTTPS requests. The value is a bitmap and multiple methods can be used. Note that in this case, the CURL library will make an extra request to discover server-supported authentication methods. You may want to use a specific value. Valid values are: | ||
+ | * 1 - BASIC authentication | ||
+ | * 2 - HTTP Digest authentication | ||
+ | * 4 - GSS-Negotiate authentication | ||
+ | * 8 - NTLM authentication | ||
+ | * 16 - HTTP Digest with IE flavour. | ||
+ | * (Default value is 3 - BASIC and Digest authentication.) | ||
+ | * username: sets the username to use for authenticated requests | ||
+ | * password: sets the password to use for authenticated requests | ||
+ | * suspend: if set to 0 it doesn' | ||
+ | * tcp_keepalive: | ||
+ | * tcp_ka_idle: | ||
+ | * tcp_ka_interval: | ||
+ | |||
+ | ==== Other read-only variables ==== | ||
+ | |||
+ | The following read-only pseudo variables can only be used in the callback routes executed by http_async_query() | ||
+ | |||
+ | === $http_ok === | ||
+ | 1 if cURL executed the request successfully, | ||
+ | |||
+ | === $http_err === | ||
+ | cURL error string if an error occurred, $null otherwise. | ||
+ | |||
+ | === $http_rs === | ||
+ | HTTP status. | ||
+ | |||
+ | === $http_rr === | ||
+ | HTTP reason phrase. | ||
+ | |||
+ | === $http_hdr(Name) === | ||
+ | Value of the Name header (the $(http_hdr(Name)[N]) syntax can also be used, check the SIP $hdr() PV documentation for details). | ||
+ | |||
+ | === $http_mb and $http_ml === | ||
+ | HTTP response buffer (including headers) and length. | ||
+ | |||
+ | === $http_rb and $http_bs === | ||
+ | HTTP response body and body length, | ||
===== XMLOPS Pseudo-Variables ===== | ===== XMLOPS Pseudo-Variables ===== | ||
Line 1063: | Line 1461: | ||
</ | </ | ||
- | ===== TMX module Pseudo-Variables | + | ===== TMX Module |
==== $T_branch_idx ==== | ==== $T_branch_idx ==== | ||
Line 1129: | Line 1527: | ||
The **name** can be: | The **name** can be: | ||
- | * id_index - return the internal index of current transaction | + | * id_index - return the internal index of current transaction |
- | * id_label - return the internal label of current transaction | + | * id_label - return the internal label of current transaction |
- | * reply_code - alias to $T_reply_code | + | * id_index_n - return the internal index of current transaction, |
- | * branch_index - alias to $T_branch_idx | + | * id_label_n - return the internal label of current transaction, |
+ | * reply_code - reply code (alias to $T_reply_code) | ||
+ | * reply_reason - reply reason | ||
+ | * reply_last - last received reply code | ||
+ | * branch_index - branch index (alias to $T_branch_idx) | ||
+ | * ruid - return the internal location ruid field for current branch | ||
* reply_type - 1 if it is a local generated reply, 0 - if no reply for transaction or it is a received reply | * reply_type - 1 if it is a local generated reply, 0 - if no reply for transaction or it is a received reply | ||
Line 1147: | Line 1550: | ||
- | ===== UAC module Pseudo-Variables | + | ===== UAC Module |
==== $uac_req(key) ==== | ==== $uac_req(key) ==== | ||
Line 1153: | Line 1556: | ||
* used to build the input for uac_send_req() function of UAC module | * used to build the input for uac_send_req() function of UAC module | ||
- | key can be: | + | The key can be: |
* method - SIP method | * method - SIP method | ||
* ruri - request URI | * ruri - request URI | ||
Line 1164: | Line 1567: | ||
* apasswd - authentication password | * apasswd - authentication password | ||
* sock - local socket to be used for sending (proto: | * sock - local socket to be used for sending (proto: | ||
+ | * callid - SIP-Call-ID of the generated request (by default, a call-id is generated) | ||
* all - alias useful to reset all fields - $uac_req(all) = $null; | * all - alias useful to reset all fields - $uac_req(all) = $null; | ||
+ | * evroute - it has to be set to 1 in order to execute event_route[uac: | ||
+ | * evcode - reply code for the request sent with uac_req_send(), | ||
+ | * evtype - is 1 if the reply was received via network, 2 if the reply was locally generated (e.g., retransmission timeout), available inside event_route[uac: | ||
+ | * evparam - generic data buffer associated with the request that can be set before sending it and retrieved when executing the event route. It has a size of 128 characters. | ||
<code c> | <code c> | ||
Line 1171: | Line 1579: | ||
$uac_req(furi)=" | $uac_req(furi)=" | ||
$uac_req(turi)=" | $uac_req(turi)=" | ||
+ | $uac_req(evroute) = 1; | ||
uac_req_send(); | uac_req_send(); | ||
+ | ... | ||
+ | event_route[uac: | ||
+ | xlog(" | ||
+ | } | ||
</ | </ | ||
- | ===== Nathelper | + | ===== Nathelper |
==== $rr_count ==== | ==== $rr_count ==== | ||
Line 1183: | Line 1596: | ||
* If topmost Record Route in received SIP request or reply is a double Record Route, value of $rr_top_count is 2. If it a single Record Route, value of $rr_top_count is 1. If there is no Record Route(s), value of $rr_top_count is 0. | * If topmost Record Route in received SIP request or reply is a double Record Route, value of $rr_top_count is 2. If it a single Record Route, value of $rr_top_count is 1. If there is no Record Route(s), value of $rr_top_count is 0. | ||
- | ===== MQueue | + | ===== MQueue |
==== $mqk(q) ==== | ==== $mqk(q) ==== | ||
Line 1209: | Line 1622: | ||
==== $TV(name) ==== | ==== $TV(name) ==== | ||
- | Seconds and microseconds taken from struct timeval. | + | Seconds and microseconds taken from struct timeval. The time at that moment is represented by **seconds.microseconds**. |
* $TV(s) - seconds (cached at first call per sip message) | * $TV(s) - seconds (cached at first call per sip message) | ||
* $TV(u) - microseconds (cached at first call per sip message) | * $TV(u) - microseconds (cached at first call per sip message) | ||
- | * $TV(sn) - seconds (not cached) | + | * $TV(sn) - seconds (not cached, taken at that moment) |
- | * $TV(un) - microseconds (not cached) | + | * $TV(un) - microseconds (corresponding to the moment $TV(sn) is retrieved) |
- | * $TV(Sn) - string representation seconds.microseconds (not cached) | + | * $TV(Sn) - string representation seconds.microseconds (not cached, taken at that moment) |
===== Next hop address ===== | ===== Next hop address ===== | ||
Line 1229: | Line 1641: | ||
* $nh(P) - transport protocol (upper case p) | * $nh(P) - transport protocol (upper case p) | ||
- | ===== GeoIP module Pseudo-Variables | + | ===== NDB_REDIS Module ===== |
+ | |||
+ | ==== $redis(res=> | ||
+ | |||
+ | Access the attributes of the Redis response. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * type - type of the reply (as in hiredis.h) | ||
+ | * value - the value returned by REDIS server; | ||
+ | * info - in case of error from REDIS, it will contain an info message. | ||
+ | |||
+ | If reply type is an array (as in hiredis.h), there are other keys available: | ||
+ | |||
+ | * size - returns number of elements in the array. | ||
+ | |||
+ | * type[n] - returns the type of the nth element in the array. type - returns array type. | ||
+ | |||
+ | * value[n] - returns value of the nth element. value - returns null for an array. You need to get each element by index. | ||
+ | |||
+ | In case one of the members of the array is also an array (for example calling SMEMBERS in a MULTI/EXEC transaction), | ||
+ | |||
+ | Example: | ||
+ | |||
+ | < | ||
+ | redis_cmd(" | ||
+ | xlog(" | ||
+ | </ | ||
+ | |||
+ | ==== $redisd(key) ==== | ||
+ | |||
+ | Return the corresponding value for various defines from hiredis library. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * rpl_str - return REDIS_REPLY_STRING | ||
+ | * rpl_arr - return REDIS_REPLY_ARRAY | ||
+ | * rpl_int - return REDIS_REPLY_INTEGER | ||
+ | * rpl_nil - return REDIS_REPLY_NIL | ||
+ | * rpl_sts - return REDIS_REPLY_STATUS | ||
+ | * rpl_err - return REDIS_REPLY_ERROR | ||
+ | |||
+ | $redisd(rpl_XYZ) can be compared with $redis(r=> | ||
+ | |||
+ | Example: | ||
+ | |||
+ | < | ||
+ | redis_cmd(" | ||
+ | if ($redis(r=> | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== GeoIP Module | ||
==== $gip(pvc=> | ==== $gip(pvc=> | ||
Line 1250: | Line 1714: | ||
* regn - region name | * regn - region name | ||
* metro - metro code | * metro - metro code | ||
+ | * contc - continent code | ||
You can call several time **geoip_match(ipaddr, | You can call several time **geoip_match(ipaddr, | ||
Line 1264: | Line 1729: | ||
</ | </ | ||
- | ===== TLS module Pseudo-Variables | + | ===== TLS Module |
==== $tls_version ==== | ==== $tls_version ==== | ||
+ | The TLS/SSL version which is used on the TLS connection from which the message was received. String type. | ||
==== $tls_description ==== | ==== $tls_description ==== | ||
+ | The TLS/SSL description of the TLS connection from which the message was received. String type. | ||
==== $tls_cipher_info ==== | ==== $tls_cipher_info ==== | ||
+ | The TLS/SSL cipher which is used on the TLS connection from which the message was received. String type. | ||
==== $tls_cipher_bits ==== | ==== $tls_cipher_bits ==== | ||
+ | The number of cipher bits which are used on the TLS connection from which the message was received. String and Integer type. | ||
==== $tls_peer_version ==== | ==== $tls_peer_version ==== | ||
+ | The version of the certificate. String type. | ||
==== $tls_my_version ==== | ==== $tls_my_version ==== | ||
+ | The version of the certificate. String type. | ||
==== $tls_peer_serial ==== | ==== $tls_peer_serial ==== | ||
+ | The serial number of the certificate. String and Integer type. | ||
==== $tls_my_serial ==== | ==== $tls_my_serial ==== | ||
+ | The serial number of the certificate. String and Integer type. | ||
==== $tls_peer_subject ==== | ==== $tls_peer_subject ==== | ||
+ | ASCII dump of the fields in the subject section of the certificate. String type. Example: | ||
+ | / | ||
==== $tls_peer_issuer ==== | ==== $tls_peer_issuer ==== | ||
+ | ASCII dump of the fields in the issuer section of the certificate. String type. | ||
==== $tls_my_subject ==== | ==== $tls_my_subject ==== | ||
+ | ASCII dump of the fields in the subject section of the certificate. String type. | ||
==== $tls_my_issuer ==== | ==== $tls_my_issuer ==== | ||
+ | ASCII dump of the fields in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_cn ==== | ==== $tls_peer_subject_cn ==== | ||
+ | commonName in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_cn ==== | ==== $tls_peer_issuer_cn ==== | ||
+ | commonName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_cn ==== | ==== $tls_my_subject_cn ==== | ||
+ | commonName in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_cn ==== | ==== $tls_my_issuer_cn ==== | ||
+ | commonName in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_locality ==== | ==== $tls_peer_subject_locality ==== | ||
+ | localityName in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_locality ==== | ==== $tls_peer_issuer_locality ==== | ||
+ | localityName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_locality ==== | ==== $tls_my_subject_locality ==== | ||
+ | localityName in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_locality ==== | ==== $tls_my_issuer_locality ==== | ||
+ | localityName in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_country ==== | ==== $tls_peer_subject_country ==== | ||
+ | countryName in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_country ==== | ==== $tls_peer_issuer_country ==== | ||
+ | countryName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_country ==== | ==== $tls_my_subject_country ==== | ||
+ | countryName in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_country ==== | ==== $tls_my_issuer_country ==== | ||
+ | countryName in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_state ==== | ==== $tls_peer_subject_state ==== | ||
+ | stateOrProvinceName in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_state ==== | ==== $tls_peer_issuer_state ==== | ||
+ | stateOrProvinceName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_state ==== | ==== $tls_my_subject_state ==== | ||
+ | stateOrProvinceName in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_state ==== | ==== $tls_my_issuer_state ==== | ||
+ | stateOrProvinceName in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_organization ==== | ==== $tls_peer_subject_organization ==== | ||
+ | organizationName in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_organization ==== | ==== $tls_peer_issuer_organization ==== | ||
+ | organizationName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_organization ==== | ==== $tls_my_subject_organization ==== | ||
+ | organizationName in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_organization ==== | ==== $tls_my_issuer_organization ==== | ||
+ | organizationName in the issuer section of the certificate. String type. | ||
==== $tls_peer_subject_unit ==== | ==== $tls_peer_subject_unit ==== | ||
+ | organizationalUnitName in the subject section of the certificate. String type. | ||
+ | ==== $tls_peer_subject_uid ==== | ||
+ | UID in the subject section of the certificate. String type. | ||
==== $tls_peer_issuer_unit ==== | ==== $tls_peer_issuer_unit ==== | ||
+ | organizationalUnitName in the issuer section of the certificate. String type. | ||
==== $tls_my_subject_unit ==== | ==== $tls_my_subject_unit ==== | ||
+ | organizationalUnitName in the subject section of the certificate. String type. | ||
+ | ==== $tls_my_subject_uid ==== | ||
+ | UID in the subject section of the certificate. String type. | ||
==== $tls_my_issuer_unit ==== | ==== $tls_my_issuer_unit ==== | ||
+ | organizationalUnitName in the issuer section of the certificate. String type. | ||
==== $tls_peer_san_email ==== | ==== $tls_peer_san_email ==== | ||
+ | email address in the " | ||
==== $tls_my_san_email ==== | ==== $tls_my_san_email ==== | ||
+ | email address in the " | ||
==== $tls_peer_san_hostname ==== | ==== $tls_peer_san_hostname ==== | ||
+ | hostname (DNS) in the " | ||
==== $tls_my_san_hostname ==== | ==== $tls_my_san_hostname ==== | ||
+ | hostname (DNS) in the " | ||
==== $tls_peer_san_uri ==== | ==== $tls_peer_san_uri ==== | ||
+ | URI in the " | ||
==== $tls_my_san_uri ==== | ==== $tls_my_san_uri ==== | ||
+ | URI in the " | ||
==== $tls_peer_san_ip ==== | ==== $tls_peer_san_ip ==== | ||
+ | ip address in the " | ||
==== $tls_my_san_ip ==== | ==== $tls_my_san_ip ==== | ||
+ | ip address in the " | ||
+ | |||
+ | ==== $tls_peer_verified ==== | ||
+ | Returns 1 if the peer's certificate was successfully verified. Otherwise it returns 0. String and Integer type. | ||
+ | |||
+ | ==== $tls_peer_revoked ==== | ||
+ | Returns 1 if the peer's certificate was revoked. Otherwise it returns 0. String and Integer type. | ||
+ | |||
+ | ==== $tls_peer_expired ==== | ||
+ | Returns 1 if the peer's certificate is expired. Otherwise it returns 0. String and Integer type. | ||
+ | |||
+ | ==== $tls_peer_selfsigned ==== | ||
+ | Returns 1 if the peer's certificate is selfsigned. Otherwise it returns 0. String and Integer type. | ||
+ | |||
+ | ==== $tls_peer_notBefore ==== | ||
+ | Returns the notBefore validity date of the peer's certificate. String type. | ||
+ | |||
+ | ==== $tls_peer_notAfter ==== | ||
+ | Returns the notAfter validity date of the peer's certificate. String type. | ||
+ | |||
+ | ==== $tls_peer_server_name ==== | ||
+ | The SNI server name of the peer | ||
+ | ===== SIP Message Attributes ===== | ||
+ | |||
+ | ==== $msg(attr) ==== | ||
+ | |||
+ | Return attributes of SIP message: | ||
+ | |||
+ | * $msg(len) - sip message length | ||
+ | * $msg(buf) - sip message buffer | ||
+ | * $msg(body) - sip message body | ||
+ | * $msg(body_len) - sip message body length | ||
+ | * $msg(hdrs) - sip message headers | ||
+ | * $msg(fline) - sip message first line | ||
- | ===== XHTTP module Pseudo-Variables | + | ===== XHTTP Module |
==== $hu ==== | ==== $hu ==== | ||
Line 1317: | Line 1864: | ||
* URL of http request. | * URL of http request. | ||
- | ===== MSRP Module | + | ===== MSRP Module ===== |
This class of pseudo-variables is exported by MSRP module and give access to attributes of MSRP frames. | This class of pseudo-variables is exported by MSRP module and give access to attributes of MSRP frames. | ||
Line 1386: | Line 1933: | ||
The internal integer id for TCP/TLS connection. | The internal integer id for TCP/TLS connection. | ||
- | ===== SIPT module Pseudo-Variables | + | ===== SIPT Module |
==== $sipt(calling_party_number.presentation) / $sipt_presentation ==== | ==== $sipt(calling_party_number.presentation) / $sipt_presentation ==== | ||
Returns the value of the Address presentation restricted indicator contained in the Calling Party Number header of the IAM message if it exists. Returns -1 if there isn't a Calling Party Number header. | Returns the value of the Address presentation restricted indicator contained in the Calling Party Number header of the IAM message if it exists. Returns -1 if there isn't a Calling Party Number header. | ||
+ | |||
+ | The following values can be returned: | ||
+ | * 0 presentation allowed | ||
+ | * 1 resentation restricted | ||
+ | * 2 address not avail (national use) | ||
+ | * 3 spare | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if($sipt(calling_party_number.presentation) == 1) | ||
+ | { | ||
+ | append_hf(" | ||
+ | $fn = " | ||
+ | } | ||
+ | </ | ||
+ | |||
==== $sipt(calling_party_number.screening) / $sipt_screening ==== | ==== $sipt(calling_party_number.screening) / $sipt_screening ==== | ||
Returns the value of the Screening Indicator contained in the Calling Party Number header of the IAM message if it exists. Returns -1 if there isn't a Calling Party Number header. | Returns the value of the Screening Indicator contained in the Calling Party Number header of the IAM message if it exists. Returns -1 if there isn't a Calling Party Number header. | ||
+ | |||
+ | Can return the following values: | ||
+ | * 0 Reserved (user provided, not verified) | ||
+ | * 1 User Provided, Verified and Passed | ||
+ | * 2 Reserved (user provided, verified and failed) | ||
+ | * 3 Network provided | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # remove P-Asserted-Identity header if the screening isn't verified | ||
+ | # or network provided | ||
+ | $avp(s: | ||
+ | if($avp(s: | ||
+ | { | ||
+ | remove_hf(" | ||
+ | } | ||
+ | </ | ||
+ | |||
==== $sipt(hop_counter) / $sipt_hop_counter ==== | ==== $sipt(hop_counter) / $sipt_hop_counter ==== | ||
Returns the value of the Hop Counter for the IAM message if it exists. Returns -1 if there isn't a hop counter. | Returns the value of the Hop Counter for the IAM message if it exists. Returns -1 if there isn't a hop counter. | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # get the hop counter and update the Max-Forwards header if it exists | ||
+ | $avp(s:hop) = $sipt(hop_counter); | ||
+ | if($avp(s: | ||
+ | { | ||
+ | remove_hf(" | ||
+ | append_hf(" | ||
+ | } | ||
+ | </ | ||
==== $sipt(calling_party_category) / $sipt(cpc) / $sipt_cpc ==== | ==== $sipt(calling_party_category) / $sipt(cpc) / $sipt_cpc ==== | ||
Line 1402: | Line 1995: | ||
==== $sipt(calling_party_number.nature_of_address) / $sipt.(calling_party_number.nai) / $sipt_calling_party_nai ==== | ==== $sipt(calling_party_number.nature_of_address) / $sipt.(calling_party_number.nai) / $sipt_calling_party_nai ==== | ||
Returns the value of the Nature of Address Indicator of the Calling Party for the IAM message. Returns -1 if there is a parsing error or if the Calling Party Number is not present. | Returns the value of the Nature of Address Indicator of the Calling Party for the IAM message. Returns -1 if there is a parsing error or if the Calling Party Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number (national use) | ||
+ | * 4 International use | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # get the Calling Nai and add country code if national | ||
+ | if($sipt(calling_party_number.nai) == 3) | ||
+ | { | ||
+ | $fU = " | ||
+ | } | ||
+ | </ | ||
==== $sipt(called_party_number.nature_of_address) / $sipt(called_party_number.nai) / $sipt_called_party_nai ==== | ==== $sipt(called_party_number.nature_of_address) / $sipt(called_party_number.nai) / $sipt_called_party_nai ==== | ||
Returns the value of the Nature of Address Indicator of the Called Party for the IAM message. Returns -1 if there is a parsing error. | Returns the value of the Nature of Address Indicator of the Called Party for the IAM message. Returns -1 if there is a parsing error. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | * 5 Network-specific number (national use) | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # get the Called Nai and add country code if national | ||
+ | if($sipt(called_party_number.nai) == 3) | ||
+ | { | ||
+ | $rU = " | ||
+ | } | ||
+ | </ | ||
==== $sipt(event_info) === | ==== $sipt(event_info) === | ||
Returns the value of the Event Info header of the CPG message. Returns -1 if there is a parsing error. | Returns the value of the Event Info header of the CPG message. Returns -1 if there is a parsing error. | ||
+ | |||
+ | Can return the following values: | ||
+ | * 0 Spare | ||
+ | * 1 ALERTING | ||
+ | * 2 PROGRESS | ||
+ | * 3 In-band information or an appropriate pattern is now available | ||
+ | * 4 Call forward on busy | ||
+ | * 5 Call forward on no reply | ||
+ | * 6 Call forward unconditional | ||
+ | |||
+ | |||
+ | ==== $sipt(backward_call_indicator.charge_indicator) === | ||
+ | Returns the value of the charge indication of the backward call | ||
+ | indicator header in the ACM or COT message. Returns -1 if there is a | ||
+ | parsing error | ||
+ | |||
+ | Can return the following values: | ||
+ | * 0 no indication | ||
+ | * 1 no charge | ||
+ | * 2 charge | ||
+ | * 3 spare | ||
+ | |||
===== $cfg(key) - Config File Attributes ===== | ===== $cfg(key) - Config File Attributes ===== | ||
Line 1415: | Line 2064: | ||
The key can be: | The key can be: | ||
- | * line - return current line in config | + | |
- | * name - return the name of current config file | + | * name - return the name of current config file |
+ | * file - return the name of current config file | ||
+ | * route - return the name of routing block | ||
Example: | Example: | ||
Line 1423: | Line 2074: | ||
send_reply(" | send_reply(" | ||
</ | </ | ||
+ | |||
===== $dns(pvid=> | ===== $dns(pvid=> | ||
Line 1467: | Line 2119: | ||
===== $RANDOM - Random number ===== | ===== $RANDOM - Random number ===== | ||
+ | |||
Returns a random value from the [0 - 2^31) range. | Returns a random value from the [0 - 2^31) range. | ||
Line 1484: | Line 2137: | ||
</ | </ | ||
- | ===== $C(xy) - Foreground and background colors | + | ===== JSONRPCS Variables |
+ | ==== $jsonrpl(key) - JSONRPC Reply ==== | ||
+ | |||
+ | This variable gives access to JSONRPC reply after executing jsonrpc_exec(...) in kamailio.cfg. | ||
+ | |||
+ | The key can be: | ||
+ | * code - code for the JSONRPC response | ||
+ | * text - text of the code for the JSONRPC response | ||
+ | * body - the body of the JSONRPC response | ||
+ | |||
+ | ===== Presence Module ===== | ||
+ | |||
+ | ==== $subs(key) - Subscription Attributes ==== | ||
+ | |||
+ | This variable gives access to attributes of the current subscription. The variable has to be used after executing // | ||
+ | |||
+ | The key can be: | ||
+ | * uri - subscription URI. Useful in particular for subscriptions within the dialog, when the request URI in SUBSCRIBE is the Contact address from the initial subscription. | ||
+ | |||
+ | ===== Registrar Module ===== | ||
+ | |||
+ | ==== $ulc(profile=> | ||
+ | |||
+ | Access the attributes of contact addresses stored in ' | ||
+ | |||
+ | It must be used after a call of “reg_fetch_contacts()”. | ||
+ | |||
+ | ===== Sipcapture Module ===== | ||
+ | |||
+ | ==== $hep(key) - HEP Packet Attributes ==== | ||
+ | |||
+ | The key refers to HEP packet header values: | ||
+ | |||
+ | * version - HEP version | ||
+ | * src_ip - source IP address | ||
+ | * dst_ip - destination IP address | ||
+ | * 0x000 - HEP attribute 0x000 | ||
+ | * 0x999 - HEP attribute 0x999 | ||
+ | |||
+ | ===== $phn(rid=> | ||
+ | |||
+ | $phn(rid=> | ||
+ | |||
+ | * number - phone number that is matched | ||
+ | * valid - 1 if the matched number has a valid result; 0 otherwise | ||
+ | * normalized - normalized phone number | ||
+ | * cctel - country code for phone number | ||
+ | * ltype - local network type | ||
+ | * ndesc - phone number description | ||
+ | * error - error string if phone number matching fails. | ||
+ | |||
+ | <code c> | ||
+ | if(phonenum_match(" | ||
+ | if($phn(src=> | ||
+ | xlog(" | ||
+ | } else { | ||
+ | xlog(" | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== sdpops module variables ===== | ||
+ | |||
+ | * $sdp(body) - full SDP body (read only) | ||
+ | * $sdp(sess_version) - sess-version -attribute from SDP o= -line. When set to special value -1, current value is incremented. (read + write) | ||
+ | |||
+ | ===== $sruid - Unique ID ===== | ||
+ | |||
+ | * $sruid - return unique ID generated internally Kamailio | ||
+ | |||
+ | ===== $ltt(key) - Local To-Tag ===== | ||
+ | |||
+ | $ltt(key) - return local generated To-tag when Kamailio sends a reply | ||
+ | |||
+ | * $ltt(s) - the to-tag used in stateless replies | ||
+ | * $ltt(t) - the to-tag used in transaction stateful replies (transaction has to be created at that time, eg., by t_newtran() or in a branch/ | ||
+ | * $ltt(x) - $ltt(t) if the transaction was created already, otherwise $ltt(s) | ||
+ | |||
+ | ===== tcpops module variable ===== | ||
+ | |||
+ | $tcp(key) - return TCP connection attributes. | ||
+ | |||
+ | The key can be: | ||
+ | * c_si - connection source ip (useful with HAProxy connections) | ||
+ | * c_sp - connection source port (useful with HAProxy connections) | ||
+ | * conid - connection id | ||
+ | |||
+ | |||
+ | ===== pv_headers module variables ===== | ||
+ | |||
+ | * $x_hdr(// | ||
+ | * $x_fu: Full From header | ||
+ | * $x_fU: From header user part | ||
+ | * $x_fd: From header domain part | ||
+ | * $x_fn: From header Display Name part | ||
+ | * $x_ft: From header Tag | ||
+ | * $x_tu: Full To header | ||
+ | * $x_tU: To header user part | ||
+ | * $x_td: To header domain part | ||
+ | * $x_tn: To header Display Name part | ||
+ | * $x_tt: To header Tag | ||
+ | * $x_rs: | ||
+ | * $x_rr: | ||
+ | |||
+ | ===== $C(xy) - Foreground and background colors ===== | ||
$C(xy) - reference to an escape sequence. “x” represents the foreground color and “y” represents the background color. | $C(xy) - reference to an escape sequence. “x” represents the foreground color and “y” represents the background color. |