Asterisk IVR - variável de entrada e ir para um URL de saída

2

Eu tenho um sistema IVR de saída Asterisk configurado, e gostaria que ele falasse com minha pilha LAMP em um servidor diferente. Eu configurei o PHP para receber dados do servidor IVR e gravá-lo no MySQL, mas não consigo descobrir como obter o Asterisk end para ir para o URL do php e ainda não descobri como insira uma variável no script IVR do servidor PHP.

Na minha configuração atual, um script PHP é autenticado no servidor asterisco e, em seguida, envia um comando de saída de chamada. A chamada de saída, em seguida, vai para um script de chamada listado em extensions.conf. Minha primeira pergunta é: como eu envio uma variável através da URL para o extensions.conf, como o nome da pessoa que estou chamando? Tenho que criar um arquivo .call com o nome toda vez e enviá-lo por FTP para o servidor Asterisk?

Em determinados pontos do script de chamada, gostaria que o Asterisk abrisse uma URL (do formato 192.168.123.123/ivr/record?question=$question&answer=$answer). Ele não precisa processar nenhum dado da URL, é apenas dizer ao PHP para integrar os dados da chamada IVR no sistema LAMP existente. Existe uma maneira de eu fazer isso? E se sim, como faço isso?

<?php 
//IVR controller on the PHP server. Our employee clicks a button and IVR makes a call.
//...
curl_setopt($ch, CURLOPT_URL, $call_url = $asterisk_server ."/rawman" .
    "?action=originate&channel=". $sip_trunk . $outbound_prefix .    
    $next_call['phone_number'] . 
    "&extension=$extension&context=outgoingIVR&priority=1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $auth_cookie);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$urlresult = curl_exec($ch);
curl_close($ch);
//...
?>

;Extensions.conf on the IVR server
[outgoingIVR]
exten => 500,1,Wait(0.25)
exten => 500,n,Answer()
exten => 500,n,Wait(0.75)
exten => 500,n,Festival("Hi. This is company name. We are the guys that do the thing.")
exten => 500,n, Goto(question1,s,1)

[question1]
exten => s,1(start),Wait(0.5)
;@TODO: read variable into festival here.
exten=> s,n, festival("Are You Jane Doe")
   same => n,WaitExten()
exten => 1,1, Goto(are-you-sure,s,1)
;@TODO: save yes response here
exten => 2,1, goto(get-jane,s,1)
;@TODO: save no response here
    
por Chad 24.12.2012 / 21:21

1 resposta

1

Você está procurando func_curl . Pode não ser construído em seu sistema por padrão, mas a página que eu referenciei tem instruções para construí-lo. Aqui está o exemplo fornecido:

exten => s,1,Set(foo=${CURL(http://somewhere.com/somepage.html?x=5&y=4)})
    
por 07.01.2013 / 01:36

Tags