[AsteriskBrasil] Passar uma variável do PHP para shell script
Paulino Kenji Sato
pksato em gmail.com
Quinta Junho 14 14:49:39 BRT 2012
Ola,
2012/6/14 Maisvoipshop Telecom <contato em maisvoipshop.com.br>:
> Pessoal, to tentando rodar o comando originate nao shell, chamando ele pelo
> php, porém nao to conseguindo enviar as variaveis do php para p shell,
> alguem pode dar uma luz. segue o exemplo de como to fazendo, porem ainda sem
> exito. pois as variaveis nao passam para o shell.
>
> arquivo disca.sh
>
> #!/bin/bash
>
> asterisk -rx "originate SIP/$origem/$destino extension $channel@$contexto"
>
>
> arquivo disca.php
>
> <?php
>
> $destino=3194172272;
> $origem=5366275943;
> $channel=83522;
> $contexto='contexto';
>
> system('/disca.sh \"$destino\" \"$origem\" \"$channel\" \"$contexto\"');
>
> ?>
Primeiramente a bronca: NÃO use system() ou exec() para realizar esse
tipo de tarefa.
Em vez disso, use o popen(), ta certo que da mais trabalho, mas e a
forma correta de fazer.
if (popen("asterisk -rx originate SIP/$origem/$destino extension
$channel@$contexto",r)){
echo "chamada em andamento")
} else {
echo "chamada não realizada");
};
pclose();
Mas, isso não e a mesma coisa que usar um callfile?
$fd=fopen("/var/spool/asterisk/outgoing/call_$tempfile.tmp",w)
fwrite($fd,
Channel: SIP/$origem/$destino
Context: contexto
Extension: $channel
);
fclose();
rename("/var/spool/asterisk/outgoing/call_$tempfile.tmp","/var/spool/asterisk/outgoing/call_$tempfile.call");
Possivelmente os parâmetros do callfile estão errados, adaptei da
linha de comando do orginate.
Ah sim, e o objetivo não e passar as variáveis para a shell, e sim os
parâmetros de linha de comando.
Na shell script deveria ser:
asterisk -rx "$2/$1 extension $3l@$4"
Paulino
Mais detalhes sobre a lista de discussão AsteriskBrasil