
TMX Module

Daniel-Constantin Mierla

   asipto.com
   <miconda@gmail.com>

Edited by

Daniel-Constantin Mierla

   <miconda@gmail.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. Functions

              3.1. t_cancel_branches(which) 
              3.2. t_cancel_callid(callid, cseq, flag) 
              3.3. t_reply_callid(callid, cseq, code, reason) 
              3.4. t_flush_flags() 
              3.5. t_is_failure_route() 
              3.6. t_is_branch_route() 
              3.7. t_is_reply_route() 
              3.8. t_suspend() 
              3.9. t_continue(tindex, tlabel, rtname) 

        4. Exported pseudo-variables
        5. MI Commands

              5.1. t_uac_dlg 
              5.2. t_uac_cancel 
              5.3. t_hash 
              5.4. t_reply 
              5.5. t_reply_callid 

        6. Statistics

              6.1. received_replies
              6.2. relayed_replies
              6.3. local_replies
              6.4. UAS_transactions
              6.5. UAC_transactions
              6.6. 2xx_transactions
              6.7. 3xx_transactions
              6.8. 4xx_transactions
              6.9. 5xx_transactions
              6.10. 6xx_transactions
              6.11. inuse_transactions

   List of Examples

   1.1. t_cancel_branches usage
   1.2. t_cancel_callid usage
   1.3. t_reply_callid usage
   1.4. t_flush_flags usage
   1.5. t_is_failure_route usage
   1.6. t_is_branch_route usage
   1.7. t_is_reply_route usage
   1.8. t_suspend usage
   1.9. t_continue usage

Chapter 1. Admin Guide

   Table of Contents

   1. Overview
   2. Dependencies

        2.1. Kamailio Modules
        2.2. External Libraries or Applications

   3. Functions

        3.1. t_cancel_branches(which) 
        3.2. t_cancel_callid(callid, cseq, flag) 
        3.3. t_reply_callid(callid, cseq, code, reason) 
        3.4. t_flush_flags() 
        3.5. t_is_failure_route() 
        3.6. t_is_branch_route() 
        3.7. t_is_reply_route() 
        3.8. t_suspend() 
        3.9. t_continue(tindex, tlabel, rtname) 

   4. Exported pseudo-variables
   5. MI Commands

        5.1. t_uac_dlg 
        5.2. t_uac_cancel 
        5.3. t_hash 
        5.4. t_reply 
        5.5. t_reply_callid 

   6. Statistics

        6.1. received_replies
        6.2. relayed_replies
        6.3. local_replies
        6.4. UAS_transactions
        6.5. UAC_transactions
        6.6. 2xx_transactions
        6.7. 3xx_transactions
        6.8. 4xx_transactions
        6.9. 5xx_transactions
        6.10. 6xx_transactions
        6.11. inuse_transactions

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/1.5.x/tm.html

2. Dependencies

   2.1. Kamailio Modules
   2.2. External Libraries or Applications

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. Functions

   3.1. t_cancel_branches(which) 
   3.2. t_cancel_callid(callid, cseq, flag) 
   3.3. t_reply_callid(callid, cseq, code, reason) 
   3.4. t_flush_flags() 
   3.5. t_is_failure_route() 
   3.6. t_is_branch_route() 
   3.7. t_is_reply_route() 
   3.8. t_suspend() 
   3.9. t_continue(tindex, tlabel, rtname) 

3.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.1. t_cancel_branches usage
...
if (t_cancel_branches("all")) {
        xlog("cancelled all branches\n");
}
...

3.2.  t_cancel_callid(callid, cseq, flag)

   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.

   This function can be used in ANY_ROUTE.

   Example 1.2. t_cancel_callid usage
...
if (t_cancel_callid("123qaz", "5", "22")) {
        xlog("transaction cancelled\n");
}
...

3.3.  t_reply_callid(callid, cseq, code, reason)

   Send reply to first INVITE 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.3. t_reply_callid usage
...
if (t_reply_callid("123qaz", "5", "458", "Replied remotely")) {
        xlog("transaction replied\n");
}
...

3.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.4. t_flush_flags usage
...
t_flush_flags();
...

3.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.5. t_is_failure_route usage
...
failure_route[xyz] {
    route(abc);
}

route[abc] {
    if(t_is_failure_route()) { ... }
}
...

