<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">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. <br>Abaixo o script que estou fazendo, até onde consegui ir, caso ajude alguém.<br><br>========================================================</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br>#!/bin/php<br><br><?php<br><br>// variaveis para o AMI<br>$host = "IP_DO_ASTERISK";<br>$user = "USER_AMI";<br>$pass = "SENHA_AMI";<br>$ramal = $argv[1];<br><br>function connect($host, $user, $pass)<br>{<br> $timeout = 10;<br> $socket = fsockopen($host,"5038", $errno, $errstr, $timeout);<br> fputs($socket, "Action: Login\r\n");<br> fputs($socket, "UserName: $user\r\n");<br> fputs($socket, "Secret: $pass\r\n\r\n");<br><br> return $socket;<br>}<br><br>function get_response($socket)<br>{<br> $line = "";<br> $response = "";<br><br> while ($line != "\r\n")<br> {<br> $line = fgets($socket,128);<br> $response .= $line;<br> }<br><br> return $response;<br>}<br><br>function parse_response($response, $event)<br>{<br> $exploded = explode("\r\n",$response);<br><br> foreach ($exploded as $line)<br> {<br> if (strlen($line) >= strlen($event))<br> {<br> if (substr($line,0,strlen($event)) == $event)<br> {<br> return substr($line, strlen($event)+2);<br> }<br> }<br> }<br>}<br></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><span style="font-family:Arial,Helvetica,sans-serif">$socket = connect($host, $user, $pass);</span></div>$response = get_response($socket);<br>$parsed = parse_response($response, "Message");<br><br>if ($parsed == "Authentication accepted")<br>{<br> echo "Logado\n";<br> echo "=======================\n";<br>}<br><br>fputs($socket, "ACTION: ExtensionState\r\n" );<br>fputs($socket, "Context: procergs-local-outros\r\n" );<br>fputs($socket, "Exten: $ramal\r\n" );<br>fputs($socket, "ActionID: 1234\r\n\r\n" );<br><br>$response = get_response($socket);<br>$parsed = parse_response($response, "ExtensionState");<br><br>echo "Response: \n";<br>echo "$response \n";<br>echo "Parsed: \n";<br>echo "$parsed \n";<br>echo "=======================\n";<br><br>fclose($socket);<br><br>echo "\n";<br><br>?><br><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">=================================================</div><br><br>---------------------------------------------------------------<br>Franque Custódio<br><a href="mailto:franque@gmail.com" target="_blank">franque@gmail.com</a><br>---------------------------------------------------------------</div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em ter., 9 de jun. de 2020 às 22:44, Thiago Lopes Varanda <<a href="mailto:thg.varanda@gmail.com">thg.varanda@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Você pode capturar evento 'ExtensionsStatus' no AMI.<div><br></div><div><a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerEvent_ExtensionStatus" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerEvent_ExtensionStatus</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em ter., 9 de jun. de 2020 às 22:21, Júlio Gadioli Soares <<a href="mailto:jugaso@gmail.com" target="_blank">jugaso@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Boa noite, Franque, <div><br></div><div>vc pediu uma idéia para começar... segue ai, podem ter soluções melhores, mas com a cron isso aqui já te ajuda ...</div><div>incremente o shell script que dá tudo certo!</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">#!/bin/bash<br><br>SIP6001=`asterisk -x "sip show peers" | grep -w OK | awk '{print $1}' | awk -F'/' '{print $1}' | grep "6001"`<br><br>if [ -z $SIP6001 ]; then<br> echo "OFF-LINE"<br>else<br> echo "Online"<br>fi<br></blockquote><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em ter., 9 de jun. de 2020 às 09:21, Franque Custódio <<a href="mailto:franque@gmail.com" target="_blank">franque@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Bom dia, amigos da lista.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">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). </div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Alguém tem alguma idéia de por onde começar? </div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">Valeu!</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"><br></div><div><div dir="ltr"><br><br>---------------------------------------------------------------<br>Franque Custódio<br><a href="mailto:franque@gmail.com" target="_blank">franque@gmail.com</a><br>---------------------------------------------------------------</div></div></div>
_______________________________________________<br>
Contact Center em Nuvem<br>
Home Office<br>
<a href="http://www.weontap.com.br" rel="noreferrer" target="_blank">http://www.weontap.com.br</a><br>
_______________________________________________<br>
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org" target="_blank">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></blockquote></div>
_______________________________________________<br>
Contact Center em Nuvem<br>
Home Office<br>
<a href="http://www.weontap.com.br" rel="noreferrer" target="_blank">http://www.weontap.com.br</a><br>
_______________________________________________<br>
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org" target="_blank">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></blockquote></div>
_______________________________________________<br>
Contact Center em Nuvem<br>
Home Office<br>
<a href="http://www.weontap.com.br" rel="noreferrer" target="_blank">http://www.weontap.com.br</a><br>
_______________________________________________<br>
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org" target="_blank">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></blockquote></div>