Sip audio session

Version 5 (Adrian Georgescu, 03/23/2009 07:04 pm)

1 1 Adrian Georgescu
== sip_audio_session ==
2 2 Adrian Georgescu
[[TOC(SipTesting*, sip_*, xcap*,depth=2)]]
3 1 Adrian Georgescu
4 3 Adrian Georgescu
To use this script you must to have a valid [wiki:SipSettingsAPI configuration].
5 4 Adrian Georgescu
[[Image(http://www.tech-invite.com/img/cf3665/cf3665-31.gif, align=right)]]
6 1 Adrian Georgescu
7 1 Adrian Georgescu
=== Description ===
8 1 Adrian Georgescu
9 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.
10 1 Adrian Georgescu
11 1 Adrian Georgescu
Source code: [source:scripts/sip_audio_session.py scripts/sip_audio_session.py]
12 1 Adrian Georgescu
13 1 Adrian Georgescu
{{{
14 5 Adrian Georgescu
adigeo@ag-oxygen:~$sip_audio_session --help
15 1 Adrian Georgescu
Usage: sip_audio_session [options] [target-user@target-domain.com]
16 1 Adrian Georgescu
17 1 Adrian Georgescu
This script can sit idle waiting for an incoming audio call, or perform an
18 1 Adrian Georgescu
outgoing audio call to the target SIP account. The program will close the
19 1 Adrian Georgescu
session and quit when Ctrl+D is pressed.
20 1 Adrian Georgescu
21 1 Adrian Georgescu
Options:
22 1 Adrian Georgescu
  -h, --help            show this help message and exit
23 5 Adrian Georgescu
  -a NAME, --account=NAME
24 5 Adrian Georgescu
                        The account name to use for any outgoing traffic. If
25 5 Adrian Georgescu
                        not supplied, the default account will be used.
26 5 Adrian Georgescu
  -c [FILE], --config_file=[FILE]
27 5 Adrian Georgescu
                        The path to a configuration file to use. This
28 5 Adrian Georgescu
                        overrides the default location of the configuration
29 5 Adrian Georgescu
                        file.
30 5 Adrian Georgescu
  -s [stdout|file|all|none], --trace-sip=[stdout|file|all|none]
31 5 Adrian Georgescu
                        Dump the raw contents of incoming and outgoing SIP
32 5 Adrian Georgescu
                        messages. The argument specifies where the messages
33 5 Adrian Georgescu
                        are to be dumped.
34 5 Adrian Georgescu
  -j [stdout|file|all|none], --trace-pjsip=[stdout|file|all|none]
35 5 Adrian Georgescu
                        Print PJSIP logging output. The argument specifies
36 1 Adrian Georgescu
                        where the messages are to be dumped.
37 5 Adrian Georgescu
  -S, --disable-sound   Disables initializing the sound card.
38 5 Adrian Georgescu
  --auto-answer         Interval after which to answer an incoming call
39 5 Adrian Georgescu
                        (disabled by default). If the option is specified but
40 5 Adrian Georgescu
                        the interval is not, it defaults to 0 (answer the call
41 5 Adrian Georgescu
                        as soon as it starts ringing).
42 1 Adrian Georgescu
  --auto-hangup         Interval after which to hangup an on-going call
43 1 Adrian Georgescu
                        (applies only to outgoing calls, disabled by default).
44 1 Adrian Georgescu
                        If the option is specified but the interval is not, it
45 1 Adrian Georgescu
                        defaults to 0 (hangup the call as soon as it
46 1 Adrian Georgescu
                        connects).
47 1 Adrian Georgescu
}}}
48 1 Adrian Georgescu
49 1 Adrian Georgescu
50 1 Adrian Georgescu
=== Example for incoming session ===
51 1 Adrian Georgescu
52 1 Adrian Georgescu
{{{
53 1 Adrian Georgescu
adigeo@ag-imac3:~/Business/Personal$sip_audio_session 
54 1 Adrian Georgescu
Accounts available: 'alice', 'as', 'bob', 'ew', 'ewt', 'mrg', 'pbx', 's', 'tf', 'umts', 'umts_test', 'unet', 'unet_test', default
55 1 Adrian Georgescu
Using default account: 31208005169@ag-projects.com
56 1 Adrian Georgescu
Registering ""Adrian G." <sip:31208005169@ag-projects.com>" at 81.23.228.129:5060
57 1 Adrian Georgescu
REGISTER was successful
58 1 Adrian Georgescu
Contact: sip:HZ1BYFQtHR@192.168.1.6:49421;transport=udp (expires in 300 seconds)
59 1 Adrian Georgescu
Available control keys:
60 1 Adrian Georgescu
  h: hang-up the active session
61 1 Adrian Georgescu
  r: toggle audio recording
62 1 Adrian Georgescu
  t: toggle SIP trace on the console
63 1 Adrian Georgescu
  <> : adjust echo cancellation
64 1 Adrian Georgescu
  SPACE: hold/on-hold
65 1 Adrian Georgescu
  Ctrl-d: quit the program
66 1 Adrian Georgescu
  ?: display this help message
67 1 Adrian Georgescu
Waiting for incoming session...
68 1 Adrian Georgescu
Detected NAT type: Port Restricted
69 1 Adrian Georgescu
Incoming session...
70 1 Adrian Georgescu
Incoming audio session from "sip:adi@umts.ro", do you want to accept? (y/n)
71 1 Adrian Georgescu
Session established, using "speex" codec at 32000Hz
72 1 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:40064 <-> 81.23.228.150:56618
73 1 Adrian Georgescu
Remote SIP User Agent is "sip2sip-0.4.0-pjsip-1.0.1-r2453"
74 1 Adrian Georgescu
Call is put on hold
75 1 Adrian Georgescu
Call is taken out of hold
76 1 Adrian Georgescu
Ending session...
77 1 Adrian Georgescu
Session ended by local party.
78 1 Adrian Georgescu
Session duration was 6 seconds
79 1 Adrian Georgescu
}}}
80 1 Adrian Georgescu
81 1 Adrian Georgescu
=== Example for outgoing session ===
82 1 Adrian Georgescu
83 1 Adrian Georgescu
{{{
84 1 Adrian Georgescu
adigeo@ag-imac3:~$sip -a umts ag@ag-projects.com
85 1 Adrian Georgescu
Accounts available: 'alice', 'as', 'bob', 'ew', 'ewt', 'mrg', 'pbx', 's', 'tf', 'umts', 'umts_test', 'unet', 'unet_test', default
86 1 Adrian Georgescu
Using account 'umts': adi@umts.ro
87 1 Adrian Georgescu
Call from "Adi UMTS" <sip:adi@umts.ro> to sip:ag@ag-projects.com through proxy udp:85.17.186.7:5060
88 1 Adrian Georgescu
Available control keys:
89 1 Adrian Georgescu
  h: hang-up the active session
90 1 Adrian Georgescu
  r: toggle audio recording
91 1 Adrian Georgescu
  t: toggle SIP trace on the console
92 1 Adrian Georgescu
  <> : adjust echo cancellation
93 1 Adrian Georgescu
  SPACE: hold/on-hold
94 1 Adrian Georgescu
  Ctrl-d: quit the program
95 1 Adrian Georgescu
  ?: display this help message
96 1 Adrian Georgescu
Ringing...
97 1 Adrian Georgescu
Ringing...
98 1 Adrian Georgescu
Ringing...
99 1 Adrian Georgescu
Session established, using "speex" codec at 32000Hz
100 1 Adrian Georgescu
Audio RTP endpoints 192.168.1.6:40048 <-> 81.23.228.150:56616
101 1 Adrian Georgescu
Remote SIP User Agent is "sip2sip-0.4.0-pjsip-1.0.1-r2453"
102 1 Adrian Georgescu
Remote party has put the call on hold
103 1 Adrian Georgescu
Remote party has taken the call out of hold
104 1 Adrian Georgescu
Session ended by remote party.
105 1 Adrian Georgescu
Session duration was 6 seconds
106 1 Adrian Georgescu
107 1 Adrian Georgescu
}}}
108 1 Adrian Georgescu
109 1 Adrian Georgescu
110 1 Adrian Georgescu
=== Ongoing sessions ===
111 1 Adrian Georgescu
112 1 Adrian Georgescu
During an ongoing session you can record the audio stream in a file by pressing r. You can hangup by pressing h.