[AsteriskBrasil] AGI - Shell Script

Deivison Moraes moraesdeivison em gmail.com
Quarta Maio 30 07:24:36 BRT 2012


Ta ai amigo.

Bom, pelo que eu fiz de testes, o serviço da telein da uma facilidade 
enorme pra gente, (e bem menas linhas no extensions.conf rsrs), me 
parece ser muito bom,
mas ainda estou no inicio do uso.

No meu caso, para um ramal discar pelo algoritmo de escolha da telein 
ele digita 1+numero (para local) e 1+DDD+numero para interurbano.

qualquer duvida estou a disposição !

[]'s



#!/usr/bin/php -q
<?php

//Agi feito para integração com a Telein
//Inserir em /var/lib/asterisk/agi-bin

require_once ('phpagi.php');

$agi = new AGI();

$agi->verbose("CALLER ID: " . $agi->request[agi_callerid]);

$callerid = $agi->request["agi_callerid"];

$agi->verbose("EXTENSION: " . $agi->request[agi_extension]);

$extension = $agi->request["agi_extension"];

//Identificar se extenção está sem o DDD caso esteja insira e remove o 
digito de tom de linha (0)
//Plano de discagem (1)

$ChecarNUM = substr($extension, 1);

if (strlen($ChecarNUM) == 8 ) {
     //Trocar pelo ddd local onde é 33
     $Number = "33$ChecarNUM";

} else {

     if ("$DDD[0]" == "0") {

         $Number = substr($ChecarNUM, 1);

     } else {
         $Number = $ChecarNUM ;
     };


};


$consulta = exec("php /var/lib/asterisk/agi-bin/consulta.php $Number");



$NUM = explode('#', $consulta);

//Exemplos de funcionamento
//       $agi->exec("NoOp", "Teste variavel $consulta");
//       $agi->exec("NoOp", "testando variavel num $NUM[1]");
  //      $agi->exec("NoOp", "testando variavel num $NUM[0]");
         //$agi->exec("Dial", "SIP/faleok/$consulta");
//Plano de discagem via AGI consultas direto na Telein
/*
$VIVO = "20";
$TELEMIG = "23";
$TIM = "41";
$CLARO = "21";
$FIXO = "98";
$NAOENCONTRADO = "99";
*/

switch ($NUM[0]) {
     case '20':
         $agi->verbose("Numero TELEMIG/VIVO: " . $NUM[1]);
         $agi->exec("Dial", "IAX2/trunk-iax/0$NUM[1],300,Tt");
         break;

     case '23':
         $agi->verbose("Numero VIVO: " . $NUM[1]);
         $agi->exec("Dial", "IAX2/trunk-iax/0$NUM[1],300,Tt");
         break;

     case '41':
         $agi->verbose("Numero TIM: " . $NUM[1]);
         $agi->exec("Dial", "IAX2/trunk-iax/0$NUM[1],300,Tt");
             break;

     case '21':
         $agi->verbose("Numero CLARO: " . $NUM[1]);
         $agi->exec("Dial", "IAX2/trunk-iax/0$NUM[1],300,Tt");
         $agi->exec("Dial", "SIP/tronco/029$NUM[1],300,Tt");

             break;

     case '98':
         $agi->verbose("Numero FIXO: " . $NUM[1]);
         $agi->exec("Dial", "SIP/tronco/029$NUM[1],300,Tt");
             break;
     //default:
     //    $agi->verbose("Numero Disconhecido: " . $NUM[1]);
     //    $agi->exec("Dial", "SIP/tronco/$NUM[1]","Tt");
         //Codico caso não se encaixe em nehum acima
     //    break;
}



$agi->verbose("Numero digitado: " . $consulta);

//$agi->hangup();

exit();



