Created
April 7, 2011 15:27
-
-
Save areski/908000 to your computer and use it in GitHub Desktop.
telephonie - hangup event
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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