[AsteriskBrasil] Callback simples
Helvio Junior
helvio.listas em gmail.com
Quarta Setembro 14 13:31:28 BRT 2016
Vanessa,
Segue abaixo um script que uso.
Ps: Como fiz alguns ajustes retirando coisas aqui da empresa do script
pode ser que tenha alguns ajuste ou erro a se corrigir, mas ja serve
como base.
Para maiores informações consultar:
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out
Extensions.conf
exten = _X.,1,AGI(callback.php)
#!/usr/bin/php -q
<?php
/*
|--------------------------------------------------------------------------
| READ-ME
|--------------------------------------------------------------------------
| Salve este conteúdo em /var/lib/asterisk/agi-bin/callback.php
|
| Antes de executar este script será necessário instalar e habilitar as bibliotecas
|
| apt-get install -y php-http php5-dev libcurl3 libpcre3-dev libcurl4-openssl-dev
|
| Copiar a biblioteca PHPAGI disponível em (http://phpagi.sourceforge.net/)
| no diretório /var/lib/asterisk/agi-bin/phpagi-2.20
*/
require_once __DIR__.'/phpagi-2.20/phpagi.php';
openlog(pathinfo(__FILE__)['basename'], LOG_PID | LOG_PERROR, LOG_LOCAL0);
try{
$agi = new AGI();
$agi->exec('VERBOSE','"Entrada da CallBack" 4');
$caller = '';
$exten = '';
$channel = '';
$outputContext = 'saida';
$forwardTo = '1000';
$uniqueId = $agi->request['agi_uniqueid'];
if ((isset($agi->request['agi_callerid'])) && ($agi->request['agi_callerid'] != ''))
$caller = $agi->request['agi_callerid'];
if ((isset($agi->request['agi_extension'])) && ($agi->request['agi_extension'] != ''))
$exten = $agi->request['agi_extension'];
if ((isset($agi->request['agi_channel'])) && ($agi->request['agi_channel'] != ''))
$channel = $agi->request['agi_channel'];
if (empty($caller) || empty($exten) || empty($channel) || (strlen($channel) < 2))
{
$agi->exec('VERBOSE','"CallerID, Channel ou Exten não fornecidos" 3');
die();
}
$cId = 'cb-' . date('U') . '-' . $caller;
$filename = 'call_'.$cId.'.call';
if (strlen($cId) > 19)
$cId = substr($cId,0,19);
try{
$myfile = fopen("/tmp/{$filename}", "w");
} catch (Exception $e) {
throw new Exception("Falha abrindo o arquivo de ligação");
}
$txt = "Channel: Local/".$caller."@".$outputContext."\n";
fwrite($myfile, $txt);
$txt = "Context: ".$outputContext."\n";
fwrite($myfile, $txt);
$txt = "Extension: ".$forwardTo."\n";
fwrite($myfile, $txt);
$txt = "Priority: 1\n";
fwrite($myfile, $txt);
$txt = "CallerID: <$caller>\n";
fwrite($myfile, $txt);
$txt = "Codecs: gsm,alaw,ulaw\n";
fwrite($myfile, $txt);
$txt = "MaxRetries: 3\n";
fwrite($myfile, $txt);
$txt = "RetryTime: 45\n";
fwrite($myfile, $txt);
$txt = "WaitTime: 90\n";
fwrite($myfile, $txt);
$txt = "Account: $cId\n";
fwrite($myfile, $txt);
$txt = "Archive: yes\n";
fwrite($myfile, $txt);
$txt = "SetVar: CHANNEL(language)=pt_BR\n";
fwrite($myfile, $txt);
$txt = "SetVar: CDR(userfield)=$cId\n";
fwrite($myfile, $txt);
fclose($myfile);
try{
exec('touch -d "$(date -r /tmp/'.$filename.') + 20 seconds" "/tmp/'.$filename.'"');
} catch (Exception $e) {}
exec('sudo chmod 777 /tmp/'.$filename.'; sudo mv /tmp/'.$filename.' /var/spool/asterisk/outgoing/');
//Antende a chamada
$agi->answer();
sleep(1);
//Reset o CDR, para no relatório só marcar a chamada como atendida quando realmente for atendida por uma fila
//$agi->exec('ResetCDR','v');
//Toca o audio de callback
$agi->stream_file('nomedoarquivodeaudio');
//Desliga a ligação
$agi->hangup();
return 0;
} catch (Exception $e) {
$agi->exec("NOOP", '"'.$e->getMessage().'"');
$agi->exec("GOTO", '"interno,'.$exten.',1"');
return 0;
}
closelog();
Att,
Hélvio Junior
dCAA - Digium Certified Asterisk Administrator
SafeId - Gestão de identidades e Acessos
+55 41 | 9855-9300, single-sign-on.com.br
helvio.junior em safetrend.com.br
Em 14/09/2016 12:01, Vanessa Sather escreveu:
> Bom dia.
> Sei que é pedir demais porem estou na urgência e pergunto se alguem
> tem um script simples para dialplan mesmo contemplando callback?
> Gostaria de dar um toque no meu número fixo através do celular e o
> mesmo reconhecer meu cel e retornar a chamada.
> Muito obrigada.
> Vanessa.
>
>
> _______________________________________________
> KHOMP: completa linha de placas externas FXO, FXS, GSM e E1
> Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7
> Intercomunicador e acesso remoto via rede IP e telefones IP
> Conheça todo o portfólio em www.Khomp.com
> _______________________________________________
> 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://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20160914/2306d3d0/attachment.html>
Mais detalhes sobre a lista de discussão AsteriskBrasil