def make_call(call): manager = asterisk.manager.Manager() manager.lock = threading.Condition() try: try: call.start = datetime.datetime.now() # connect to the manager manager.connect(settings.AST_HOST) manager.login(settings.AST_USER, settings.AST_PASS) # register some callbacks manager.register_event('Shutdown', handle_shutdown) # shutdown manager.register_event('*', lambda event, manager: handle_event(event,manager,call)) # catch all # get a status report response = manager.originate(call.channel, call.extension, call.context, settings.AST_PRIO, settings.AST_TIMEOUT_ORIGINATE * 1000, call.caller_id) call.response = response.get_header('Response') with manager.lock: manager.lock.wait(settings.AST_TIMEOUT_HANGUP) except asterisk.manager.ManagerSocketException, (errno, reason): msg = "Error connecting to the manager: %s" % reason call.disposition = msg raise except asterisk.manager.ManagerAuthException, reason: msg = "Error logging in to the manager: %s" % reason call.disposition = msg raise
def make_call(call): manager = asterisk.manager.Manager() manager.lock = threading.Condition() try: try: call.start = datetime.datetime.now() # connect to the manager manager.connect(settings.AST_HOST) manager.login(settings.AST_USER, settings.AST_PASS) # register some callbacks manager.register_event('Shutdown', handle_shutdown) # shutdown manager.register_event('*', lambda event, manager: handle_event( event, manager, call)) # catch all # get a status report response = manager.originate(call.channel, call.extension, call.context, settings.AST_PRIO, settings.AST_TIMEOUT_ORIGINATE * 1000, call.caller_id) call.response = response.get_header('Response') with manager.lock: manager.lock.wait(settings.AST_TIMEOUT_HANGUP) except asterisk.manager.ManagerSocketException, (errno, reason): msg = "Error connecting to the manager: %s" % reason call.disposition = msg raise except asterisk.manager.ManagerAuthException, reason: msg = "Error logging in to the manager: %s" % reason call.disposition = msg raise
def before_each_dialer_request(*args, **kwargs): status, response, error_msg = 'success', '', '' try: if not manager.connected(): manager.connect(config.ASTERISK_ADDRESS, config.ASTERISK_PORT) manager.login(config.ASTERISK_LOGIN, config.ASTERISK_PASSWORD) response = manager.send_action({ 'Action': 'Events', 'Events': 'on', 'EventMask': 'cdr', }).response manager.register_event('*', event_callback) except asterisk.manager.ManagerSocketException, (errno, reason): status = 'failure' error_msg = 'Error connecting to the manager: %s' % reason
def sip_peers(plpy, ami_host): manager = _get_manager(plpy, ami_host) manager.register_event('PeerEntry', _handle_peerentry) manager.sippeers() manager.logoff() return_type_attributes = _get_type_fields(plpy,'peer_entry') result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
def sip_peers(plpy, ami_host): manager = _get_manager(plpy, ami_host) manager.register_event('PeerEntry', _handle_peerentry) manager.sippeers() manager.logoff() return_type_attributes = _get_type_fields(plpy, 'peer_entry') result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
def queue_params(plpy, ami_host, queue): manager = _get_manager(plpy, ami_host) manager.register_event('QueueParams', _handle_queue_parameter) manager.send_action({ACTION: 'QueueStatus', QUEUE: queue}) manager.logoff() return_type_attributes = _get_type_fields(plpy, 'asterisk_queue_params') result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
def queue_params(plpy, ami_host, queue): manager = _get_manager(plpy, ami_host) manager.register_event('QueueParams', _handle_queue_parameter) manager.send_action({ACTION : 'QueueStatus', QUEUE : queue}) manager.logoff() return_type_attributes = _get_type_fields(plpy,'asterisk_queue_params') result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
def queue_members(plpy, ami_host, queue): manager = _get_manager(plpy, ami_host) manager.register_event('QueueMember', _handle_queue_member) manager.send_action({ACTION: 'QueueStatus', QUEUE: queue}) manager.logoff() return_type_attributes = _get_type_fields(plpy, 'asterisk_queue_member') #plpy.error("error") #plpy.fatal("fatal") #plpy.debug("debug") #plpy.notice("notice") result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
def queue_members(plpy, ami_host, queue): manager = _get_manager(plpy, ami_host) manager.register_event('QueueMember', _handle_queue_member) manager.send_action({ACTION : 'QueueStatus', QUEUE : queue}) manager.logoff() return_type_attributes = _get_type_fields(plpy,'asterisk_queue_member') #plpy.error("error") #plpy.fatal("fatal") #plpy.debug("debug") #plpy.notice("notice") result = [] for event in manager.event_registry: record = {} for sip_header in return_type_attributes: record[sip_header] = event.get_header(sip_header, None) result.append(record) return result
conn.commit() def handle_test(event, manager): print event, event.headers config = ConfigParser.ConfigParser() config.read('/etc/ucall/config.ini') ami_host = config.get('AMI', 'host') ami_username = config.get('AMI', 'username') ami_password = config.get('AMI', 'password') print 'AMI host:', ami_host print 'AMI username:'******'AMI password:'******'='*80 manager = asterisk.manager.Manager() manager.connect(ami_host) manager.login(ami_username, ami_password) #manager.register_event('Shutdown', handle_shutdown) # shutdown #manager.register_event('Link', handle_link) #manager.register_event('Unlink', handle_unlink) manager.register_event('*', handle_test) manager.message_loop() manager.logoff()
print event.get_header('Event'), event.headers AsteriskEvent(event=event.get_header('Event'), raw=str(event.headers), uniqueid=uniqueid) manager = asterisk.manager.Manager() try: try: manager.connect(config.get('AMI', 'host')) manager.login(config.get('AMI', 'username'), config.get('AMI', 'password')) manager.register_event('Shutdown', handle_shutdown) manager.register_event('Newstate', handle_newstate) manager.register_event('Hangup', handle_hangup) manager.register_event('Link', handle_link) manager.register_event('Unlink', handle_unlink) manager.register_event('Dial', handle_dial) #manager.register_event('Newstate', handle_newstate) #manager.register_event('*', handle_event) manager.message_loop() manager.logoff() except asterisk.manager.ManagerSocketException, (errno, reason): print "Error connecting to the manager: %s" % reason
# liquidsoapfile = config.socketPath + 'liquidsoap.liq' try: with open(liquidsoapfile, "w") as text_file: text_file.write(get_liquidsoap_script(phone, socketPath, currentMusicNumber)) except Exception as e: logger.error("Cannot rewrite liquidsoap.liq script file, error: %s" % str(e)) cmd = "/usr/bin/liquidsoap %s" % (liquidsoapfile) liquidsoap_process = subprocess.Popen(cmd.split(), stderr=FNULL) #atexit.register(cleanup) TODO doesn work yet logger.debug('New call to queue, phone: %s, callid: %s, channel: %s' % (phone, callId, channel)) time.sleep(1) # let liquidsoap open socket socket_connect() manager.connect('127.0.0.1') manager.login('admin', 'admin') manager.register_event('DTMF', on_dtmf) manager.register_event('QueueEntry', on_queueentry) get_queue_status_periodic() except asterisk.manager.ManagerSocketException as err: errno, reason = err logger.error("Error connecting to the manager: %s" % reason) sys.exit(1) except asterisk.manager.ManagerAuthException as reason: logger.error("Error login in to the manager: %s" % reason) sys.exit(1) except asterisk.manager.ManagerException as reason: logger.error("Error: %s" % reason) sys.exit(1)
#try: manager.connect(ami_host) manager.login(ami_username, ami_password) manager.destination = stomp asteriskProtocolVersion = None if manager.version == '1.0': asteriskProtocolVersion = Protocol.ASTERISK_1_0 elif manager.version == '1.1': asteriskProtocolVersion = Protocol.ASTERISK_1_1 else: sys.exit() command_handler = CommandHandlerFactory(asteriskProtocolVersion).create_command_handler() manager.register_event('Shutdown', command_handler.handle_Shutdown) manager.register_event('Hangup', command_handler.handle_Hangup) manager.register_event('Link', command_handler.handle_Link) manager.register_event('Bridge', command_handler.handle_Bridge) manager.register_event('Dial', command_handler.handle_Dial) manager.register_event('Newstate', command_handler.handle_Newstate) manager.register_event('QueueMemberAdded', command_handler.handle_QueueMemberAdded) manager.register_event('QueueMemberRemoved', command_handler.handle_QueueMemberRemoved) manager.register_event('QueueMemberPaused', command_handler.handle_QueueMemberPaused) manager.register_event('QueueMember', command_handler.handle_QueueMember) manager.message_loop() manager.logoff() #except asterisk.manager.ManagerSocketException, (errno, reason):
manager.connect(ami_host) manager.login(ami_username, ami_password) manager.destination = stomp asteriskProtocolVersion = None if manager.version == '1.0': asteriskProtocolVersion = Protocol.ASTERISK_1_0 elif manager.version == '1.1': asteriskProtocolVersion = Protocol.ASTERISK_1_1 else: sys.exit() command_handler = CommandHandlerFactory( asteriskProtocolVersion).create_command_handler() manager.register_event('Shutdown', command_handler.handle_Shutdown) manager.register_event('Hangup', command_handler.handle_Hangup) manager.register_event('Link', command_handler.handle_Link) manager.register_event('Bridge', command_handler.handle_Bridge) manager.register_event('Dial', command_handler.handle_Dial) manager.register_event('Newstate', command_handler.handle_Newstate) manager.register_event('QueueMemberAdded', command_handler.handle_QueueMemberAdded) manager.register_event('QueueMemberRemoved', command_handler.handle_QueueMemberRemoved) manager.register_event('QueueMemberPaused', command_handler.handle_QueueMemberPaused) manager.register_event('QueueMember', command_handler.handle_QueueMember) manager.message_loop()
manager.close() # we could analize the event and reconnect here def handle_event(event, manager): print("Recieved event: %s" % event.name) manager = asterisk.manager.Manager() try: # connect to the manager try: manager.connect('190.117.113.7') manager.login('richar', '@admjds.progressive') # register some callbacks manager.register_event('Shutdown', handle_shutdown) # shutdown manager.register_event('*', handle_event) # catch all # get a status report response = manager.status() manager.logoff() except asterisk.manager.ManagerSocketException as e: print("Error connecting to the manager: %s" % e.strerror) sys.exit(1) except asterisk.manager.ManagerAuthException as e: print("Error logging in to the manager: %s" % e.strerror) sys.exit(1) except asterisk.manager.ManagerException as e: print("Error: %s" % e.strerror) sys.exit(1) finally: manager.close()
mc.delete("to_speaker") try: # Первоначальная инициализация to_speaker = "" manager = asterisk.manager.Manager() manager.connect('127.0.0.1', port=5038) manager.login('asterisk', '*******') # Если скрипт запущен в тестовом режиме из консоли с передачей параметра test if len(sys.argv) > 1 and str(sys.argv[1]) == "test": # Слушаем все события # manager.register_event('*', handle_event) # Слушаем события в Asterisk, передаём в обработку 'Newstate', 'Hangup', 'Bridge' при входящих звонках manager.register_event('Newstate', handle_event) manager.register_event('Hangup', handle_event) manager.register_event('BridgeEnter', handle_event) # Если запуск боевой (не тестовый) else: # Слушаем события в Asterisk, передаём в обработку 'Newstate', 'Hangup', 'Bridge' при входящих звонках manager.register_event('Newstate', handle_event) manager.register_event('Hangup', handle_event) manager.register_event('BridgeEnter', handle_event) # Переменная счётчик звонков телефона (сколько раз прозвенел аппарате телефона при текущем входящем вызове) count_rings = 0 while True: # Если есть, что произнести в колонки
def ami_connection_loop(self): while True: if self.stopped.is_set(): return self.ami_manager = None try: # Create PBX connection manager = manager = asterisk.manager.Manager() logging.debug('Connecting to {}:{} with {}:{}'.format( self.settings.get('AsteriskHost'), self.settings.get('AmiPort'), self.settings.get('AsteriskLogin'), self.settings.get('AsteriskPassword'), )) manager.connect( str(self.settings.get('AsteriskHost')), port = int(self.settings.get('AmiPort')) ) manager.login( self.settings.get('AsteriskLogin'), self.settings.get('AsteriskPassword') ) logging.info('Managed connected.') manager.register_event('PeerStatus', self.handle_asterisk_event) manager.register_event('UserEvent', self.handle_asterisk_event) manager.register_event('VarSet', self.handle_asterisk_event) manager.register_event('Newchannel', self.handle_asterisk_event) manager.register_event('NewConnectedLine', self.handle_asterisk_event) manager.register_event('Newstate', self.handle_asterisk_event) manager.register_event('Hangup', self.handle_asterisk_event) self.ami_manager = manager self.ami_disconnected.clear() self.ami_connected.set() self.ami_disconnected.wait() except asterisk.manager.ManagerSocketException as e: logging.error("Error connecting to the manager: %s" % e) except asterisk.manager.ManagerAuthException as e: logging.error("Error logging in to the manager: %s" % e) except asterisk.manager.ManagerException as e: logging.error("Error: %s" % e) logging.info('Reconnecting AMI.') gevent.sleep(self.settings.get('AmiReconnectTimeout'))
srcuniqueid=event.get_header('Uniqueid') except: srcuniqueid=None print event.get_header('Event'), event.headers AsteriskEvent(event=event.get_header('Event'), raw=str(event.headers), uniqueid=uniqueid) manager = asterisk.manager.Manager() try: try: manager.connect(config.get('AMI', 'host')) manager.login(config.get('AMI', 'username'), config.get('AMI', 'password')) manager.register_event('Shutdown', handle_shutdown) manager.register_event('Newstate', handle_newstate) manager.register_event('Hangup', handle_hangup) manager.register_event('Link', handle_link) manager.register_event('Unlink', handle_unlink) manager.register_event('Dial', handle_dial) #manager.register_event('Newstate', handle_newstate) #manager.register_event('*', handle_event) manager.message_loop() manager.logoff() except asterisk.manager.ManagerSocketException, (errno, reason): print "Error connecting to the manager: %s" % reason
asteriskProtocolVersion = None if manager.version == '1.0': asteriskProtocolVersion = Protocol.ASTERISK_1_0 elif manager.version == '1.1': asteriskProtocolVersion = Protocol.ASTERISK_1_1 else: sys.exit() #command_handler = CommandHandlerFactory.create_command_handler_by_protocol(asteriskProtocolVersion) command_handler = CommandHandlerFactory.create_command_handler_by_key(Protocol.QUEUE_1_6) print type(command_handler) for command in command_handler.get_commands(): print 'Binding', command manager.register_event(command, getattr(command_handler, 'handle_' + command)) manager.message_loop() manager.logoff() #except asterisk.manager.ManagerSocketException, (errno, reason): # print "Error connecting to the manager: %s" % reason #except asterisk.manager.ManagerAuthException, reason: # print "Error logging in to the manager: %s" % reason #except asterisk.manager.ManagerException, reason: # print "Error: %s" % reason #except:
def ami_connection_loop(self): while True: if self.stopped.is_set(): return try: # Create PBX connection manager = asterisk.manager.Manager() logger.info(u'Connecting to {}:{} with {}:{}.'.format( self.asterisk_host, self.ami_port, self.ami_user, self.ami_password[0] + '******' + self.ami_password[-1:])) # manager.connect(str(self.asterisk_host), port=int(self.ami_port)) manager.login(self.ami_user, self.ami_password) logger.info(u'Connected to AMI.') # Register for events manager.register_event('VarSet', self.on_asterisk_event) manager.register_event('Hangup', self.on_asterisk_event) manager.register_event('Cdr', self.on_asterisk_event) manager.register_event('Newchannel', self.on_asterisk_event) manager.register_event('Newstate', self.on_asterisk_event) manager.register_event('NewConnectedLine', self.on_asterisk_event) manager.register_event('OriginateResponse', self.on_asterisk_event) if os.getenv('DISABLE_EVENT_AGENT_CALLED') != '1': manager.register_event('AgentCalled', self.on_asterisk_event) manager.register_event('UserEvent', self.on_asterisk_event) self.ami_manager = manager self.ami_disconnected.clear() self.ami_connected.set() self.ami_disconnected.wait() logger.info('AMI disconnected.') except asterisk.manager.ManagerSocketException as e: logger.error("Error connecting AMI %s:%s: %s", self.asterisk_host, self.ami_port, e) except asterisk.manager.ManagerAuthException as e: logger.error("Error logging in to the manager: %s" % e) except asterisk.manager.ManagerException as e: logger.error("Error: %s" % e) except Exception as e: logger.exception('AMI error:') logger.info(u'Reconnecting AMI.') gevent.sleep(float(os.environ.get('AMI_RECONNECT_TIMEOUT', '1')))