Honestamente, pensei por muito tempo se publicaria este material. Para quem sabe trabalhar com o AMI Asterisk, não há nada de interessante aqui. Para aqueles que estão apenas começando a fazer algo, é improvável que compreendam meu código (embora eu tenha tentado escrever claramente). Fiz comentários como: "Por que usar o Habr para suas anotações?". Por outro lado, o script mostrado abaixo do corte pode ser o ponto de partida de alguém. O script não faz nada, exceto que envia todos os eventos da AMI para o console e pode filtrá-los. Por exemplo, mostro no console todas as chamadas que se enquadram em qualquer um dos contextos "zadarma-in" ou "sibseti_in". Se estiver interessado, pergunto sob o corte:
Havia uma tarefa em tempo real de verificar de qual tronco a chamada veio, quais botões na ivr o usuário pressionou, quem atendeu a chamada etc. Por um longo tempo, eu queria tentar trabalhar com a AMI do Python, antes disso eu tinha uma pequena experiência com o Bash e depois organizava uma chamada de volta.
Depois de vasculhar várias bibliotecas prontas, percebi rapidamente que nenhuma delas me convinha. Como resultado, sua própria “bicicleta” foi inventada na forma de um script que envia todas as informações da AMI para o json. Bibliotecas padrão do Python são usadas. A vantagem é que, neste formulário, é fácil receber e analisar quaisquer eventos e não perder o link para uma chamada específica.
O primeiro script imprime apenas os eventos que se enquadram em qualquer um dos contextos "zadarma-in" ou "sibseti_in".
Script nº1import telnetlib import json import re
E o segundo script, que grava todos os eventos no console, observando os dois scripts, fica claro o que precisa ser alterado para alcançar o resultado desejado. Se não estiver totalmente claro, você precisará analisar json "string [mes]" na função "def telnet_for_string (string)":
Script número 2 import telnetlib import time import json import re