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 fran...@gmail.com --------------------------------------------------------------- Em ter., 9 de jun. de 2020 às 22:44, Thiago Lopes Varanda < thg.vara...@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 < > jug...@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 <fran...@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 >>> fran...@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-unsubscr...@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-unsubscr...@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-unsubscr...@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-unsubscr...@listas.asteriskbrasil.org