<div dir="ltr"><div><div><div><div><div>Danilo, <br><br></div>Como você está usando arquivos .call (que para esse seu cenário não é a melhor maneira) você poderá fazer algo na seguinte linha, considerando que os arquivos .call possuem um artifício que é o uso do <b>parametro ARCHIVE</b> que irá informar ao asterisk que, APÓS o arquivo .call ser utilizado, o asterisk deve armazenar um arquivo contendo o RESULTADO dessa ligação no diretório /var/spool/asterisk/outgoing_done/.<br><br>Basta você incluir a linha destacada em vermelho no seu código: <br><br><div><font size="1"> fputs($oSocket, "Channel: $strChannel\r\n");</font></div><div><font size="1"> fputs($oSocket, "Callerid: $strCallerId\r\n");</font></div><div><font size="1"> fputs($oSocket, "Extension: $strExten\r\n");</font></div><div><font size="1"> fputs($oSocket, "Context: $strContext\r\n");</font></div><div><font size="1"> fputs($oSocket, "MaxRetries: $strMaxRetry\r\n");</font></div><div><font size="1"> fputs($oSocket, "RetryTime: $RetryTime\r\n");<font size="2"><br></font></font><font size="2"><span style="color:rgb(255,0,0)"><b> fputs($oSocket, "Archive: yes\r\n");</b></span> <span style="color:rgb(255,0,0)"><b> <---------------------</b></span></font><br></div><div><font size="1"> fputs($oSocket, "WaitTime: $WaitTime\r\n\r\n");<br><br></font></div>Com isso irá ter no diretório /var/spool/asterisk/outgoing_done/ um arquivo equivalente ao .call, porém contendo o resultado da ligação. <br><br></div>De posse desse arquivo, sua atuação poderia ser o seguinte: <br></div>1. após executar esse código discador.php, você direcionar para um outro script (tipo listener.php) que irá ficar em loop verificando se o arquivo de retorno do .call apareceu no diretório /var/spool/asterisk/outgoing_done/. <br></div>2. quando o arquivo aparecer, voce lê o conteúdo, e exibe para o usuario, o retorno da maneira que você desejar (se apenas o código, retorno json, se mensagem completa, etc).<br><br></div>Espero ter ajudado.<br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><b><br></b></div><div><b>Atenciosamente,</b></div>
<div> </div>
<div> </div>
<div><span></span><b><font color="#45818e">Cláudio Éden</font></b> </div><div>Consultor de TI | dCAA | MCDST | ITIL <br>+55 85 8972-1842 <br><br></div><div><a href="http://www.eden.com.br" target="_blank">http://www.eden.com.br</a> </div><div><a href="http://www.asteriskhandson.com.br" target="_blank">http://www.asteriskhandson.com.br</a></div><div><br></div><div><img src="https://docs.google.com/uc?export=download&id=0B7kQ7o32GSoeTUstbzQyVHZlSjA&revid=0B7kQ7o32GSoeY1hQSFp2aUdTaDBpWFRWRDhkUlMzL3hVOWs0PQ"><br><br></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 21 de maio de 2015 11:39, Danilo Almeida <span dir="ltr"><<a href="mailto:daniloricalmeida@gmail.com" target="_blank">daniloricalmeida@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Bom dia, Pessoal!!<div><br></div><div>Surgiu a necessidade de integrar um sistema de terceiro em um servidor que tenho em um cliente.</div><div><br></div><div>O sistema fará uma discagem através de uma URL que criei.</div><div><br></div><div><a href="http://asterisk/discador.php?user=USER&pass=SENHA&origem=RAMAL&destino=NUMERO" target="_blank">http://asterisk/discador.php?user=USER&pass=SENHA&origem=RAMAL&destino=NUMERO</a></div><div><br></div><div>segue codígo:</div><div><br></div><div><div><font size="1"><?php</font></div><div><font size="1">include_once "Connection.class.php";</font></div><div><font size="1"><br></font></div><div><font size="1"> # Usuario e senha para acesso ao sistema</font></div><div><font size="1"> $origem = $_GET['origem'];</font></div><div><font size="1"> $destino = $_GET['destino'];</font></div><div><font size="1"><br></font></div><div><font size="1">$conn = new Connection();</font></div><div><font size="1"><br></font></div><div><font size="1"> $user = anti_injection($_GET['user']);</font></div><div><font size="1"> $pass = anti_injection($_GET['pass']);</font></div><div><font size="1"><br></font></div><div><font size="1"> $sql1 = 'SELECT * FROM tb_usuarios WHERE user_login = \''.$user.'\'AND user_senha = \''.$pass.'\'';</font></div><div><font size="1"> $rs = mysql_query($sql1);</font></div><div><font size="1"> if(mysql_num_rows($rs) > 0 ){</font></div><div><font size="1"> $permissao = TRUE;</font></div><div><font size="1"> }else{</font></div><div><font size="1"> $permissao = FALSE;</font></div><div><font size="1"> }</font></div><div><font size="1"><br></font></div><div><font size="1"><br></font></div><div><font size="1">if(($permissao == TRUE)AND($origem != "")AND($destino != "")){ #informe o endereco ip do seu asterisk</font></div><div><font size="1"><br></font></div><div><font size="1"> $strHost = "127.0.0.1";</font></div><div><font size="1"> </font></div><div><font size="1"> #especifique o usuario que ira conectar ao CLI (deve estar definido em /etc/asterisk/manager.conf)</font></div><div><font size="1"> $strUser = "USUARIO";</font></div><div><font size="1"><br></font></div><div><font size="1"> #senha para o usuario acima</font></div><div><font size="1"> $strSecret = "SENHA";</font></div><div><font size="1"><br></font></div><div><font size="1"> #especifique o canal (extension) que vc deseja receber estas ligacoes</font></div><div><font size="1"> #exemplo: SIP/XXX, IAX2/XXXX, ZAP/XXXX,</font></div><div><font size="1"> $strChannel = "Local/".$origem."@contexto-discador";</font></div><div><font size="1"><br></font></div><div><font size="1"> #informe o contexto que ira processar a ligacao para PSTN</font></div><div><font size="1"> $strContext = "contexto-pabx";</font></div><div><font size="1"><br></font></div><div><font size="1"> #especifique a prioridade do contexto acima</font></div><div><font size="1"> $strPriority = "1";</font></div><div><font size="1"><br></font></div><div><font size="1"> #especifique a quantidade de tentativas</font></div><div><font size="1"> $strMaxRetry = "2";</font></div><div><font size="1"><br></font></div><div><font size="1"> $WaitTime = "30";</font></div><div><font size="1"><br></font></div><div><font size="1"> #Duração entre uma tentativa e outra</font></div><div><font size="1"> $RetryTime = "15";</font></div><div><font size="1"><br></font></div><div><font size="1"> #obtem o numero a ser discado</font></div><div><font size="1"> $strExten = $destino;</font></div><div><font size="1"><br></font></div><div><font size="1"> #especifica um callerid para a ligacao</font></div><div><font size="1"> $strCallerId = $origem;</font></div><div><font size="1"><br></font></div><div><font size="1"> #nome do arquivo a ser criado</font></div><div><font size="1"> $arquivo_tmp = "/tmp/".$strExten.".call";</font></div><div><span style="white-space:pre-wrap"><font size="1">        </font></span></div><div><font size="1"> #diretorio a ser movido após escrita</font></div><div><font size="1"> $arquivo_call = "/var/spool/asterisk/outgoing/".$strExten.".call";</font></div><div><font size="1"><br></font></div><div><font size="1"> #abre arquivo</font></div><div><font size="1"> $oSocket = $fp = fopen($arquivo_tmp, "w");</font></div><div><font size="1"><br></font></div><div><font size="1"> fputs($oSocket, "Channel: $strChannel\r\n");</font></div><div><font size="1"> fputs($oSocket, "Callerid: $strCallerId\r\n");</font></div><div><font size="1"> fputs($oSocket, "Extension: $strExten\r\n");</font></div><div><font size="1"> fputs($oSocket, "Context: $strContext\r\n");</font></div><div><font size="1"> fputs($oSocket, "MaxRetries: $strMaxRetry\r\n");</font></div><div><font size="1"> fputs($oSocket, "RetryTime: $RetryTime\r\n");</font></div><div><font size="1"> fputs($oSocket, "WaitTime: $WaitTime\r\n\r\n");</font></div><div><font size="1"><br></font></div><div><font size="1"> fclose(oSocket);</font></div><div><font size="1"><br></font></div><div><font size="1">system("mv ".$arquivo_tmp." ".$arquivo_call);</font></div><div><font size="1"><br></font></div><div><font size="1"> //copy($arquivo_tmp,$arquivo_call);</font></div><div><font size="1">//unlink($arquivo_tmp);</font></div><div><font size="1"><br></font></div><div><font size="1"> echo "ok";</font></div><div><font size="1"><br></font></div><div><font size="1">exit;</font></div><div><font size="1"><br></font></div><div><font size="1">}else{</font></div><div><font size="1">echo "Parametros invalidos";</font></div><div><font size="1"><br></font></div><div><font size="1">exit;</font></div><div><font size="1">}</font></div><div><font size="1">?></font></div><div><br></div><div>Através dessa URL esta realizando ligação normalmente, o que gostaria da ajuda de vocês, é uma maneira de retornar o status da chamada através dessa mesma URL para o sistema.</div><div><br></div><div>EX: 0 - ok, 1 - ramal indisponivel, etc</div><div><br></div><div>Sei que tem alguma forma, gostaria de saber se alguém já desenvolveu alguma coisa assim e pode me dar uma dica.</div><div><br></div><div>OBS: Estou escrevendo um arquivo .call e jogando ele dentro do outgoing do asterisk para gerar a chamada. No asterisk 11 tentei fazer com o originate e não obtive sucesso.</div><div><br></div><div>Desde já agradeço.. abraços!!</div><div><br clear="all"><div><div><div dir="ltr"><b style="background-color:rgb(255,255,255)"><font color="#0000ff">att</font></b><span class="HOEnZb"><font color="#888888"><div><b style="background-color:rgb(255,255,255)"><font color="#0000ff">Danilo Almeida</font></b></div></font></span></div></div></div>
</div>
</div></div>
<br>_______________________________________________<br>
WORKOFFEE KHOMP: em Junho serão 2 edições do workshop<br>
gratuito da Khomp: dia 11 em Brasília, e dia 18 em Curitiba<br>
Aproveite e conheça os lançamentos: EBS Server PRO e UMG 100<br>
Garanta sua vaga e saiba mais em: <a href="http://www.workoffee.com.br" target="_blank">www.workoffee.com.br</a><br>
_______________________________________________<br>
DIGIVOICE: Fabricante pioneiro em Banco de Canais e Placas E1, GSM, FXO e FXS para Asterisk e Elastix. Temos Cursos de Telefonia IP e Asterisk.<br>
Construa soluções de PABX IP com produtos DigiVoice - visite <a href="http://www.digivoice.com.br" target="_blank">www.digivoice.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">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a><br></blockquote></div><br></div>