def handle_Bridge(event, manager=None): if not isinstance(event, dict): event = event.headers """ Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: SIP/101-00000058 Channel2: SIP/104-00000059 Uniqueid1: 1309443548.88 Uniqueid2: 1309443548.89 CallerID1: 101 CallerID2: 104 {'Uniqueid2': '1309506586.133', 'Uniqueid1': '1309506586.132', 'CallerID2': '104', 'Bridgestate': 'Link', 'CallerID1': '101', 'Channel2': 'SIP/104-00000085', 'Channel1': 'SIP/101-00000084', 'Bridgetype': 'core', 'Privilege': 'call,all', 'Event': 'Bridge'} """ message = ChannelMessage() message.set_event(ChannelMessage.EVENT_LINK) message.set_id(event["Uniqueid2"]) message.set_extension(event["CallerID2"]) message.set_caller(event["CallerID1"]) send_message(manager.stomp, message.dump_data_json(), getLocalNumber(event["Channel2"]))
def _handle_newstate_ringing(self, event, destination): print "handle_newstate_ringing" channel = event[Asterisk11.HEADER_CHANNEL] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_RINGING) message.set_id(event[Asterisk11.HEADER_UNIQUEID]) try: parent_event = AsteriskEvent.selectBy(event = Asterisk11.EVENT_DIAL, uniqueid = event[Asterisk11.HEADER_UNIQUEID])[0] except Exception as e: print e parent_event = None if parent_event != None: raw = eval(parent_event.raw) else: raw = None if raw != None: caller = raw[Asterisk11.HEADER_CALLERIDNUM] extension = event[Asterisk11.HEADER_CALLERIDNUM] else: caller = AsteriskCommandHandler.CALLERID_UNKNOWN extension = AsteriskCommandHandler.CALLERID_UNKNOWN message.set_extension(extension) message.set_caller(caller) send_message(destination, message.dump_data_json(), get_local_number(channel))
def handle_newstate_ringing(event, stomp): channel = event['Channel'] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_RINGING) message.set_id(event['Uniqueid']) try: parent_event = AsteriskEvent.selectBy(event = 'Dial', uniqueid = event['Uniqueid'])[0] except Exception as e: parent_event = None if parent_event != None: raw = eval(parent_event.raw) else: raw = None if raw != None: caller = raw['CallerID'] else: caller = 'unknown' extension = event['CallerID'] message.set_extension(extension) message.set_caller(caller) send_message(stomp, message.dump_data_json(), getLocalNumber(channel))
def handle_Bridge(self, event, manager): """ Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: SIP/101-00000058 Channel2: SIP/104-00000059 Uniqueid1: 1309443548.88 Uniqueid2: 1309443548.89 CallerID1: 101 CallerID2: 104 {'Uniqueid2': '1309506586.133', 'Uniqueid1': '1309506586.132', 'CallerID2': '104', 'Bridgestate': 'Link', 'CallerID1': '101', 'Channel2': 'SIP/104-00000085', 'Channel1': 'SIP/101-00000084', 'Bridgetype': 'core', 'Privilege': 'call,all', 'Event': 'Bridge'} """ message = ChannelMessage() message.set_event(ChannelMessage.EVENT_LINK) message.set_id(event[Asterisk11.HEADER_UNIQUEID2]) message.set_extension(event[Asterisk11.HEADER_CALLERID2]) message.set_caller(event[Asterisk11.HEADER_CALLERID1]) send_message(manager.destination, message.dump_data_json(), get_local_number(event[Asterisk11.HEADER_CHANNEL2]))
def handle_QueueMemberPaused(self, event, manager): location = event[Asterisk.HEADER_LOCATION] if location == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_QUEUE_MEMBER_PAUSED) send_message(manager.destination, message.dump_data_json(), get_local_number(location))
def handle_Link(self, event, manager): """ {'Uniqueid2': '1306914758.6999', 'Uniqueid1': '1306914726.6994', 'Channel1': 'SIP/430913-19be0080', 'Channel2': 'SIP/1313-19ba26d0', 'CallerID2': '380352407040', 'Privilege': 'call,all', 'CallerID1': '430913', 'Event': 'Link'} """ message = ChannelMessage() message.set_event(ChannelMessage.EVENT_LINK) message.set_id(event[Asterisk10.HEADER_UNIQUEID1]) message.set_extension(event[Asterisk10.HEADER_CALLERID1]) message.set_caller(event[Asterisk10.HEADER_CALLERID2]) send_message(manager.destination, message.dump_data_json(), get_local_number(event[Asterisk10.HEADER_CHANNEL1]))
def handle_QueueMemberAdded(event, manager): if not isinstance(event, dict): event = event.headers location = event['Location'] if location == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_QUEUE_MEMBER_ADDED) send_message(manager.stomp, message.dump_data_json(), getLocalNumber(location))
def handle_Link(event, manager=None): if not isinstance(event, dict): event = event.headers """ {'Uniqueid2': '1306914758.6999', 'Uniqueid1': '1306914726.6994', 'Channel1': 'SIP/430913-19be0080', 'Channel2': 'SIP/1313-19ba26d0', 'CallerID2': '380352407040', 'Privilege': 'call,all', 'CallerID1': '430913', 'Event': 'Link'} """ message = ChannelMessage() message.set_event(ChannelMessage.EVENT_LINK) message.set_id(event['Uniqueid1']) message.set_extension(event['CallerID1']) message.set_caller(event['CallerID2']) send_message(manager.stomp, message.dump_data_json(), getLocalNumber(event['Channel1']))
def handle_hangup_clearing(event, stomp): channel = event['Channel'] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_HANGUP_CLEANUP) message.set_id(event['Uniqueid']) send_message(stomp, message.dump_data_json(), getLocalNumber(channel))
def _handle_hangup_clearing(self, event, destination): print "handle_hangup_clearing" channel = event[Asterisk11.HEADER_CHANNEL] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_HANGUP_CLEANUP) message.set_id(event[Asterisk11.HEADER_UNIQUEID]) send_message(destination, message.dump_data_json(), get_local_number(channel))
def handle_newstate_ringing(event, stomp, protocol_version): channel = event["Channel"] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_RINGING) message.set_id(event["Uniqueid"]) try: parent_event = AsteriskEvent.selectBy(event="Dial", uniqueid=event["Uniqueid"])[0] except Exception as e: print e parent_event = None if parent_event != None: raw = eval(parent_event.raw) else: raw = None if raw != None and protocol_version == PROTOCOL_VERSION_1_1: caller = raw["CallerIDNum"] extension = event["CallerIDNum"] elif raw != None and protocol_version == PROTOCOL_VERSION_1_0: caller = raw["CallerID"] extension = event["CallerID"] else: caller = "unknown" extension = "unknown" message.set_extension(extension) message.set_caller(caller) send_message(stomp, message.dump_data_json(), getLocalNumber(channel))
def _handle_hangup_clearing(self, event, destination): channel = event[Asterisk10.HEADER_CHANNEL] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_HANGUP_CLEANUP) message.set_id(event[Asterisk10.HEADER_UNIQUEID]) send_message(destination, message.dump_data_json(), get_local_number(channel))
def _handle_newstate_ringing(self, event, destination): #Newstate { # 'ConnectedLineNum': '102', # 'ChannelState': '5', # 'CallerIDNum': '', # 'ConnectedLineName': '', # 'Uniqueid': '1330721579.25', # 'CallerIDName': '', # 'Privilege': 'call,all', # 'Event': 'Newstate', # 'Channel': 'SIP/101-00000019', # 'ChannelStateDesc': 'Ringing'} channel = event[Asterisk11.HEADER_CHANNEL] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_RINGING) message.set_id(event[Asterisk11.HEADER_UNIQUEID]) # # try: # parent_event = AsteriskEvent.selectBy(event = Asterisk11.EVENT_DIAL, uniqueid = event[Asterisk11.HEADER_UNIQUEID])[0] # except Exception as e: # print e # parent_event = None # # if parent_event != None: # raw = eval(parent_event.raw) # else: # raw = None # # if raw != None: # caller = raw[Asterisk11.HEADER_CALLERIDNUM] # extension = event[Asterisk11.HEADER_CALLERIDNUM] # else: # caller = AsteriskCommandHandler.CALLERID_UNKNOWN # extension = AsteriskCommandHandler.CALLERID_UNKNOWN # # message.set_extension(extension) # message.set_caller(caller) # queue name??? or extension??? # caller number??? send_message(destination, message.dump_data_json(), get_local_number(channel))
print 'Stomp queue:', stomp_queue print '='*80 ami_host = config.get('AMI', 'host') ami_username = config.get('AMI', 'username') ami_password = config.get('AMI', 'password') stomp = Client(stomp_host) stomp.connect(stomp_username, stomp_password) stomp.subscribe(stomp_queue) while True: message = stomp.get() channel_message = ChannelMessage() logging.debug(message.body) data = channel_message.load_data_json(message.body) if data['type'] == channel_message.TYPE_AGENT_STATUS: manager = asterisk.manager.Manager() manager.connect(ami_host) manager.login(ami_username, ami_password) if data['statusId'] == 'available': response = queue_add(manager, data) elif data['statusId'] == 'offline': response = queue_remove(manager, data) elif data['statusId'] == 'away':
def handle_Bridge(event, manager=None): if not isinstance(event, dict): event = event.headers """ Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: SIP/101-00000058 Channel2: SIP/104-00000059 Uniqueid1: 1309443548.88 Uniqueid2: 1309443548.89 CallerID1: 101 CallerID2: 104 {'Uniqueid2': '1309506586.133', 'Uniqueid1': '1309506586.132', 'CallerID2': '104', 'Bridgestate': 'Link', 'CallerID1': '101', 'Channel2': 'SIP/104-00000085', 'Channel1': 'SIP/101-00000084', 'Bridgetype': 'core', 'Privilege': 'call,all', 'Event': 'Bridge'} """ message = ChannelMessage() message.set_event(ChannelMessage.EVENT_LINK) message.set_id(event['Uniqueid2']) message.set_extension(event['CallerID2']) message.set_caller(event['CallerID1']) send_message(manager.stomp, message.dump_data_json(), getLocalNumber(event['Channel2']))
def handle_newstate_ringing(event, stomp): channel = event['Channel'] if channel == None: return None message = ChannelMessage() message.set_event(ChannelMessage.EVENT_RINGING) message.set_id(event['Uniqueid']) try: parent_event = AsteriskEvent.selectBy(event='Dial', uniqueid=event['Uniqueid'])[0] except Exception as e: parent_event = None if parent_event != None: raw = eval(parent_event.raw) else: raw = None if raw != None: caller = raw['CallerID'] else: caller = 'unknown' extension = event['CallerID'] message.set_extension(extension) message.set_caller(caller) send_message(stomp, message.dump_data_json(), getLocalNumber(channel))
print 'Stomp queue:', stomp_queue print '='*80 ami_host = config.get('AMI', 'host') ami_username = config.get('AMI', 'username') ami_password = config.get('AMI', 'password') stomp = Client(stomp_host) stomp.connect(stomp_username, stomp_password) stomp.subscribe(stomp_queue) while True: message = stomp.get() channel_message = ChannelMessage() logging.debug(message.body) data = channel_message.load_data_json(message.body) if data['type'] == channel_message.TYPE_AGENT_STATUS: manager = asterisk.manager.Manager() manager.connect(ami_host) manager.login(ami_username, ami_password) if data['statusId'] == 'available': response = queue_add(manager, data['agent']) elif data['statusId'] == 'offline': response = queue_remove(manager, data['agent']) elif data['statusId'] == 'away':