Em 29-05-2012 23:08, Alberto Andrade escreveu:
> Posta aí Deivison!
> Aliás, o que você diz do serviço da Telein?
>
>
> -- 
> Alberto Andrade
> Sent with Sparrow <http://www.sparrowmailapp.com/?sig>
>
> On Tuesday, 29 de May de 2012 at 22:48, Deivison Moraes wrote:
>
>> Boa noite !
>>
>> Eu tenho um AGI parecido com o que você necessita porem em PHP, alguma
>> preferência por usar shell script ?
>>
>> Mandei há um tempo atrás um tópico relacionado a AGI + PHP, tomei uns
>> "tocos" mas consegui aprender mais ou menos. O meu eu uso para consulta
>> de portabilidade, junto ao serviço da telein, está funcionando muito
>> bem. Se quiser posso postar aqui.
>>
>> Em 29-05-2012 22:13, Carlos Eduardo B. Rovaris escreveu:
>>> Boa noite,
>>>
>>>
>>> Gostaria de saber se alguém tem AGI em desenvolvida em Shell Script que
>>> poderia me auxiliar em alguns pontos que estou com dificuldades de 
>>> resolver.
>>>
>>>
>>> Segue minha configuração:
>>>
>>> ->>>> Extensions.conf
>>>
>>> exten => 500,1,agi(2test.sh <http://2test.sh>)
>>> exten => 500,n,NoOP(${consulta})
>>>
>>> ############################################################
>>>
>>> ->>>> Script Shell:
>>>
>>> #!/bin/bash
>>>
>>> numero=48xxxxxxxx
>>>
>>> consulta= ## procedimento de consulta do valor armazenado na variavel
>>> numero ##
>>>
>>> echo "SET VARIABLE consulta $consulta "
>>>
>>> ############################################################
>>>
>>> ->>>> Debug Asterisk console:
>>>
>>> Verbosity is at least 20
>>> == Using SIP RTP CoS mark 5
>>> -- Executing [500 em external:1] AGI("SIP/1600-00000038", "2test.sh 
>>> <http://2test.sh>")
>>> in new stack
>>> -- Launched AGI Script /var/lib/asterisk/agi-bin/2test.sh 
>>> <http://2test.sh>
>>> <SIP/1600-00000038>AGI Tx>> agi_request: 2test.sh <http://2test.sh>
>>> <SIP/1600-00000038>AGI Tx>> agi_channel: SIP/1600-00000038
>>> <SIP/1600-00000038>AGI Tx>> agi_language: en
>>> <SIP/1600-00000038>AGI Tx>> agi_type: SIP
>>> <SIP/1600-00000038>AGI Tx>> agi_uniqueid: 1338338846.56
>>> <SIP/1600-00000038>AGI Tx>> agi_version: 1.8.12.0
>>> <SIP/1600-00000038>AGI Tx>> agi_callerid: 1600
>>> <SIP/1600-00000038>AGI Tx>> agi_calleridname: CEBR2
>>> <SIP/1600-00000038>AGI Tx>> agi_callingpres: 0
>>> <SIP/1600-00000038>AGI Tx>> agi_callingani2: 0
>>> <SIP/1600-00000038>AGI Tx>> agi_callington: 0
>>> <SIP/1600-00000038>AGI Tx>> agi_callingtns: 0
>>> <SIP/1600-00000038>AGI Tx>> agi_dnid: 500
>>> <SIP/1600-00000038>AGI Tx>> agi_rdnis: unknown
>>> <SIP/1600-00000038>AGI Tx>> agi_context: external
>>> <SIP/1600-00000038>AGI Tx>> agi_extension: 500
>>> <SIP/1600-00000038>AGI Tx>> agi_priority: 1
>>> <SIP/1600-00000038>AGI Tx>> agi_enhanced: 0.0
>>> <SIP/1600-00000038>AGI Tx>> agi_accountcode:
>>> <SIP/1600-00000038>AGI Tx>> agi_threadid: 1095186752
>>> <SIP/1600-00000038>AGI Tx>>
>>> <SIP/1600-00000038>AGI Rx<< SET VARIABLE consulta 5
>>> <SIP/1600-00000038>AGI Tx>> 200 result=1
>>> [May 30 04:47:28] ERROR[14217]: utils.c:1164 ast_carefulwrite: write()
>>> returned error: Broken pipe
>>> --<SIP/1600-00000038>AGI Script 2test.sh <http://2test.sh> 
>>> completed, returning 0
>>> -- Executing [500 em external:2] NoOp("SIP/1600-00000038", "5") in new
>>> stack
>>> -- Auto fallthrough, channel 'SIP/1600-00000038' status is 'UNKNOWN'
>>> server*CLI>
>>>
>>> ############################################################
>>>
>>> Basicamente o que estou precisando resolver:
>>> - como armazenar o valor da "agi_extension" na variavel "numero" do
>>> Shell Script ?
>>>
>>> - Como faço para encaminhar a chamada de acordo com o valor de retorno
>>> da AGI ?
>>>
>>> ex: No exemplo do log, disquei 500, e através da AGI retornou o 
>>> valor "5".
>>>
>>> Assim gostaria de fazer:
>>>
>>> Caso o valor seja "4", encaminha para Trunk1
>>> Caso o valor seja "5", encaminha para Trunk2
>>> Caso o valor seja "6", encaminha para Trunk3
>>>
>>>
>>> Agradeço toda e qualquer ajuda.
>>>
>>> _______________________________________________
>>> KHOMP Inovação: External Board Series
>>> Módulos de 1/2 rack e 1U para todas as interfaces e soluções 
>>> Asterisk e FreeSWITCH.
>>> Tenha a External Series Experience na sua aplicação. Visite 
>>> www.khomp.com <http://www.khomp.com>
>>> _______________________________________________
>>> DIGIVOICE Fabricante de Placas de Voz e Channel Bank
>>> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
>>> Centro Treinamento - Curso de PABX IP - Asterisk - Site 
>>> www.digivoice.com.br <http://www.digivoice.com.br>
>>> ________
>>> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício 
>>> do mercado.
>>> email: yealink em commlogik.com.br | www.commlogik.com.br 
>>> <http://www.commlogik.com.br> | (11) 5503-1011
>>> ______________________________________________
>>> Para remover seu email desta lista, basta enviar um email em branco 
>>> para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org 
>>> <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>
>>
>> _______________________________________________
>> KHOMP Inovação: External Board Series
>> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk 
>> e FreeSWITCH.
>> Tenha a External Series Experience na sua aplicação. Visite 
>> www.khomp.com <http://www.khomp.com>
>> _______________________________________________
>> DIGIVOICE Fabricante de Placas de Voz e Channel Bank
>> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
>> Centro Treinamento - Curso de PABX IP - Asterisk - Site 
>> www.digivoice.com.br <http://www.digivoice.com.br>
>> ________
>> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício 
>> do mercado.
>> email: yealink em commlogik.com.br | www.commlogik.com.br 
>> <http://www.commlogik.com.br> | (11) 5503-1011
>> ______________________________________________
>> Para remover seu email desta lista, basta enviar um email em branco 
>> para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org 
>> <mailto:asteriskbrasil-unsubscribe em listas.asteriskbrasil.org>
>
>
> _______________________________________________
> KHOMP Inovação: External Board Series
> Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e FreeSWITCH.
> Tenha a External Series Experience na sua aplicação. Visite www.khomp.com
> _______________________________________________
> DIGIVOICE  Fabricante de Placas de Voz e Channel Bank
> 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM
> Centro Treinamento - Curso de PABX IP -  Asterisk  - Site  www.digivoice.com.br
> ________
> YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado.
> email: yealink em commlogik.com.br | www.commlogik.com.br | (11) 5503-1011
> ______________________________________________
> 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://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20120530/a8538ef2/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil