[AsteriskBrasil] Monitorar quando um ramal se loga

Franque Custódio franque em gmail.com
Quarta Junho 10 09:47:22 -03 2020


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 at gmail.com
---------------------------------------------------------------


Em ter., 9 de jun. de 2020 às 22:44, Thiago Lopes Varanda <
thg.varanda at 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 at 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 at 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 at 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 at 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 at 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 at listas.asteriskbrasil.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20200610/5463bd90/attachment.html>


Mais detalhes sobre a lista de discussão AsteriskBrasil