[SIP Beyond VoIP] SIPBeyondVoIP Digest, Vol 49, Issue 3

Janusz Kowalczyk kowalczykjanusz at gmail.com
Tue Jun 25 17:09:31 CEST 2013


Oopss I referred to a wrong script :)
It shoul be the waveplayer example and not the james bond one :)
https://github.com/saghul/sipsimple-examples/blob/master/sipsimple_waveplayer.py

J


On 25 June 2013 16:17, <sipbeyondvoip-request at lists.ag-projects.com> wrote:

> Send SIPBeyondVoIP mailing list submissions to
>         sipbeyondvoip at lists.ag-projects.com
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.ag-projects.com/mailman/listinfo/sipbeyondvoip
> or, via email, send a message with subject or body 'help' to
>         sipbeyondvoip-request at lists.ag-projects.com
>
> You can reach the person managing the list at
>         sipbeyondvoip-owner at lists.ag-projects.com
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of SIPBeyondVoIP digest..."
>
>
> Today's Topics:
>
>    1. Missing incoming RTP stream (Janusz Kowalczyk)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 25 Jun 2013 15:55:23 +0100
> From: Janusz Kowalczyk <kowalczykjanusz at gmail.com>
> To: sipbeyondvoip at lists.ag-projects.com
> Subject: [SIP Beyond VoIP] Missing incoming RTP stream
> Message-ID:
>         <CAPuP8+OA2LjgrKV6rPzn=
> SyoGSLXQNz_2FanVe-Q-6DmMBatpw at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi Guys,
>
> I'm trying to use SipSimple SDK write test scripts that will be executed
> with fabric on a remote machine without a soundcard (ie. Amazon EC2) and
> which would dial in to our voice service and play back some wav files
> and/or DTMF's.
>
>
> At the moment I'm trying to use modified version of Saul's "jamesbond"
> script
> https://github.com/saghul/sipsimple-examples/tree/master/jamesbond
> to make a call and play a wav file once call is established. Modified
> script is at the end of email.
>
> The problem is that there's no incoming RTP stream. I doubled check
> firewall rules and UDP traffic is allowed on all ports. I've attached a
> pcap file from an example call.
>
> I'd be grateful if you could help me to figure out what's the problem.
>
> btw. Is there a good and simple example script that would make unattended
> calls, play wav files and DTMF tones?
>
> Many thanks,
> Janusz
>
>
> *caller.py:*
>
> #! /usr/bin/env python
>
> import os
> import sys
> from datetime import datetime
>
> from application.notification import NotificationCenter
> from optparse import OptionParser
> from threading import Event
> from select import select
>
> from sipsimple.account import AccountManager
> from sipsimple.application import SIPApplication
> from sipsimple.audio import WavePlayer
> from sipsimple.configuration.settings import SIPSimpleSettings
> from sipsimple.core import SIPURI, SIPCoreError, ToHeader
> from sipsimple.lookup import DNSLookup, DNSLookupError
> from sipsimple.session import Session
> from sipsimple.streams import AudioStream
> from sipsimple.threading.green import run_in_green_thread
> from sipsimple.storage import FileStorage
>
>
> class SimpleCallApplication(SIPApplication):
>
>     def __init__(self):
>         SIPApplication.__init__(self)
>         self.ended = Event()
>         self.callee = None
>         self.player = None
>         self._wave_file = None
>         self.session = None
>         self.voice_audio_device = None
>         self.voice_audio_bridge = None
>         notification_center = NotificationCenter()
>         notification_center.add_observer(self)
>
>     def call(self, options):
>         self.callee = options.target
>         self._wave_file = options.filename
>         self.start(FileStorage(os.path.expanduser('~/.sipclient')))
>
>     @run_in_green_thread
>     def _NH_SIPApplicationDidStart(self, notification):
>         settings = SIPSimpleSettings()
>         # We don't need speakers or microphone
>         settings.audio.input_device = None
>         settings.audio.output_device = None
>         settings.rtp.port_range.start=5000
>         settings.rtp.port_range.end=5500
>         print 'RTP portRange: %s' % settings.rtp.port_range
>         settings.save()
>         self.player = WavePlayer(SIPApplication.voice_audio_mixer,
> self._wave_file, loop_count=0, initial_play=False)
>         try:
>             self.callee = ToHeader(SIPURI.parse(self.callee))
>         except SIPCoreError:
>             print 'Specified SIP URI is not valid'
>             self.stop()
>             return
>         try:
>             routes = DNSLookup().lookup_sip_proxy(self.callee.uri,
> ['udp']).wait()
>         except DNSLookupError, e:
>             print 'DNS lookup failed: %s' % str(e)
>         else:
>             account = AccountManager().default_account
>             print account
>             self.session = Session(account)
>             self.session.connect(self.callee, routes, [AudioStream()])
>
>     def _NH_SIPSessionGotRingIndication(self, notification):
>         print 'Ringing!'
>
>     def _NH_SIPSessionDidStart(self, notification):
>         print 'Session started! at: %s' %
> (datetime.now().strftime("%Y-%m-%d_-_%H-%M-%S"))
>         session = notification.sender
>         audio_stream = session.streams[0]
>         audio_stream.bridge.add(self.player)
>         print 'Audio session established using "%s" codec at %sHz' %
> (audio_stream.codec, audio_stream.sample_rate)
>         self.player.play()
>
>     def _NH_SIPSessionDidFail(self, notification):
>         print 'Failed to connect! %s' %
> (datetime.now().strftime("%Y-%m-%d_-_%H-%M-%S"))
>         self.stop()
>
>     def _NH_SIPSessionWillEnd(self, notification):
>         session = notification.sender
>         audio_stream = session.streams[0]
>         self.player.stop()
>         audio_stream.bridge.remove(self.player)
>
>     def _NH_SIPSessionDidEnd(self, notification):
>         print 'Session ended at: %s' %
> (datetime.now().strftime("%Y-%m-%d_-_%H-%M-%S"))
>         self.stop()
>
>     def _NH_SIPApplicationDidEnd(self, notification):
>         self.ended.set()
>
> if __name__ == '__main__':
>     parser = OptionParser()
>     parser.add_option('-t', '--target', help='Target URI')
>     parser.add_option('-f', '--file', dest='filename', help='File to play',
> metavar='FILE')
>     options, args = parser.parse_args()
>
>     if not options.filename or not options.target:
>         print 'Target and filename need to be specified, try --help'
>         sys.exit(1)
>     if not os.path.isfile(options.filename):
>         print "The specified file doesn't exist"
>         sys.exit(1)
>
>     application = SimpleCallApplication()
>     application.call(options)
>     timeout = 30
>
>     print "Placing call, wait %d seconds for call to end automatically or
> press Enter to quit the program %s" % (timeout,
> datetime.now().strftime("%Y-%m-%d_-_%H-%M-%S"))
>     rlist, _, _ = select([sys.stdin], [], [], timeout)
>     if rlist:
>         s = sys.stdin.readline()
>         print s
>     else:
>         print "No input from the console. Moving on... %s " %
> (datetime.now().strftime("%Y-%m-%d_-_%H-%M-%S"))
>
>     if application.session:
>         application.session.end()
>     application.ended.wait()
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.ag-projects.com/pipermail/sipbeyondvoip/attachments/20130625/06a704ce/attachment.html
> >
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: caller.pcap
> Type: application/octet-stream
> Size: 367768 bytes
> Desc: not available
> URL: <
> http://lists.ag-projects.com/pipermail/sipbeyondvoip/attachments/20130625/06a704ce/attachment.obj
> >
>
> ------------------------------
>
> _______________________________________________
> SIPBeyondVoIP mailing list
> SIPBeyondVoIP at lists.ag-projects.com
> http://lists.ag-projects.com/mailman/listinfo/sipbeyondvoip
>
>
> End of SIPBeyondVoIP Digest, Vol 49, Issue 3
> ********************************************
>



-- 
Zapraszam na swojego foto-bloga: http://na100procentchyba.wordpress.com/
Autopodpis: Staraj się używać pola Ukryty do Wiadomości (UDW) przy
wysyłaniu wiadomości do wielu odbiorców, ograniczysz przez to
rozprzestrzenianie się spamu!
Autosignature: Try to use field BCC (blind carbon copy) when sending
message to many recepients, it will restrain spread of spam!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ag-projects.com/pipermail/sipbeyondvoip/attachments/20130625/b9423774/attachment.html>


More information about the SIPBeyondVoIP mailing list