[Kamailio-Users] ACC module issue logging Reason: SIP header in missed_calls
sergejf
serge at elasticall.com
Wed Nov 19 00:07:55 CET 2008
We are trying to configure the ACC module to log the Reason: header found in
SIP BYE and SIP 4xx messages sent by US carriers when making calls to the
PSTN.
We have added a cause field (the Reason header contains the Q.850 cause code
associated with telephony events, typically disconnect) to the acc and
missed_calls tables (see tables description further below) and changed
opensips.cfg to read that header and store it:
modparam("acc", "db_flag", 2)
modparam("acc", "db_missed_flag", 3)
modparam("acc", "db_url", "mysql://root:password@localhost/opensips")
modparam("acc", "db_extra",
"from_uri=$fu;to_uri=$tu;request_uri=$ru;cause=$(hdr(Reason))")
This works quite nicely for calls logged in the acc table, such as:
mysql> select * from acc where date(time) = curdate() and (cause like
'%850%') limit 1;
+---------+--------+---------------+-----------------------+-----------------------------------------------------+----------+------------+---------------------+---------------------------------+---------------------------------+-----------------------------------+----------------+
| id | method | from_tag | to_tag | callid
| sip_code | sip_reason | time | from_uri
| to_uri | request_uri |
cause |
+---------+--------+---------------+-----------------------+-----------------------------------------------------+----------+------------+---------------------+---------------------------------+---------------------------------+-----------------------------------+----------------+
| 1903785 | BYE | 627B7414-1509 | telstage-3e5-492294f9 |
492294f9-0127-00105838-0657a1e7-22e4c653 at 88.88.88.88 | 200 | Ok
| 2008-11-18 05:12:55 | sip:+5599999999 at 99.99.99.99 |
sip:+15555555555 at 88.88.88.88:5060 | sip:88.88.88.88:5060;transport=udp |
Q.850;cause=16 |
+---------+--------+---------------+-----------------------+-----------------------------------------------------+----------+------------+---------------------+---------------------------------+---------------------------------+-----------------------------------+----------------+
1 row in set (1.58 sec)
The cause field contains "Q.850;cause=16" taken from the Reason: header.
However, the same Reason: header is NOT logged for calls found in the
missed_calls table:
mysql> select * from missed_calls where date(time) = curdate() and sip_code
= 480 limit 1;
+---------+--------+------------------------+--------------+-----------------------------------------------------+----------+---------------------------+---------------------+---------------------------------+---------------------------------+---------------------------------+-------+
| id | method | from_tag | to_tag | callid
| sip_code | sip_reason | time | from_uri
| to_uri | request_uri | cause
|
+---------+--------+------------------------+--------------+-----------------------------------------------------+----------+---------------------------+---------------------+---------------------------------+---------------------------------+---------------------------------+-------+
| 1231364 | INVITE | telstage-5d06-492293b5 | 627682C8-40F |
492293b5-0154-0013be65-6d9882a2-bafcf3d3 at 88.88.88.88 | 480 |
Temporarily Not Available | 2008-11-18 05:06:51 |
sip:+15555555555 at 88.88.88.88:5060 | sip:+5599999999 at 63.63.63.63 |
sip:69085599999999 at 200.0.0.0 | |
+---------+--------+------------------------+--------------+-----------------------------------------------------+----------+---------------------------+---------------------+---------------------------------+---------------------------------+---------------------------------+-------+
1 row in set (1.09 sec)
Note that the cause field is empty, while the OpenSIPS logs clearly show a
Reason: header present in the SIP 480 message:
Nov 18 05:06:51 sip100 /usr/local/sbin/opensips[20355]: TRACE:ONREPLY_ROUTE:
src(200.0.0.0:5060) dst(63.63.63.63:5060) msg(SIP/2.0 480 Temporarily Not
Available^M Via: SIP/2.0/UDP
63.63.63.63;branch=z9hG4bK96cf.a009bc13.0,SIP/2.0/UDP
88.88.88.88:5060;branch=z9hG4bK492293b5-0154-0013be66-6d9882a2-bafcf3d3^M
From: <sip:+15555555555 at 88.88.88.88:5060>;tag=telstage-5d06-492293b5^M To:
sip:+5599999999 at 63.63.63.63;tag=627682C8-40F^M Date: Tue, 18 Nov 2008
10:06:45 GMT^M Call-ID:
492293b5-0154-0013be65-6d9882a2-bafcf3d3 at 88.88.88.88^M Server:
Cisco-SIPGateway/IOS-12.x^M CSeq: 13960 INVITE^M Allow-Events:
telephone-event^M Reason: Q.850;cause=18^M Content-Length: 0^M ^M )
Is this a bug from the ACC module or a limitation, i.e. SIP 4xx messages are
not handled in the same way as the BYE messages in the acc table?
Any advice would be most appreciated!!
Serge
PS: here are the schemas we're using for the acc and missed_calls tables:
mysql> describe acc;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| method | varchar(16) | NO | | | |
| from_tag | varchar(64) | NO | | | |
| to_tag | varchar(64) | NO | | | |
| callid | varchar(64) | NO | MUL | | |
| sip_code | varchar(3) | NO | | | |
| sip_reason | varchar(32) | NO | | | |
| time | datetime | NO | | | |
| from_uri | varchar(64) | NO | | | |
| to_uri | varchar(64) | NO | | | |
| request_uri | varchar(64) | NO | | | |
| cause | varchar(60) | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
mysql> describe missed_calls;
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| method | varchar(16) | NO | | | |
| from_tag | varchar(64) | NO | | | |
| to_tag | varchar(64) | NO | | | |
| callid | varchar(64) | NO | MUL | | |
| sip_code | varchar(3) | NO | | | |
| sip_reason | varchar(32) | NO | | | |
| time | datetime | NO | | | |
| from_uri | varchar(64) | NO | | | |
| to_uri | varchar(64) | NO | | | |
| request_uri | varchar(64) | NO | | | |
| cause | varchar(60) | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
--
View this message in context: http://www.nabble.com/ACC-module-issue-logging-Reason%3A-SIP-header-in-missed_calls-tp20569925p20569925.html
Sent from the OpenSER Users Mailing List mailing list archive at Nabble.com.
More information about the Users
mailing list