3.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.6. t_is_branch_route usage
...
branch_route[xyz] {
    route(abc);
}

route[abc] {
    if(t_is_branch_route()) { ... }
}
...

3.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.7. t_is_reply_route usage
...
reply_route[xyz] {
    route(abc);
}

route[abc] {
    if(t_is_reply_route()) { ... }
}
...

3.8.  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.8. t_suspend usage
...
if(t_suspend())
{
    xlog("proceesing suspended in trasaction [$T(id_index):$T(id_label)]\n");
    exit;
}
...

3.9.  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.

   This function can be used in ANY_ROUTE.

   Example 1.9. t_continue usage
...
tcontinue('123', '456', 'MYROUTE');
...

4. Exported pseudo-variables

     * $T_branch_idx
     * $T_reply_code
     * $T_reply_reason
     * $T_reply_last
     * $T_req(pv)
     * $T_rpl(pv)
     * $T_reply_ruid

   Exported pseudo-variables are documented at
   http://www.kamailio.org/dokuwiki/.

5. MI Commands

   5.1. t_uac_dlg 
   5.2. t_uac_cancel 
   5.3. t_hash 
   5.4. t_reply 
   5.5. t_reply_callid 

5.1.  t_uac_dlg

   Generates and sends a local SIP request.

   Parameters:
     * method - request method
     * RURI - request SIP URI
     * NEXT HOP - next hop SIP URI (OBP); use "." if no value.
     * socket  - local socket to be used for sending the request; use "."
       if no value.
     * headers - set of additional headers to be added to the request; at
       least "From" and "To" headers must be specify)
     * body  -  (optional,  may not be present) request body (if present,
       requires the "Content-Type" and "Content-length" headers)

5.2.  t_uac_cancel

   Generates and sends a CANCEL for an existing local SIP request.

   Parameters:
     * callid - callid of the INVITE request to be cancelled.
     * cseq - cseq of the INVITE request to be cancelled.

5.3.  t_hash

   Gets information about the load of TM internal hash table.

   Parameters:
     * none

5.4.  t_reply

   Generates and sends a reply for an existing inbound SIP transaction.

   Parameters:
     * code - reply code
     * reason - reason phrase.
     * trans_id   -  transaction  identifier  (has  the  hash_entry:label
       format)
     * to_tag - To tag to be added to TO header
     * new_headers - extra headers to be appended to the reply; use a dot
       (".") char only if there are no headers;
     * body  -  (optional,  may  not  be present) reply body (if present,
       requires the "Content-Type" and "Content-length" headers)

5.5.  t_reply_callid

   Generates and sends a reply for an existing inbound SIP transaction.

   Parameters:
     * code - reply code
     * reason - reason phrase.
     * callid - SIP Call-ID header
     * cseq - SIP CSeq header
     * to_tag - To tag to be added to TO header
     * new_headers - extra headers to be appended to the reply; use a dot
       (".") char only if there are no headers;
     * body  -  (optional,  may  not  be present) reply body (if present,
       requires the "Content-Type" and "Content-length" headers)

6. Statistics

   6.1. received_replies
   6.2. relayed_replies
   6.3. local_replies
   6.4. UAS_transactions
   6.5. UAC_transactions
   6.6. 2xx_transactions
   6.7. 3xx_transactions
   6.8. 4xx_transactions
   6.9. 5xx_transactions
   6.10. 6xx_transactions
   6.11. inuse_transactions

   Exported  statistics  are  listed in the next sections. All statistics
   except "inuse_transactions" can be reset.

6.1. received_replies

   Total number of total replies received by TM module.

6.2. relayed_replies

   Total number of replies received and relayed by TM module.

6.3. local_replies

   Total number of replies local generated by TM module.

6.4. UAS_transactions

   Total number of transactions created by received requests.

6.5. UAC_transactions

   Total number of transactions created by local generated requests.

6.6. 2xx_transactions

   Total number of transactions completed with 2xx replies.

6.7. 3xx_transactions

   Total number of transactions completed with 3xx replies.

6.8. 4xx_transactions

   Total number of transactions completed with 4xx replies.

6.9. 5xx_transactions

   Total number of transactions completed with 5xx replies.

6.10. 6xx_transactions

   Total number of transactions completed with 6xx replies.

6.11. inuse_transactions

   Number of transactions existing in memory at current time.
