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 [2020/01/22 13:23] miconda [$sndto(name)] |
cookbooks:devel:pseudovariables [2020/05/29 23:36] linuxmaniac [$xavu(id) - XAVUs] |
||
---|---|---|---|
Line 248: | Line 248: | ||
**$fn** - reference to display name of ' | **$fn** - reference to display name of ' | ||
- | ==== $fs - Forced | + | ==== $fs - Forced |
- | **$fs** - reference to the forced socket for message | + | **$fs** - reference to the forced |
<fc # | <fc # | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | listen=udp: | ||
+ | ... | ||
+ | $fs = " | ||
+ | </ | ||
+ | |||
+ | ==== $fsn - Forced Send Socket Name ==== | ||
+ | |||
+ | **$fsn** - reference to the name of the forced send socket for the SIP message. The name can be assigned to this variable to select a send socket via its name. | ||
+ | |||
+ | <code c> | ||
+ | listen=udp: | ||
+ | ... | ||
+ | $fsn = " | ||
+ | ... | ||
+ | $fs = " | ||
+ | xdbg(" | ||
+ | </ | ||
==== $ft - From tag ==== | ==== $ft - From tag ==== | ||
Line 639: | Line 660: | ||
**$env(NAME)** - value of the environment variable named NAME | **$env(NAME)** - value of the environment variable named NAME | ||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | xdbg(" | ||
+ | </ | ||
===== $avp(id) - AVPs ===== | ===== $avp(id) - AVPs ===== | ||
Line 709: | Line 735: | ||
===== $xavp(id) - XAVPs ===== | ===== $xavp(id) - XAVPs ===== | ||
- | xavp - extended AVP' | + | **xavp** - eXtended AVPs - are variables |
+ | |||
+ | They work like a stack, | ||
+ | |||
+ | Each xavp has a string | ||
+ | |||
+ | To assign a single value use: | ||
+ | |||
+ | <code c> | ||
+ | $xavp(root)=" | ||
+ | $xavp(root)=intnumber; | ||
+ | </ | ||
+ | |||
+ | To assign a named value use: | ||
<code c> | <code c> | ||
- | $xavp(root=> | + | $xavp(root=> |
+ | $xavp(root=> | ||
</ | </ | ||
Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0]. | Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0]. | ||
+ | |||
<code c> | <code c> | ||
- | $xavp(root[0]=> | + | $xavp(root[0]=> |
</ | </ | ||
If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc. | If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc. | ||
+ | |||
<code c> | <code c> | ||
- | $xavp(example=>name)="one"; | + | # new item (person => [(lastname = " |
- | #create | + | $xavp(person=>lastname)="Smith"; |
- | $xavp(example=>name)="two"; | + | |
- | #add extra value to "two" | + | # add new item (person => [(lastname = " |
- | $xavp(example[0]=>value)=" | + | $xavp(person=>lastname)="Doe"; |
- | #add value to first variable - "one" | + | |
- | $xavp(example[1]=>value)="Anna"; | + | # add another named value to the last example item |
+ | # | ||
+ | $xavp(person[0]=>firstname)=" | ||
+ | |||
+ | # add another named value to first example item | ||
+ | # | ||
+ | xavp(person[1]=>firstname)="Alice"; | ||
</ | </ | ||
Line 733: | Line 782: | ||
Another example: | Another example: | ||
<code c> | <code c> | ||
- | # Create | + | # create |
$xavp(sf=> | $xavp(sf=> | ||
- | #assign | + | # add named values |
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
- | #create new xavp, moving previous one to sf[1] | + | # create new (the second) root xavp with a named value of string type, moving previous one to sf[1] |
$xavp(sf=> | $xavp(sf=> | ||
+ | # add named values (child values) | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
- | #Create a third xavp | + | # create new (the third) xavp with a named value of string type, moving previous one to sf[1] and the other one to sf[2] |
$xavp(sf=> | $xavp(sf=> | ||
+ | # add named values (child values) | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
$xavp(sf[0]=> | $xavp(sf[0]=> | ||
Line 753: | Line 804: | ||
</ | </ | ||
- | xavps are read and write variables. You can create multilevel xavps, as xavps may contain xavps. | + | xavps are read and write variables. |
+ | ===== $xavu(id) - XAVUs ===== | ||
+ | |||
+ | Similar to XAVPs, but with single value items, therefore there are no indexes in the naming format. XAVUs are also stored in transaction context and destroyed when the transaction is terminated. | ||
+ | |||
+ | Examples: | ||
+ | |||
+ | <code c> | ||
+ | $xavu(x) = 123; # <- set the value | ||
+ | $xavu(x) = 234; # <- update to the value, not adding to a list like for xavps | ||
+ | $xavu(x) = $null; # <- delete the xavu | ||
+ | $xavu(a=> | ||
+ | </ | ||
+ | |||
+ | ===== $xavi(id) - XAVIs ===== | ||
+ | |||
+ | Similar to XAVPs, but with key names are case insensitive. XAVIs are also stored in transaction context and destroyed when the transaction is terminated. | ||
+ | |||
+ | |||
+ | Examples: | ||
+ | |||
+ | <code c> | ||
+ | $xavi(WhatEver=> | ||
+ | # $xavi(whatever[0]=> | ||
+ | </ | ||
===== $hdr(name) - Headers ===== | ===== $hdr(name) - Headers ===== | ||
Line 1024: | Line 1099: | ||
- | ===== Benchmark | + | ===== Benchmark |
==== $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 1085: | Line 1160: | ||
The ' | The ' | ||
- | ===== Erlang | + | ===== Erlang |
- | ==== Erlang pseudo-variable attributes | + | ==== Attributes |
* type - get variable type. Possible types are: atom, integer, list, string, tuple, pid and ref. | * type - get variable type. Possible types are: atom, integer, list, string, tuple, pid and ref. | ||
Line 1096: | Line 1171: | ||
==== $erl_atom(name) ==== | ==== $erl_atom(name) ==== | ||
+ | |||
// | // | ||
Erlang atom is a literal, a constant with name. Formatted output pseudo variable | Erlang atom is a literal, a constant with name. Formatted output pseudo variable | ||
Line 1155: | Line 1231: | ||
module. | module. | ||
- | ===== HTable | + | ===== HTable |
==== $sht(htable=> | ==== $sht(htable=> | ||
Line 1308: | Line 1384: | ||
} | } | ||
</ | </ | ||
- | ===== Memcached | + | ===== Memcached |
==== $mct(key) ==== | ==== $mct(key) ==== | ||
Line 1385: | Line 1461: | ||
</ | </ | ||
- | ===== http_async_client | + | ===== http_async_client |
==== $http_req_id ==== | ==== $http_req_id ==== | ||
Line 1460: | Line 1536: | ||
</ | </ | ||
- | ===== TMX module Pseudo-Variables | + | ===== TMX Module |
==== $T_branch_idx ==== | ==== $T_branch_idx ==== | ||
Line 1549: | Line 1625: | ||
- | ===== UAC module Pseudo-Variables | + | ===== UAC Module |
==== $uac_req(key) ==== | ==== $uac_req(key) ==== | ||
Line 1585: | Line 1661: | ||
} | } | ||
</ | </ | ||
- | ===== Nathelper | + | ===== Nathelper |
==== $rr_count ==== | ==== $rr_count ==== | ||
Line 1595: | Line 1671: | ||
* 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 1728: | Line 1804: | ||
</ | </ | ||
- | ===== TLS module Pseudo-Variables | + | ===== TLS Module |
==== $tls_version ==== | ==== $tls_version ==== | ||
Line 1844: | Line 1920: | ||
==== $tls_peer_server_name ==== | ==== $tls_peer_server_name ==== | ||
The SNI server name of the peer | The SNI server name of the peer | ||
+ | |||
+ | ==== $tls_peer_raw_cert ==== | ||
+ | The raw PEM-encoded client certificate. String type. | ||
+ | |||
+ | ==== $tls_my_raw_cert ==== | ||
+ | The raw PEM-encoded client certificate. String type. | ||
+ | |||
+ | ==== $tls_peer_urlencoded_cert ==== | ||
+ | The PEM-encoded client certificate, | ||
+ | |||
+ | ==== $tls_my_urlencoded_cert ==== | ||
+ | The PEM-encoded client certificate, | ||
===== SIP Message Attributes ===== | ===== SIP Message Attributes ===== | ||
Line 1857: | Line 1945: | ||
* $msg(fline) - sip message first line | * $msg(fline) - sip message first line | ||
- | ===== XHTTP module Pseudo-Variables | + | ===== XHTTP Module |
==== $hu ==== | ==== $hu ==== | ||
Line 1863: | Line 1951: | ||
* 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 1932: | Line 2020: | ||
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 ==== | ||
Line 2147: | Line 2235: | ||
* body - the body of the JSONRPC response | * body - the body of the JSONRPC response | ||
- | ===== Presence Module | + | ===== Presence Module ===== |
==== $subs(key) - Subscription Attributes ==== | ==== $subs(key) - Subscription Attributes ==== | ||
Line 2156: | Line 2244: | ||
* 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. | * 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 | + | ===== Registrar Module ===== |
==== $ulc(profile=> | ==== $ulc(profile=> | ||
Line 2164: | Line 2252: | ||
It must be used after a call of “reg_fetch_contacts()”. | It must be used after a call of “reg_fetch_contacts()”. | ||
- | ===== sipcapture | + | ===== Sipcapture |
==== $hep(key) - HEP Packet Attributes ==== | ==== $hep(key) - HEP Packet Attributes ==== |