cookbooks:devel:pseudovariables
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cookbooks:devel:pseudovariables [2020/12/12 18:28] – [$def(name) - Defined Value As Number] miconda | cookbooks:devel:pseudovariables [2022/04/11 13:24] (current) – geoip2 henningw | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{ : | ||
====== Pseudo-Variables ====== | ====== Pseudo-Variables ====== | ||
- | Version: Kamailio SIP Server v5.5.x (devel) | + | Version: Kamailio SIP Server v5.6.x (devel) |
+ | |||
+ | {{ : | ||
===== Introduction ===== | ===== Introduction ===== | ||
Line 170: | Line 171: | ||
<code c> | <code c> | ||
xlog(" | xlog(" | ||
+ | </ | ||
+ | |||
+ | **$cnt(xavp)** - return the number of xavps | ||
+ | |||
+ | < | ||
+ | * $cnt($xavp(key[*])) : number of XAVPs " | ||
+ | * $cnt($xavp(key[n]=> | ||
+ | * $cnt($xavp(key[*]=> | ||
+ | |||
+ | * $cnt($xavp(key[n])) : 1 or 0 (if this index exists or not). | ||
+ | * $cnt($xavp(key[-n])) : same but with reverse indexing (-1 is the last index). | ||
+ | |||
+ | * $cnt($xavp(key[*]=> | ||
+ | |||
+ | * $cnt($xavp(key)) is the same as $cnt($xavp(key[*])). | ||
+ | * $cnt($xavp(key=> | ||
</ | </ | ||
==== $conid - TCP Connection ID ==== | ==== $conid - TCP Connection ID ==== | ||
Line 267: | Line 284: | ||
**$fd** - reference to domain in URI of ' | **$fd** - reference to domain in URI of ' | ||
+ | |||
+ | <fc # | ||
==== $fn - From display name ==== | ==== $fn - From display name ==== | ||
**$fn** - reference to display name of ' | **$fn** - reference to display name of ' | ||
+ | |||
+ | <fc # | ||
==== $fs - Forced Send Socket ==== | ==== $fs - Forced Send Socket ==== | ||
Line 314: | Line 335: | ||
**$fu** - reference to URI of ' | **$fu** - reference to URI of ' | ||
- | <fc # | + | <fc # |
Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | ||
Line 322: | Line 343: | ||
**$fU** - reference to username in URI of ' | **$fU** - reference to username in URI of ' | ||
- | <fc # | + | <fc # |
Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | ||
Line 435: | Line 456: | ||
**$retcode** - same as **$rc** | **$retcode** - same as **$rc** | ||
+ | Note that the value of $rc is overwritten by each new function call. | ||
+ | |||
+ | Example of use: | ||
+ | |||
+ | <code c> | ||
+ | lookup(" | ||
+ | $var(rc) = $rc; | ||
+ | if ($var(rc) < 0) { | ||
+ | t_newtran(); | ||
+ | switch ($var(rc)) { | ||
+ | case -1: | ||
+ | case -3: | ||
+ | send_reply(" | ||
+ | exit; | ||
+ | case -2: | ||
+ | send_reply(" | ||
+ | exit; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
==== $rd - Domain in R-URI ==== | ==== $rd - Domain in R-URI ==== | ||
Line 540: | Line 582: | ||
**$Rp** - reference to the port where the message was received | **$Rp** - reference to the port where the message was received | ||
+ | |||
+ | ==== $Rn - Received socket name ==== | ||
+ | |||
+ | **$Rn** - reference to the name of the socket where the message was received | ||
==== $RAu - Advertised socket URI ==== | ==== $RAu - Advertised socket URI ==== | ||
Line 630: | Line 676: | ||
**$td** - reference to domain in URI of ' | **$td** - reference to domain in URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tn - To display name ==== | ==== $tn - To display name ==== | ||
**$tn** - reference to display name of ' | **$tn** - reference to display name of ' | ||
+ | |||
+ | <fc # | ||
==== $tt - To tag ==== | ==== $tt - To tag ==== | ||
Line 649: | Line 699: | ||
**$tu** - reference to URI of ' | **$tu** - reference to URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tU - To URI Username ==== | ==== $tU - To URI Username ==== | ||
**$tU** - reference to username in URI of ' | **$tU** - reference to username in URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tUl - To URI Username Length ==== | ==== $tUl - To URI Username Length ==== | ||
Line 875: | Line 929: | ||
- | **$hdr(name)** - represents the body of first header identified by ' | + | **$hdr(name)** - represents the body of first header |
- | **$(hdr(name)[N])** - represents the body of the N-th header identified by ' | + | **$(hdr(name)[N])** - represents the body of the N-th header |
If [N] is omitted then the body of the first header is printed. The body of first header is returned 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 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=' | ||
Line 895: | Line 949: | ||
<fc # | <fc # | ||
+ | ===== $hfl(name) - Header Field With List Of Bodies ===== | ||
+ | |||
+ | Similar to **$hdr(name)**, | ||
+ | |||
+ | Implemented for: | ||
+ | |||
+ | * Contact | ||
+ | * Record-Route | ||
+ | * Route | ||
+ | * Via | ||
+ | |||
+ | For the rest of the headers works like **$hdr(name)**. | ||
+ | |||
+ | **$hfl(name)** - represents the first body of first header field identified by ' | ||
+ | |||
+ | **$(hfl(name)[N])** - represents the body of the N-th header field identified by ' | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($(hfl(Via)[1])=~" | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
===== $hdrc(name) - Number of Headers ===== | ===== $hdrc(name) - Number of Headers ===== | ||
Line 907: | Line 985: | ||
</ | </ | ||
+ | ===== $hflc(name) - Number of Header Bodies ===== | ||
+ | |||
+ | Similar to **$hdrc(name)**, | ||
+ | |||
+ | Implemented for: | ||
+ | |||
+ | * Record-Route | ||
+ | * Route | ||
+ | * Via | ||
+ | |||
+ | For the rest of the headers works like **$hdrc(name)**. | ||
+ | |||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($hflc(Via)==3) { | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
===== $var(name) - Private memory variables (zero) ===== | ===== $var(name) - Private memory variables (zero) ===== | ||
Line 1031: | Line 1129: | ||
<code c> | <code c> | ||
xlog(" | xlog(" | ||
+ | </ | ||
+ | |||
+ | ===== $ccp(key) - Config Custom Parameters ===== | ||
+ | |||
+ | Get the value for global custom parameters: | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | gv.sval = " | ||
+ | gv.ival = 10 desc "ten var" | ||
+ | |||
+ | request_route { | ||
+ | xinfo(" | ||
+ | } | ||
</ | </ | ||
Line 1074: | Line 1190: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== $rpl(key) ===== | ||
+ | |||
+ | Attributes of the SIP reply processed at that moment. The variables must be used during SIP reply processing, otherwise it returns $null. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * duri - SIP URI corresponding to the address where the SIP reply is going to be sent based on 2nd via | ||
+ | * dhost - host part of duri | ||
+ | * dport - port part of duri | ||
+ | * dproto - proto part of duri | ||
+ | * dprotoid - proto id of duri | ||
+ | * cntvia - the number of Via header bodies | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | reply_route{ | ||
+ | xinfo(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== $msgbuf(index) ===== | ||
+ | |||
+ | Get or set the character in the message buffer at the position index. | ||
+ | |||
+ | The index has to be a positive integer or a variable holding such value. | ||
+ | |||
+ | Note that the variable returns a clone of the character stored in a static buffer, copy it to another variable if you want to compare with another $msgbuf(index). | ||
+ | |||
+ | The update is done directly and immediately in the message buffer -- use it with care! | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if ($msgbuf(20)==" | ||
+ | $msgbuf(20) = " | ||
+ | } | ||
+ | </ | ||
+ | ===== Header Field Iterator ===== | ||
+ | |||
+ | ==== $hfitname(iname) ==== | ||
+ | |||
+ | The header name of the header field iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | hf_iterator_start(" | ||
+ | while(hf_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | hf_iterator_end(" | ||
+ | </ | ||
+ | |||
+ | ==== $hfitbody(iname) ==== | ||
+ | |||
+ | The header body of the header field iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | hf_iterator_start(" | ||
+ | while(hf_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | hf_iterator_end(" | ||
+ | </ | ||
+ | |||
+ | ===== Body Line Iterator ===== | ||
+ | |||
+ | ==== $blitval(iname) ==== | ||
+ | |||
+ | The value of the body line iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | bl_iterator_start(" | ||
+ | while(bl_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | bl_iterator_end(" | ||
+ | </ | ||
+ | |||
===== Send Data Attributes ===== | ===== Send Data Attributes ===== | ||
Line 1137: | Line 1338: | ||
... | ... | ||
} | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== SIPTRACE Module ===== | ||
+ | ==== $siptrace(name) ==== | ||
+ | |||
+ | **$siptrace(name)** - return attributes of the message handled in the event_route[siptrace: | ||
+ | |||
+ | The name can be: | ||
+ | |||
+ | * src_addr - source socket address (proto: | ||
+ | * dst_addr - destination socket address (proto: | ||
+ | * src_host - source host, for IPv6 host contains `[]` | ||
+ | * dst_host - destination host, for IPv6 host contains `[]` | ||
+ | * src_hostip - source host, for IPv6 host do not contains `[]` | ||
+ | * dst_hostip - destination host, for IPv6 host do not contains `[]` | ||
+ | * src_port - source port | ||
+ | * dst_port - destination port | ||
+ | * src_proto - source proto | ||
+ | * dst_proto - destination proto | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | event_route[siptrace: | ||
+ | { | ||
+ | if (allow_address(" | ||
+ | return; | ||
+ | |||
+ | } | ||
+ | if (compare_ips($siptrace(src_host), | ||
+ | return; | ||
+ | } | ||
} | } | ||
</ | </ | ||
Line 1582: | Line 1817: | ||
==== $T_branch_idx ==== | ==== $T_branch_idx ==== | ||
- | * the index (starting with 1 for the first branch) of the branch for which is executed the branch_route[]. | + | * the index (starting with 0 for the first branch) of the branch for which is executed the branch_route[]. |
+ | * in failure_route[] block, the value is the number of completed branches added to the number of new new branches | ||
+ | * in request_route block, the value is number of created branches | ||
+ | * in onreply_route[], | ||
+ | * if used outside of transaction processing, the value is '-1' | ||
==== $T_reply_ruid ==== | ==== $T_reply_ruid ==== | ||
Line 1681: | Line 1920: | ||
* hdrs - SIP Headers | * hdrs - SIP Headers | ||
* body - Body | * body - Body | ||
+ | * flags - flags for processing | ||
+ | * 1 - the password is provided in HA1 format | ||
* auser - authentication username | * auser - authentication username | ||
* apasswd - authentication password | * apasswd - authentication password | ||
Line 1750: | Line 1991: | ||
==== $nh(key) ==== | ==== $nh(key) ==== | ||
- | Return attributes of next hop for the SIP request. Address | + | Return attributes of next hop for the SIP messages. For SIP requests, the address |
* $nh(u) - uri (lower case u) | * $nh(u) - uri (lower case u) | ||
Line 1840: | Line 2081: | ||
if($gip(src=> | if($gip(src=> | ||
+ | { | ||
+ | # source and destination from same country | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== $gip2(pvc=> | ||
+ | |||
+ | Variables exported by GeoIP2 module, returning geo-location attributes. The attributes are populated upon calling function **geoip_match2(ipaddr, | ||
+ | |||
+ | **pvc** (container id) is second parameter of geoip_match2(..) and **key** can be: | ||
+ | |||
+ | * cc - country code | ||
+ | * tz - time zone | ||
+ | * zip - postal code | ||
+ | * lat - latitude | ||
+ | * lon - longitude | ||
+ | * dma - dma code | ||
+ | * ips - ip start | ||
+ | * ipe - ip end | ||
+ | * city - city | ||
+ | * area - area code | ||
+ | * regc - region | ||
+ | * regn - region name | ||
+ | * metro - metro code | ||
+ | * contc - continent code | ||
+ | |||
+ | You can call several time **geoip_match(ipaddr, | ||
+ | |||
+ | <code c> | ||
+ | geoip_match2(" | ||
+ | geoip_match2(" | ||
+ | |||
+ | if($gip2(src=> | ||
{ | { | ||
# source and destination from same country | # source and destination from same country | ||
Line 1847: | Line 2122: | ||
===== TLS Module ===== | ===== TLS Module ===== | ||
+ | |||
+ | ==== $tls(key) ==== | ||
+ | |||
+ | Variables related to TLS communication and certificates. | ||
+ | |||
+ | The **key** can be: | ||
+ | |||
+ | * **m_issuer_line** - return local (my) certificate issuer line | ||
+ | * **p_issuer_line** - return remote (peer) certificate issuer line | ||
+ | * **m_subject_line** - return local (my) certificate subject line | ||
+ | * **p_subject_line** - return remote (peer) certificate subject line | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if(proto==TLS) { | ||
+ | xinfo(" | ||
+ | } | ||
+ | </ | ||
==== $tls_version ==== | ==== $tls_version ==== | ||
+ | |||
The TLS/SSL version which is used on the TLS connection from which the message was received. String type. | The TLS/SSL version which is used on the TLS connection from which the message was received. String type. | ||
==== $tls_description ==== | ==== $tls_description ==== | ||
Line 1984: | Line 2279: | ||
* $msg(body) - sip message body | * $msg(body) - sip message body | ||
* $msg(body_len) - sip message body length | * $msg(body_len) - sip message body length | ||
- | * $msg(hdrs) - sip message headers | + | * $msg(hdrs) - sip message headers |
- | * $msg(fline) - sip message first line | + | * $msg(fline) - sip message first line (surrounding white space and EoL chars trimmed) |
+ | * $msg(fpart) - sip message first line and the headers | ||
+ | * $msg(lpart) - sip message headers and the body | ||
+ | ===== POSOPS Module ===== | ||
+ | |||
+ | ==== $pos(key) ==== | ||
+ | |||
+ | Get attributes after a function of the module is executed. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * ret - the return code on success or -1 | ||
+ | * idx - position inside message buffer, for find/search it is the start of matching | ||
+ | * len - the length of matching string for search functions | ||
===== XHTTP Module ===== | ===== XHTTP Module ===== | ||
Line 1996: | Line 2304: | ||
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. | ||
+ | |||
==== $msrp(buf) ==== | ==== $msrp(buf) ==== | ||
The entire content of MSRP frame - first line, headers, body and end-line. | The entire content of MSRP frame - first line, headers, body and end-line. | ||
+ | |||
==== $msrp(body) ==== | ==== $msrp(body) ==== | ||
The body of MSRP frame. | The body of MSRP frame. | ||
+ | |||
==== $msrp(code) ==== | ==== $msrp(code) ==== | ||
The code of MSRP replies. | The code of MSRP replies. | ||
+ | |||
==== $msrp(hdrs) ==== | ==== $msrp(hdrs) ==== | ||
The headers in a MSRP frame. | The headers in a MSRP frame. | ||
+ | |||
==== $msrp(msgid) ==== | ==== $msrp(msgid) ==== | ||
The body of Message-Id header. | The body of Message-Id header. | ||
+ | |||
==== $msrp(method) ==== | ==== $msrp(method) ==== | ||
The method of a MSRP request. | The method of a MSRP request. | ||
+ | |||
==== $msrp(buflen) ==== | ==== $msrp(buflen) ==== | ||
The length of entire MSRP frame. | The length of entire MSRP frame. | ||
+ | |||
==== $msrp(sessid) ==== | ==== $msrp(sessid) ==== | ||
The session id for MSRP frame. It is taken from the first MSRP URI in To-Path header. | The session id for MSRP frame. It is taken from the first MSRP URI in To-Path header. | ||
+ | |||
==== $msrp(reason) ==== | ==== $msrp(reason) ==== | ||
The reason text in a MSRP reply. | The reason text in a MSRP reply. | ||
+ | |||
==== $msrp(crthop) ==== | ==== $msrp(crthop) ==== | ||
The URI for current hop - it is the first URI in To-Path header. | The URI for current hop - it is the first URI in To-Path header. | ||
+ | |||
==== $msrp(bodylen) ==== | ==== $msrp(bodylen) ==== | ||
Line 2033: | Line 2352: | ||
The transaction ID from the first line of MSRP frame. | The transaction ID from the first line of MSRP frame. | ||
+ | |||
==== $msrp(prevhop) ==== | ==== $msrp(prevhop) ==== | ||
The MSRP URI of the previous hop - the first address in From-Path header. | The MSRP URI of the previous hop - the first address in From-Path header. | ||
+ | |||
==== $msrp(nexthop) ==== | ==== $msrp(nexthop) ==== | ||
The URI of the next hop - the second address in To-Path header. | The URI of the next hop - the second address in To-Path header. | ||
+ | |||
==== $msrp(lasthop) ==== | ==== $msrp(lasthop) ==== | ||
The last hop URI - the last address in To-Path header. | The last hop URI - the last address in To-Path header. | ||
+ | |||
==== $msrp(srcaddr) ==== | ==== $msrp(srcaddr) ==== | ||
The address of the previous hop set as MSRP URI using received source IP and port. | The address of the previous hop set as MSRP URI using received source IP and port. | ||
+ | |||
==== $msrp(srcsock) ==== | ==== $msrp(srcsock) ==== | ||
- | The local socket where the MSRP frame was received, set as **proto: | + | The local socket where the MSRP frame was received, set as **proto: |
==== $msrp(firsthop) ==== | ==== $msrp(firsthop) ==== | ||
The URI of the first hop - the last address in From-Path header. | The URI of the first hop - the last address in From-Path header. | ||
+ | |||
==== $msrp(prevhops) ==== | ==== $msrp(prevhops) ==== | ||
The number of previous hops - it is the number of addresses in From-Path header. | The number of previous hops - it is the number of addresses in From-Path header. | ||
+ | |||
==== $msrp(nexthops) ==== | ==== $msrp(nexthops) ==== | ||
Line 2185: | Line 2512: | ||
* 2 charge | * 2 charge | ||
* 3 spare | * 3 spare | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_info) / $sipt_redirection_info === | ||
+ | Returns the value of the Redirecting reason of the Call Diversion Information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Call Diversion Information is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Unknown | ||
+ | * 1 User busy | ||
+ | * 2 no reply | ||
+ | * 3 unconditional | ||
+ | * 4 deflection during alerting | ||
+ | * 5 deflection immediate response | ||
+ | * 6 mobile subscriber not reachable | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_number) / $sipt_redirection_number === | ||
+ | Returns the value (Address signal) of the Redirection Number. | ||
+ | Returns -1 if there is a parsing error or if the Redirection Number is not present. | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # get the redirection number | ||
+ | $avp(s: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_number.nai) / $sipt_redirection_number_nai === | ||
+ | Returns the value of the Nature of Address Indicator of the Redirection Number. Returns -1 if there is a parsing error or if the Redirection Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(calling_party_number) === | ||
+ | Returns the value (Address signal) 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. | ||
+ | |||
+ | |||
+ | ==== $sipt(called_party_number) === | ||
+ | Returns the value (Address signal) of the Called Party for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Called Party Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(sipt_redirection_information_reason) === | ||
+ | Returns the value of the Redirection reason of the Redirection information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Redirection information is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(sipt_redirection_information_original_reason) === | ||
+ | Returns the value of the Original Redirection reason of the Redirection information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Redirection information is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(redirecting_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Redirecting Number. Returns -1 if there is a parsing error or if the Redirecting Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(redirecting_number) === | ||
+ | Returns the value (Address signal) of the Redirecting Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Redirecting Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(original_called_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Original Called Number. Returns -1 if there is a parsing error or if the Original Called Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(original_called_number) === | ||
+ | Returns the value (Address signal) of the Original Called Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Original Called Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(generic_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Generic Number. Returns -1 if there is a parsing error or if the Generic Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(generic_number) === | ||
+ | Returns the value (Address signal) of the Generic Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Generic Number is not present. | ||
Line 2276: | Line 2712: | ||
* text - text of the code for the JSONRPC response | * text - text of the code for the JSONRPC response | ||
* body - the body of the JSONRPC response | * body - the body of the JSONRPC response | ||
+ | |||
+ | ===== $lsock(expr) ===== | ||
+ | |||
+ | Get attributes for listen sockets (from corex module). | ||
+ | |||
+ | The **expr** is an expression specifying what to match and return, the format is: | ||
+ | |||
+ | < | ||
+ | matchid/ | ||
+ | </ | ||
+ | |||
+ | The **expr** can contain variables that are evaluated before parsing the expression. | ||
+ | |||
+ | The **matchid** can be: | ||
+ | |||
+ | * n - match on name | ||
+ | * l - match on listen address | ||
+ | |||
+ | The **value** specifies what to match with. | ||
+ | |||
+ | The **field** can be (only first character matches): | ||
+ | |||
+ | * name - return name | ||
+ | * listen - return the listen address | ||
+ | * advertise - return the advertise address | ||
+ | * index - return the index in the list of all sockets | ||
+ | |||
+ | Example: | ||
+ | |||
+ | < | ||
+ | listen=udp: | ||
+ | ... | ||
+ | xinfo(" | ||
+ | xinfo(" | ||
+ | $var(s0) = " | ||
+ | xinfo(" | ||
+ | </ | ||
+ | |||
+ | ===== Evrexec Module ===== | ||
+ | |||
+ | ==== $evr(key) ==== | ||
+ | |||
+ | evrexec attributes: | ||
+ | |||
+ | * $evr(data) - processing data | ||
+ | * $evr(srcip) - source ip | ||
+ | * $evr(srcport) - sourceport as string | ||
+ | * $evr(srcportno) - source port as number | ||
+ | |||
===== Presence Module ===== | ===== Presence Module ===== | ||
Line 2306: | Line 2791: | ||
* 0x999 - HEP attribute 0x999 | * 0x999 - HEP attribute 0x999 | ||
- | ===== $phn(rid=> | + | ===== Phonenum Variables ===== |
$phn(rid=> | $phn(rid=> | ||
Line 2328: | Line 2813: | ||
</ | </ | ||
+ | ===== SecSIPId Variables ===== | ||
+ | $secsipid(key) - return attributes of secsipid module. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * val - the value of Identity computed by secsipid_build_identity(...) | ||
+ | * ret - the return code of the libsecsipid function used by secsipid_build_identity(...) | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if(secsipid_build_identity(" | ||
+ | " | ||
+ | xinfo(" | ||
+ | } | ||
+ | </ | ||
===== sdpops module variables ===== | ===== sdpops module variables ===== | ||
Line 2346: | Line 2847: | ||
* $ltt(x) - $ltt(t) if the transaction was created already, otherwise $ltt(s) | * $ltt(x) - $ltt(t) if the transaction was created already, otherwise $ltt(s) | ||
+ | ===== $via0(attr) - Via[0] Attributes ===== | ||
+ | |||
+ | $via0(attr) - attributes of first Via header. | ||
+ | |||
+ | The attr can be: | ||
+ | |||
+ | * host - host part (string) | ||
+ | * port - port (number) | ||
+ | * proto - protocol - transport part (string) | ||
+ | * protoid - protocol id (integer id) | ||
+ | * branch - branch parameter | ||
+ | * rport - rport parameter value (string) | ||
+ | * received - received parameter value (string) | ||
+ | * i - i parameter value (string) | ||
+ | |||
+ | ===== $via1(attr) - Second Via Attributes ===== | ||
+ | |||
+ | $via1(attr) - attributes of second Via header. The attr can be the same as for $via0(attr). | ||
+ | |||
+ | ===== $viaZ(attr) - Last Via Attributes ===== | ||
+ | |||
+ | $viaZ(attr) - attributes of last Via header. The attr can be the same as for $via0(attr). | ||
===== tcpops module variable ===== | ===== tcpops module variable ===== | ||
Line 2389: | Line 2912: | ||
+ | ===== $K(key) - Kamailio Constants ===== | ||
+ | $K(key) - return the numeric values corresponding to Kamailio configuration constants. | ||
+ | The key can be: | ||
+ | |||
+ | * IPv4 - return AF_INET | ||
+ | * IPv6 - return AF_INET6 | ||
+ | * UDP - return PROTO_UDP | ||
+ | * TCP - return PROTO_TCP | ||
+ | * TLS - return PROTO_TLS | ||
+ | * SCTP - return PROTO_SCTP | ||
+ | * WS - return PROTO_WS | ||
+ | * WSS - return PROTO_WSS | ||
+ | |||
+ | |||
+ | <code c> | ||
+ | xinfo(" | ||
+ | </ | ||
===== Examples ===== | ===== Examples ===== | ||
cookbooks/devel/pseudovariables.1607797692.txt.gz · Last modified: 2020/12/12 18:28 by miconda