Sip audio session

Version 13 (Adrian Georgescu, 04/13/2009 10:50 am)

1 1 Adrian Georgescu
== sip_audio_session ==
2 2 Adrian Georgescu
[[TOC(SipTesting*, sip_*, xcap*,depth=2)]]
3 1 Adrian Georgescu
4 1 Adrian Georgescu
=== Description ===
5 1 Adrian Georgescu
6 1 Adrian Georgescu
This script can be used for interactive audio session or for scripting alarms. The script returns appropriate shell response codes for failed or successful sessions. The script can be setup to auto answer and auto hangup after predefined number of seconds, detects SIP negative response codes, missing ACK and the lack of RTP media after a session has been established.
7 6 Adrian Georgescu
8 10 Adrian Georgescu
[[Image(http://www.tech-invite.com/img/cf3665/cf3665-32.gif)]]
9 1 Adrian Georgescu
10 1 Adrian Georgescu
Source code: [source:scripts/sip_audio_session.py scripts/sip_audio_session.py]
11 1 Adrian Georgescu
12 1 Adrian Georgescu
{{{
13 5 Adrian Georgescu
adigeo@ag-oxygen:~$sip_audio_session --help
14 1 Adrian Georgescu
Usage: sip_audio_session [options] [target-user@target-domain.com]
15 1 Adrian Georgescu
16 1 Adrian Georgescu
This script can sit idle waiting for an incoming audio call, or perform an
17 1 Adrian Georgescu
outgoing audio call to the target SIP account. The program will close the
18 1 Adrian Georgescu
session and quit when Ctrl+D is pressed.
19 1 Adrian Georgescu
20 1 Adrian Georgescu
Options:
21 1 Adrian Georgescu
  -h, --help            show this help message and exit
22 5 Adrian Georgescu
  -a NAME, --account=NAME
23 5 Adrian Georgescu
                        The account name to use for any outgoing traffic. If
24 5 Adrian Georgescu
                        not supplied, the default account will be used.
25 5 Adrian Georgescu
  -c [FILE], --config_file=[FILE]
26 5 Adrian Georgescu
                        The path to a configuration file to use. This
27 5 Adrian Georgescu
                        overrides the default location of the configuration
28 5 Adrian Georgescu
                        file.
29 5 Adrian Georgescu
  -s [stdout|file|all|none], --trace-sip=[stdout|file|all|none]
30 5 Adrian Georgescu
                        Dump the raw contents of incoming and outgoing SIP
31 5 Adrian Georgescu
                        messages. The argument specifies where the messages
32 5 Adrian Georgescu
                        are to be dumped.
33 5 Adrian Georgescu
  -j [stdout|file|all|none], --trace-pjsip=[stdout|file|all|none]
34 5 Adrian Georgescu
                        Print PJSIP logging output. The argument specifies
35 1 Adrian Georgescu
                        where the messages are to be dumped.
36 5 Adrian Georgescu
  -S, --disable-sound   Disables initializing the sound card.
37 5 Adrian Georgescu
  --auto-answer         Interval after which to answer an incoming call
38 5 Adrian Georgescu
                        (disabled by default). If the option is specified but
39 5 Adrian Georgescu
                        the interval is not, it defaults to 0 (answer the call
40 5 Adrian Georgescu
                        as soon as it starts ringing).
41 1 Adrian Georgescu
  --auto-hangup         Interval after which to hangup an on-going call
42 1 Adrian Georgescu
                        (applies only to outgoing calls, disabled by default).
43 1 Adrian Georgescu
                        If the option is specified but the interval is not, it
44 1 Adrian Georgescu
                        defaults to 0 (hangup the call as soon as it
45 1 Adrian Georgescu
                        connects).
46 1 Adrian Georgescu
}}}
47 1 Adrian Georgescu
48 1 Adrian Georgescu
49 1 Adrian Georgescu
=== Example for incoming session ===
50 1 Adrian Georgescu
51 1 Adrian Georgescu
{{{
52 7 Adrian Georgescu
adigeo@ag-imac3:~$sip_audio_session
53 7 Adrian Georgescu
Using account 31208005169@ag-projects.com
54 1 Adrian Georgescu
Available control keys:
55 1 Adrian Georgescu
  h: hang-up the active session
56 1 Adrian Georgescu
  r: toggle audio recording
57 1 Adrian Georgescu
  t: toggle SIP trace on the console
58 7 Adrian Georgescu
  j: toggle PJSIP trace on the console
59 1 Adrian Georgescu
  <> : adjust echo cancellation
60 1 Adrian Georgescu
  SPACE: hold/on-hold
61 1 Adrian Georgescu
  Ctrl-d: quit the program
62 1 Adrian Georgescu
  ?: display this help message
63 7 Adrian Georgescu
Succesfully registered using contact "sip:cwntuzyl@192.168.1.6:61163"
64 1 Adrian Georgescu
Detected NAT type: Port Restricted
65 7 Adrian Georgescu
Incoming audio session from ""Adrian G." <sip:31208005169@ag-projects.com>", do you want to accept? (y/n)
66 7 Adrian Georgescu
Session established, using "PCMU" codec at 8000Hz
67 7 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:50132 <-> 85.17.186.7:53358
68 7 Adrian Georgescu
Remote SIP User Agent is "CSCO/7"
69 7 Adrian Georgescu
Session ended by remote party.
70 7 Adrian Georgescu
Session duration was 3 seconds
71 7 Adrian Georgescu
72 1 Adrian Georgescu
}}}
73 1 Adrian Georgescu
74 1 Adrian Georgescu
=== Example for outgoing session ===
75 1 Adrian Georgescu
76 1 Adrian Georgescu
{{{
77 7 Adrian Georgescu
adigeo@ag-imac3:~$sip_audio_session ag@ag-projects.com
78 7 Adrian Georgescu
Using account 31208005169@ag-projects.com
79 8 Adrian Georgescu
Initiating SIP session from "Adrian G." <sip:31208005169@ag-projects.com> to 
80 8 Adrian Georgescu
sip:ag@ag-projects.com via udp:81.23.228.150:5060 ...
81 1 Adrian Georgescu
Available control keys:
82 1 Adrian Georgescu
  h: hang-up the active session
83 1 Adrian Georgescu
  r: toggle audio recording
84 1 Adrian Georgescu
  t: toggle SIP trace on the console
85 7 Adrian Georgescu
  j: toggle PJSIP trace on the console
86 1 Adrian Georgescu
  <> : adjust echo cancellation
87 1 Adrian Georgescu
  SPACE: hold/on-hold
88 1 Adrian Georgescu
  Ctrl-d: quit the program
89 1 Adrian Georgescu
  ?: display this help message
90 7 Adrian Georgescu
Succesfully registered using contact "sip:ztomvpis@192.168.1.6:61215"
91 1 Adrian Georgescu
Ringing...
92 1 Adrian Georgescu
Session established, using "speex" codec at 32000Hz
93 7 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:50374 <-> 81.23.228.129:52156
94 7 Adrian Georgescu
Remote SIP User Agent is "sip2sip-0.9.0-pjsip-1.0.2-trunk-r2553"
95 7 Adrian Georgescu
Detected NAT type: Port Restricted
96 7 Adrian Georgescu
Ending session...
97 7 Adrian Georgescu
Session ended by local party.
98 7 Adrian Georgescu
Session duration was 12 seconds
99 1 Adrian Georgescu
}}}
100 11 Adrian Georgescu
101 11 Adrian Georgescu
102 11 Adrian Georgescu
=== Example for bonjour mode ===
103 11 Adrian Georgescu
104 11 Adrian Georgescu
In bonjour mode no server is used. This mode is useful for serverless ad-hoc LAN operation. 
105 11 Adrian Georgescu
106 11 Adrian Georgescu
> The actual bonjour protocol that uses multicast DNS to broadcast the contact SIP URIs is not implemented.
107 11 Adrian Georgescu
108 11 Adrian Georgescu
[[Image(http://www.tech-invite.com/img/cf3665/cf3665-31.gif)]]
109 11 Adrian Georgescu
110 12 Adrian Georgescu
'''Called party'''
111 12 Adrian Georgescu
112 1 Adrian Georgescu
{{{
113 12 Adrian Georgescu
adigeo@ag-imac3:~$sip_audio_session -a bonjour@local
114 11 Adrian Georgescu
Using account bonjour@local
115 12 Adrian Georgescu
Listening on "sip:wjnrczhi@192.168.1.6:57624;transport=tls"
116 12 Adrian Georgescu
Listening on "sip:wjnrczhi@192.168.1.6:57623;transport=tcp"
117 12 Adrian Georgescu
Listening on "sip:wjnrczhi@192.168.1.6:61994"
118 11 Adrian Georgescu
Available control keys:
119 11 Adrian Georgescu
  h: hang-up the active session
120 11 Adrian Georgescu
  r: toggle audio recording
121 1 Adrian Georgescu
  t: toggle SIP trace on the console
122 1 Adrian Georgescu
  j: toggle PJSIP trace on the console
123 11 Adrian Georgescu
  <> : adjust echo cancellation
124 11 Adrian Georgescu
  SPACE: hold/on-hold
125 11 Adrian Georgescu
  Ctrl-d: quit the program
126 11 Adrian Georgescu
  ?: display this help message
127 12 Adrian Georgescu
Incoming audio session from "sip:imdyzosg@192.168.1.6", do you want to accept? (y/n)
128 1 Adrian Georgescu
Session established, using "speex" codec at 32000Hz
129 12 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:50276 <-> 192.168.1.6:50100
130 1 Adrian Georgescu
RTP audio stream is encrypted
131 1 Adrian Georgescu
Remote SIP User Agent is "sip2sip-0.9.0-pjsip-1.0.2-trunk-r2553"
132 12 Adrian Georgescu
Session ended by remote party.
133 11 Adrian Georgescu
Session duration was 5 seconds
134 11 Adrian Georgescu
}}}
135 11 Adrian Georgescu
136 12 Adrian Georgescu
'''Calling party'''
137 12 Adrian Georgescu
138 11 Adrian Georgescu
{{{
139 12 Adrian Georgescu
adigeo@ag-imac3:~$sip_audio_session -a bonjour@local "sip:wjnrczhi@192.168.1.6:57624;transport=tls"
140 1 Adrian Georgescu
Using account bonjour@local
141 12 Adrian Georgescu
Listening on "sip:imdyzosg@192.168.1.6:57626;transport=tls"
142 12 Adrian Georgescu
Listening on "sip:imdyzosg@192.168.1.6:57625;transport=tcp"
143 12 Adrian Georgescu
Listening on "sip:imdyzosg@192.168.1.6:62008"
144 12 Adrian Georgescu
Initiating SIP session from sip:imdyzosg@192.168.1.6 to sip:wjnrczhi@192.168.1.6:57624;transport=tls via tls:192.168.1.6:57624 ...
145 11 Adrian Georgescu
Available control keys:
146 11 Adrian Georgescu
  h: hang-up the active session
147 11 Adrian Georgescu
  r: toggle audio recording
148 11 Adrian Georgescu
  t: toggle SIP trace on the console
149 11 Adrian Georgescu
  j: toggle PJSIP trace on the console
150 11 Adrian Georgescu
  <> : adjust echo cancellation
151 11 Adrian Georgescu
  SPACE: hold/on-hold
152 11 Adrian Georgescu
  Ctrl-d: quit the program
153 11 Adrian Georgescu
  ?: display this help message
154 12 Adrian Georgescu
Ringing...
155 11 Adrian Georgescu
Session established, using "speex" codec at 32000Hz
156 12 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:50100 <-> 192.168.1.6:50276
157 11 Adrian Georgescu
RTP audio stream is encrypted
158 11 Adrian Georgescu
Remote SIP User Agent is "sip2sip-0.9.0-pjsip-1.0.2-trunk-r2553"
159 12 Adrian Georgescu
Ending session...
160 12 Adrian Georgescu
Session ended by local party.
161 1 Adrian Georgescu
Session duration was 5 seconds
162 1 Adrian Georgescu
}}}