Skip to content

Instantly share code, notes, and snippets.

@areski
Created April 7, 2011 15:27
Show Gist options
  • Save areski/908000 to your computer and use it in GitHub Desktop.
Save areski/908000 to your computer and use it in GitHub Desktop.
telephonie - hangup event
# -*- coding: utf-8 -*-
from telephonie.core.inboundsocket import InboundEventSocket
from telephonie.core.errors import ConnectError
from telephonie.utils.logger import StdoutLogger
import gevent.event
class MyEventSocket(InboundEventSocket):
def __init__(self, host, port, password, filter, log=None):
InboundEventSocket.__init__(self, host, port, password, filter)
self.log = log
self.jobqueue = gevent.event.AsyncResult()
def on_background_job(self, ev):
'''
Recieves callbacks for BACKGROUND_JOB event.
'''
self.jobqueue.set(ev)
def wait_background_job(self):
'''
Waits until BACKGROUND_JOB event was caught and returns Event.
'''
return self.jobqueue.get()
def on_channel_hangup(self, ev):
self.jobqueue.set(ev)
def wait_channel_hangup(self):
return self.jobqueue.get()
if __name__ == '__main__':
log = StdoutLogger()
try:
inbound_event_listener = MyEventSocket('127.0.0.1', 8021, 'ClueCon', filter="ALL", log=log)
try:
inbound_event_listener.connect()
except ConnectError, e:
log.error("connect failed: %s" % str(e))
raise SystemExit('exit')
filter_response = inbound_event_listener.filter("Event-Name CHANNEL_HANGUP")
log.info(str(filter_response))
if not filter_response.is_success():
log.error("filter failed with response %s" % filter_response.get_response())
raise SystemExit('exit')
log.info("filter success with response %s" % filter_response.get_response())
fs_bg_api_string = "originate user/1000 &playback(/usr/local/freeswitch/sounds/en/us/callie/base256/8000/liberty.wav)"
bg_api_response = inbound_event_listener.bgapi(fs_bg_api_string)
log.info(str(bg_api_response))
log.info(bg_api_response.get_response())
if not bg_api_response.is_success():
log.error("bgapi failed !")
raise SystemExit('exit')
ev = inbound_event_listener.wait_channel_hangup()
log.info("channel answer: %s" % str(ev))
except (SystemExit, KeyboardInterrupt): pass
log.info("exit")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment