[AsteriskBrasil] Monitorar quando um ramal se loga

Thiago Lopes Varanda thg.varanda em gmail.com
Quarta Junho 10 11:46:13 -03 2020


Franque,

Aqui temos um script que fica ouvindo o AMI. Quando o asterisk lança o
evento 'ExtensionStatus' nós executamos algumas rotinas.
Outra coisa é que adicionamos no manager.conf apenas os eventos que
utilizamos (ex: *eventfilter=Event: ExtensionStatus*).

Decidimos por esse caminho pois o evento é lançado pelo próprio Asterisk no
momento da troca de status do softphone.



Em qua., 10 de jun. de 2020 às 10:25, Richard Amaral de Jesus <
richard.ajesus em gmail.com> escreveu:

> Rapaz, parte para ARI.
> https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Endpoints+REST+API
>
> Apenas com uma chamada webservice tu consegue as informações.
> E o telnet do asterisk não é lá essas coisas quando se trata de integração
> e monitoramento.
> Dá trabalho demais ter que ficar fatiando essas strings aí.
> ARI já te dá tudo em JSON, qualquer linguagem de programação tem suporte.
>
> [image: image.png]
>
> [image: image.png]
>
> Em qua., 10 de jun. de 2020 às 09:48, Franque Custódio <franque em gmail.com>
> escreveu:
>
>> Tentei usar o ExtensionState do AMI, mas o retorno do AMI é um fluxo
>> contínuo de informações, não apenas a resposta do comando que enviei, e
>> estou com dificuldades para filtrar o fluxo e pegar apenas o que me
>> interessa.
>> Abaixo o script que estou fazendo, até onde consegui ir, caso ajude
>> alguém.
>>
>> ========================================================
>>
>> #!/bin/php
>>
>> <?php
>>
>> // variaveis para o AMI
>> $host = "IP_DO_ASTERISK";
>> $user = "USER_AMI";
>> $pass = "SENHA_AMI";
>> $ramal = $argv[1];
>>
>> function connect($host, $user, $pass)
>> {
>>         $timeout = 10;
>>         $socket = fsockopen($host,"5038", $errno, $errstr, $timeout);
>>         fputs($socket, "Action: Login\r\n");
>>         fputs($socket, "UserName: $user\r\n");
>>         fputs($socket, "Secret: $pass\r\n\r\n");
>>
>>         return $socket;
>> }
>>
>> function get_response($socket)
>> {
>>         $line = "";
>>         $response = "";
>>
>>         while ($line != "\r\n")
>>         {
>>                 $line = fgets($socket,128);
>>                 $response .= $line;
>>         }
>>
>>         return $response;
>> }
>>
>> function parse_response($response, $event)
>> {
>>         $exploded = explode("\r\n",$response);
>>
>>         foreach ($exploded as $line)
>>         {
>>                 if (strlen($line) >= strlen($event))
>>                 {
>>                         if (substr($line,0,strlen($event)) == $event)
>>                         {
>>                                 return substr($line, strlen($event)+2);
>>                         }
>>                 }
>>         }
>> }
>>
>> $socket = connect($host, $user, $pass);
>> $response = get_response($socket);
>> $parsed = parse_response($response, "Message");
>>
>> if ($parsed == "Authentication accepted")
>> {
>>         echo "Logado\n";
>>         echo "=======================\n";
>> }
>>
>> fputs($socket, "ACTION: ExtensionState\r\n" );
>> fputs($socket, "Context: procergs-local-outros\r\n" );
>> fputs($socket, "Exten: $ramal\r\n" );
>> fputs($socket, "ActionID: 1234\r\n\r\n" );
>>
>> $response = get_response($socket);
>> $parsed = parse_response($response, "ExtensionState");
>>
>> echo "Response: \n";
>> echo "$response \n";
>> echo "Parsed: \n";
>> echo "$parsed \n";
>> echo "=======================\n";
>>
>> fclose($socket);
>>
>> echo "\n";
>>
>> ?>
>> =================================================
>>
>>
>> ---------------------------------------------------------------
>> Franque Custódio
>> franque em gmail.com
>> ---------------------------------------------------------------
>>
>>
>> Em ter., 9 de jun. de 2020 às 22:44, Thiago Lopes Varanda <
>> thg.varanda em gmail.com> escreveu:
>>
>>> Você pode capturar evento 'ExtensionsStatus' no AMI.
>>>
>>>
>>> https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerEvent_ExtensionStatus
>>>
>>> Em ter., 9 de jun. de 2020 às 22:21, Júlio Gadioli Soares <
>>> jugaso em gmail.com> escreveu:
>>>
>>>> Boa noite, Franque,
>>>>
>>>> vc pediu uma idéia para começar... segue ai, podem ter soluções
>>>> melhores, mas com a cron isso aqui já te ajuda ...
>>>> incremente o shell script que dá tudo certo!
>>>>
>>>> #!/bin/bash
>>>>>
>>>>> SIP6001=`asterisk -x "sip show peers" | grep -w OK | awk '{print $1}'
>>>>> | awk -F'/' '{print $1}' | grep "6001"`
>>>>>
>>>>> if [ -z $SIP6001 ]; then
>>>>>         echo "OFF-LINE"
>>>>> else
>>>>>         echo "Online"
>>>>> fi
>>>>>
>>>>
>>>>
>>>> Em ter., 9 de jun. de 2020 às 09:21, Franque Custódio <
>>>> franque em gmail.com> escreveu:
>>>>
>>>>> Bom dia, amigos da lista.
>>>>>
>>>>> Situação: tenhos vários ramais em softphone e preciso que, quando eles
>>>>> se logam no sistema, seja executada uma ação (exemplo: enviar
>>>>> mensagem/inserir em uma banco).
>>>>>
>>>>> Alguém tem alguma idéia de por onde começar?
>>>>>
>>>>> Valeu!
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------
>>>>> Franque Custódio
>>>>> franque em gmail.com
>>>>> ---------------------------------------------------------------
>>>>> _______________________________________________
>>>>> Contact Center em Nuvem
>>>>> Home Office
>>>>> http://www.weontap.com.br
>>>>> _______________________________________________
>>>>> Para remover seu email desta lista, basta enviar um email em branco
>>>>> para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>>>>
>>>> _______________________________________________
>>>> Contact Center em Nuvem
>>>> Home Office
>>>> http://www.weontap.com.br
>>>> _______________________________________________
>>>> Para remover seu email desta lista, basta enviar um email em branco
>>>> para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>>>
>>> _______________________________________________
>>> Contact Center em Nuvem
>>> Home Office
>>> http://www.weontap.com.br
>>> _______________________________________________
>>> Para remover seu email desta lista, basta enviar um email em branco para
>>> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>>
>> _______________________________________________
>> Contact Center em Nuvem
>> Home Office
>> http://www.weontap.com.br
>> _______________________________________________
>> Para remover seu email desta lista, basta enviar um email em branco para
>> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
>
> _______________________________________________
> Contact Center em Nuvem
> Home Office
> http://www.weontap.com.br
> _______________________________________________
> Para remover seu email desta lista, basta enviar um email em branco para
> asteriskbrasil-unsubscribe em listas.asteriskbrasil.org
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200610/43e60d3f/attachment-0001.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: image.png
Tipo: image/png
Tamanho: 49039 bytes
Descrição: não disponível
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200610/43e60d3f/attachment-0002.png>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: image.png
Tipo: image/png
Tamanho: 53385 bytes
Descrição: não disponível
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200610/43e60d3f/attachment-0003.png>


Mais detalhes sobre a lista de discussão AsteriskBrasil