[AsteriskBrasil] Monitorar quando um ramal se loga

Richard Amaral de Jesus richard.ajesus em gmail.com
Quarta Junho 10 10:25:02 -03 2020


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200610/f458db20/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/f458db20/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/f458db20/attachment-0003.png>


Mais detalhes sobre a lista de discussão AsteriskBrasil