Kamailio-开源SIP软交换平台

中国第一个专注Kamailio SIP 软交换技术分享平台

用户工具

站点工具


tmx_transaction_management_extenstions_module_released

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

tmx_transaction_management_extenstions_module_released [2017/09/11 17:29] (当前版本)
james_zhu 创建
行 1: 行 1:
 +====== TMX Module ======
  
 +==== Daniel-Constantin Mierla ====
 +
 +asipto.com\\ ​
 +
 +''<​[[miconda@gmail.com|miconda@gmail.com]]>''​
 +
 +==== Juha Heinanen ====
 +
 +TutPro Inc.\\ ​
 +
 +''<​[[jh@tutpro.com|jh@tutpro.com]]>''​
 +
 +=== Edited by ===
 +
 +==== Daniel-Constantin Mierla ====
 +
 +''<​[[miconda@gmail.com|miconda@gmail.com]]>''​
 +
 +=== Edited by ===
 +
 +==== Juha Heinanen ====
 +
 +''<​[[jh@tutpro.com|jh@tutpro.com]]>''​
 +
 +Copyright © 2009 Daniel-Constantin Mierla
 +
 +----
 +
 +**Table of Contents**
 +
 +  * **1. Admin Guide** ​
 +    * **1. Overview** ​
 +    * **2. Dependencies** ​
 +      * **2.1. Kamailio Modules** ​
 +      * **2.2. External Libraries or Applications** ​
 +    * **3. Parameters** ​
 +      * **3.1. precheck_trans** ​
 +    * **4. Functions** ​
 +      * **4.1. t_cancel_branches(which)** ​
 +      * **4.2. t_cancel_callid(callid,​ cseq, flag [, rcode])** ​
 +      * **4.3. t_reply_callid(callid,​ cseq, code, reason)** ​
 +      * **4.4. t_flush_flags()** ​
 +      * **4.5. t_is_failure_route()** ​
 +      * **4.6. t_is_branch_route()** ​
 +      * **4.7. t_is_reply_route()** ​
 +      * **4.8. t_is_request_route()** ​
 +      * **4.9. t_suspend()** ​
 +      * **4.10. t_continue(tindex,​ tlabel, rtname)** ​
 +      * **4.11. t_reuse_branch()** ​
 +      * **4.12. t_precheck_trans()** ​
 +    * **5. Exported Variables** ​
 +    * **6. Statistics** ​
 +      * **6.1. UAS_transactions** ​
 +      * **6.2. UAC_transactions** ​
 +      * **6.3. 2xx_transactions** ​
 +      * **6.4. 3xx_transactions** ​
 +      * **6.5. 4xx_transactions** ​
 +      * **6.6. 5xx_transactions** ​
 +      * **6.7. 6xx_transactions** ​
 +      * **6.8. inuse_transactions** ​
 +      * **6.9. active_transactions** ​
 +      * **6.10. rpl_received** ​
 +      * **6.11. rpl_absorbed** ​
 +      * **6.12. rpl_relayed** ​
 +      * **6.13. rpl_generated** ​
 +      * **6.14. rpl_sent** ​
 +
 +**List of Examples**
 +
 +  * **1.1. precheck_trans usage** ​
 +  * **1.2. t_cancel_branches usage** ​
 +  * **1.3. t_cancel_callid usage** ​
 +  * **1.4. t_reply_callid usage** ​
 +  * **1.5. t_flush_flags usage** ​
 +  * **1.6. t_is_failure_route usage** ​
 +  * **1.7. t_is_branch_route usage** ​
 +  * **1.8. t_is_reply_route usage** ​
 +  * **1.9. t_is_request_route usage** ​
 +  * **1.10. t_suspend usage** ​
 +  * **1.11. t_continue usage** ​
 +  * **1.12. t_reuse_branch usage** ​
 +  * **1.13. t_precheck_trans usage** ​
 +
 +====== Chapter 1. Admin Guide ======
 +
 +**Table of Contents**
 +
 +  * **1. Overview** ​
 +  * **2. Dependencies** ​
 +    * **2.1. Kamailio Modules** ​
 +    * **2.2. External Libraries or Applications** ​
 +  * **3. Parameters** ​
 +    * **3.1. precheck_trans** ​
 +  * **4. Functions** ​
 +    * **4.1. t_cancel_branches(which)** ​
 +    * **4.2. t_cancel_callid(callid,​ cseq, flag [, rcode])** ​
 +    * **4.3. t_reply_callid(callid,​ cseq, code, reason)** ​
 +    * **4.4. t_flush_flags()** ​
 +    * **4.5. t_is_failure_route()** ​
 +    * **4.6. t_is_branch_route()** ​
 +    * **4.7. t_is_reply_route()** ​
 +    * **4.8. t_is_request_route()** ​
 +    * **4.9. t_suspend()** ​
 +    * **4.10. t_continue(tindex,​ tlabel, rtname)** ​
 +    * **4.11. t_reuse_branch()** ​
 +    * **4.12. t_precheck_trans()** ​
 +  * **5. Exported Variables** ​
 +  * **6. Statistics** ​
 +    * **6.1. UAS_transactions** ​
 +    * **6.2. UAC_transactions** ​
 +    * **6.3. 2xx_transactions** ​
 +    * **6.4. 3xx_transactions** ​
 +    * **6.5. 4xx_transactions** ​
 +    * **6.6. 5xx_transactions** ​
 +    * **6.7. 6xx_transactions** ​
 +    * **6.8. inuse_transactions** ​
 +    * **6.9. active_transactions** ​
 +    * **6.10. rpl_received** ​
 +    * **6.11. rpl_absorbed** ​
 +    * **6.12. rpl_relayed** ​
 +    * **6.13. rpl_generated** ​
 +    * **6.14. rpl_sent** ​
 +
 +===== 1. Overview =====
 +
 +This module collects extensions from Kamailio TM module.
 +
 +Kamailio TM (Transaction Management) module documentation is available at: [[http://​www.kamailio.org/​docs/​modules/​stable/​tm.html|http://​www.kamailio.org/​docs/​modules/​stable/​tm.html]]
 +
 +===== 2. Dependencies =====
 +
 +==== 2.1. Kamailio Modules ====
 +
 +The following modules must be loaded before this module:
 +
 +  * tm - transaction management. ​
 +
 +==== 2.2. External Libraries or Applications ====
 +
 +The following libraries or applications must be installed before running Kamailio with this module loaded:
 +
 +  * None. 
 +
 +===== 3. Parameters =====
 +
 +==== 3.1. precheck_trans ====
 +
 +Enable/​disable transaction pre-check via t_precheck_trans() function. If set to 0, the internal structures are not created at startup and the funcation will return false always.
 +
 +Default value is 1 (enabled).
 +
 +**Example 1.1. ''​precheck_trans''​ usage**
 +
 +<​code>​
 +...
 +modparam("​tmx",​ "​precheck_trans",​ 0)
 +...
 +</​code>​
 +
 +\\ ===== 4. Functions =====
 +
 +==== 4.1. t_cancel_branches(which) ====
 +
 +Cancel branches of an active SIP transaction. The function can be called for a SIP reply that will identify the current branch.
 +
 +Parameter can be:.
 +
 +  * all - cancel all branches. ​
 +  * others - cancel all branches but the current one. 
 +  * this - cancel current branch. ​
 +
 +This function can be used in ONREPLY_ROUTE.
 +
 +**Example 1.2. ''​t_cancel_branches''​ usage**
 +
 +<​code>​
 +...
 +if (t_cancel_branches("​all"​)) {
 +        xlog("​cancelled all branches\n"​);​
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.2. t_cancel_callid(callid,​ cseq, flag [, rcode]) ====
 +
 +Cancel first INVITE transaction identified by callid and cseq. It sets the flag if the value is greater than zero
 +
 +Parameters:​.
 +
 +  * callid - call-id value. ​
 +  * cseq - cseq number. ​
 +  * flag - index of the flag to set. 
 +  * rcode - code to be added as cause attribute in Reason header for generated CANCEL request. This parameter is optional. ​
 +
 +This function can be used in ANY_ROUTE.
 +
 +**Example 1.3. ''​t_cancel_callid''​ usage**
 +
 +<​code>​
 +...
 +if (t_cancel_callid("​123qaz",​ "​5",​ "​22"​)) {
 +        xlog("​transaction cancelled\n"​);​
 +}
 +...
 +if (t_cancel_callid("​123qaz",​ "​5",​ "​22",​ "​200"​)) {
 +        xlog("​transaction cancelled with [Reason: cause=200]\n"​);​
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.3. t_reply_callid(callid,​ cseq, code, reason) ====
 +
 +Send reply to first transaction identified by callid and cseq.
 +
 +Parameters:​.
 +
 +  * callid - call-id value. ​
 +  * cseq - cseq number. ​
 +  * code - reply code. 
 +  * reason - reply reason. ​
 +
 +This function can be used in ANY_ROUTE.
 +
 +**Example 1.4. ''​t_reply_callid''​ usage**
 +
 +<​code>​
 +...
 +if (t_reply_callid("​123qaz",​ "​5",​ "​458",​ "​Replied remotely"​)) {
 +        xlog("​transaction replied\n"​);​
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.4. t_flush_flags() ====
 +
 +Flush the flags from current SIP message into the already created transaction. It make sense only in routing block if the transaction was created via t_newtran() and the flags have been altered since.
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.5. ''​t_flush_flags''​ usage**
 +
 +<​code>​
 +...
 +t_flush_flags();​
 +...
 +</​code>​
 +
 +\\ ==== 4.5. t_is_failure_route() ====
 +
 +Returns true if the top-executed route block is failure_route.
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.6. ''​t_is_failure_route''​ usage**
 +
 +<​code>​
 +...
 +failure_route[xyz] {
 +    route(abc);
 +}
 +
 +route[abc] {
 +    if(t_is_failure_route()) { ... }
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.6. t_is_branch_route() ====
 +
 +Returns true if the top-executed route block is branch_route.
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.7. ''​t_is_branch_route''​ usage**
 +
 +<​code>​
 +...
 +branch_route[xyz] {
 +    route(abc);
 +}
 +
 +route[abc] {
 +    if(t_is_branch_route()) { ... }
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.7. t_is_reply_route() ====
 +
 +Returns true if the top-executed route block is reply_route.
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.8. ''​t_is_reply_route''​ usage**
 +
 +<​code>​
 +...
 +reply_route[xyz] {
 +    route(abc);
 +}
 +
 +route[abc] {
 +    if(t_is_reply_route()) { ... }
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.8. t_is_request_route() ====
 +
 +Returns true if the top-executed route block is request_route.
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.9. ''​t_is_request_route''​ usage**
 +
 +<​code>​
 +...
 +request_route[xyz] {
 +    route(abc);
 +}
 +
 +route[abc] {
 +    if(t_is_request_route()) { ... }
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.9. t_suspend() ====
 +
 +Suspend the execution of SIP request in a transaction. If transaction was not created yet, it is created by this function. Returns true in case of success and internal transaction index and label are available via $T(id_index) and $T(id_label).
 +
 +This function can be used from ANY_ROUTE .
 +
 +**Example 1.10. ''​t_suspend''​ usage**
 +
 +<​code>​
 +...
 +if(t_suspend())
 +{
 +    xlog("​proceesing suspended in trasaction [$T(id_index):​$T(id_label)]\n"​);​
 +    exit;
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.10. t_continue(tindex,​ tlabel, rtname) ====
 +
 +Continue the execution of the transaction identified by tindex and tlabel with the actions defined in route[rtname].
 +
 +Parameters:​.
 +
 +  * tindex - internal index of transaction. Can be an integer or a pseudo-variable. ​
 +  * tlabel - internal label of transaction. Can be an integer or a pseudo-variable. ​
 +  * rtname - the name of the route block to execute. Can be a static string value or a dynamic string with pseudo-variables. ​
 +
 +Important note: the route[rtname] is executed in the context of a failure (same behaviour for functions as they were used in a failure_route block).
 +
 +This function can be used in ANY_ROUTE.
 +
 +**Example 1.11. ''​t_continue''​ usage**
 +
 +<​code>​
 +...
 +t_continue('​123',​ '​456',​ '​MYROUTE'​);​
 +...
 +route[MYROUTE] {
 +  xlog("​executed by t continue\n"​);​
 +  ...
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.11. t_reuse_branch() ====
 +
 +Creates new "​main"​ branch by making copy of branch-failure branch. Currently the following branch attributes are copied from branch-failure branch: request-uri,​ ruid, path, instance, and branch flags.
 +
 +This function can be used from tm:​branch-failure event_route.
 +
 +**Example 1.12. ''​t_reuse_branch''​ usage**
 +
 +<​code>​
 +...
 +event_route [tm:​branch-failure:​contact] {
 +    t_reuse_branch();​
 +    setbflag(10);​
 +    t_relay();
 +    exit;
 +}
 +...
 +</​code>​
 +
 +\\ ==== 4.12. t_precheck_trans() ====
 +
 +Check if current processed message is handled by other process. This function is useful to catch retransmissions before transaction is created. The function returns true if the request is handled by another process.
 +
 +Note that ACK and CANCEL requests are not tracked by this function, the return code being false for them.
 +
 +This function can be used from REQUEST_ROUTE .
 +
 +**Example 1.13. ''​t_precheck_trans''​ usage**
 +
 +<​code>​
 +...
 +    # handle retransmissions
 +    if(t_precheck_trans()) {
 +        t_check_trans();​
 +        exit;
 +    }
 +    t_check_trans();​
 +...
 +</​code>​
 +
 +\\ ===== 5. Exported Variables =====
 +
 +  * $T_branch_idx ​
 +  * $T_reply_code ​
 +  * $T_reply_reason ​
 +  * $T_reply_last ​
 +  * $T_req(pv) ​
 +  * $T_rpl(pv) ​
 +  * $T_reply_ruid ​
 +  * $T_branch(name) ​
 +  * $T_inv(pv) ​
 +  * $T(name) ​
 +
 +Exported pseudo-variables are documented at [[https://​www.kamailio.org/​wiki/​|https://​www.kamailio.org/​wiki/​]].
 +
 +===== 6. Statistics =====
 +
 +Exported statistics are listed in the next sections. These statistics cannot be reset (see counters module for alternative).
 +
 +==== 6.1. UAS_transactions ====
 +
 +Total number of transactions created by received requests.
 +
 +==== 6.2. UAC_transactions ====
 +
 +Total number of transactions created by local generated requests.
 +
 +==== 6.3. 2xx_transactions ====
 +
 +Total number of transactions completed with 2xx replies.
 +
 +==== 6.4. 3xx_transactions ====
 +
 +Total number of transactions completed with 3xx replies.
 +
 +==== 6.5. 4xx_transactions ====
 +
 +Total number of transactions completed with 4xx replies.
 +
 +==== 6.6. 5xx_transactions ====
 +
 +Total number of transactions completed with 5xx replies.
 +
 +==== 6.7. 6xx_transactions ====
 +
 +Total number of transactions completed with 6xx replies.
 +
 +==== 6.8. inuse_transactions ====
 +
 +Number of transactions existing in memory at current time.
 +
 +==== 6.9. active_transactions ====
 +
 +Number of ongoing transactions at current time.
 +
 +==== 6.10. rpl_received ====
 +
 +Total number of replies received by TM module.
 +
 +==== 6.11. rpl_absorbed ====
 +
 +Total number of replies received and not relayed by TM module.
 +
 +==== 6.12. rpl_relayed ====
 +
 +Total number of replies received and relayed by TM module.
 +
 +==== 6.13. rpl_generated ====
 +
 +Total number of replies locally generated and relayed by TM module.
 +
 +==== 6.14. rpl_sent ====
 +
 +Total number of replies relayed by TM module.
tmx_transaction_management_extenstions_module_released.txt · 最后更改: 2017/09/11 17:29 由 james_zhu