ettoreleandrotognoli / python-ami

Python AMI Client
BSD 3-Clause "New" or "Revised" License
107 stars 66 forks source link

Informação do Retorno da função #36

Closed mauriciomagalhaes closed 3 years ago

mauriciomagalhaes commented 5 years ago

Olá, Parabéns pela Lib, Eu to com um problema, não acho que seja a sua lib, mas se puder me dar um rumo eu seria grato. No meu código abaixo o return da função me retorna: <asterisk.ami.event.EventListener object at 0x7f0e54134c90> queria acessar a informação em si para enviar para outra ação

from asterisk.ami import SimpleAction, AMIClient
client = AMIClient(address='192.168.1.204', port=5038)
client.login(username='user', secret='senha')
sip_peers = SimpleAction('SIPpeers')
client.send_action(sip_peers)
def ev_peers(event, **kwargs):
    t = (event['Channeltype']+'/'+event['ObjectName'])
    print (t)
    return t
 i = client.add_event_listener(ev_peers, 
       white_list='PeerEntry', IPaddress='iptronco')
print(i)

Primeiro Print: SIP/TRK_NUMERO Segundo: <asterisk.ami.event.EventListener object at 0x7f3214785cd0>

ettoreleandrotognoli commented 5 years ago

Obrigado! O valor do i é isso mesmo, uma referencia para o listener. O evento mesmo você só vai conseguir pegar no ev_peers que foi a função que você registrou como listener.

mauriciomagalhaes commented 5 years ago

Obrigado, Eu imaginei isso, o meu objetivo é o seguinte: buscar um dado do evento e colocar em outro "add_event_listenner()" e buscar o dado final pela própria def "ev_peers" chamar outro add_event_listenner pra uma "dev_stats" e imprimir. Porem quando na def "end_peers" ele não chama o "client.add..." e passa direto. por isso que tentei por fora, pelo return

(...)
sip_peers = SimpleAction('SIPpeers')
sip_stats = SimpleAction('SIPpeerstatus')

client.send_action(sip_peers)
client.send_action(sip_stats)

def ev_stats(event, **kwargs):
       print(event)

def ev_peers(event, **kwargs):
     client.add_event_listener**(ev_stats, white_list='PeerStatus', 
                            Peer=(event['Channeltype']+'/'+event['ObjectName']))

client.add_event_listener(ev_peers, 
       white_list='PeerEntry', IPaddress='ipserver')
(...)