[AsteriskBrasil] Script em php para efetuar chamadas ( http e Shellscript )
Sebastiao Rocha
lixo em interlinksistemas.com.br
Segunda Abril 13 17:04:15 BRT 2009
AMI_login($oSocket, '$usuario, $password) . "<br>";
correto -> AMI_login($oSocket, $usuario, $password) . "<br>";
sem a aspa simples antes do $usuario.
----- Original Message -----
From: Sebastiao Rocha
To: asteriskbrasil em listas.asteriskbrasil.org
Sent: Monday, April 13, 2009 4:44 PM
Subject: [AsteriskBrasil] Script em php para efetuar chamadas ( http e Shellscript )
Obs, fiz a alteração com o intuito de auxiliar, no entanto para uso como shell script, não realizei os testes após modificar.
Para utilizar, efetue as seguinte alterações em seu asterisk.
Conteudo do arquivo /etc/asterisk/manager.conf
------------------------------------------------------------------------------------------
; AMI - The Asterisk Manager Interface
[general]
displaysystemname = yes
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0
[admin]
secret = coloque aqui a senha para acesso ao manager AMI
read=system,call,log,verbose,command,agent,user,config
write=system,call,log,verbose,command,agent,user,config
permit=127.0.0.1; ou permita o uso via outro computador/rede ex: 192.168.0.0/24
; Authorization for various classes
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
------------------------------------------------------------------------------------------
Conteudo do arquivo chamada.php "soemnte para envio via http"
------------------------------------------------------------------------------------------
<?php
// Defina aqui as configurações....
$usuario = 'usuario definido no manager.conf';
$password = 'senha definida no manager.conf';
$context = 'coloque aqui o contexto para efetuar a chamada'
$callerid = 'coloque aqui o numero que vai aparecer no ramal';
if ( isset( $_POST['telefone']) && isset($_POST['ramal']) ) {
function AMI_sip_status($socket, $sip)
{
fputs($socket, "ACTION: ExtensionState\r\n");
fputs($socket, "Context: ". $context . "\r\n");
fputs($socket, "Exten: " . $ramal . "\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
return fgets($socket);
}
function AMI_originate($socket, $phonenumber)
{
fputs($socket, "Action: originate\r\n");
fputs($socket, "Timeout: 30000\r\n");
fputs($socket, "CallerId: " . $callerid <$phonenumber>\r\n");
fputs($socket, "RetryTime: 45\r\n");
fputs($socket, "WaitTime: 30\r\n");
fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
fputs($socket, "Exten: $phonenumber\r\n");
fputs($socket, "Context: ". $context . "\r\n");
fputs($socket, "Priority: 1\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
$result = fgets($socket);
echo $result;
}
function AMI_login($socket, $username, $password)
{
fputs($socket, "Action: login\r\n");
fputs($socket, "Username: $username\r\n");
fputs($socket, "Secret: $password\r\n\r\n");
fputs($socket, "Events: off\r\n\r\n");
return fgets($socket);
}
if ( isset($_POST['telefone']) && inset($_POST['ramal']) ) {
$number = strtolower($_POST['telefone']); // Número a chamar
$ramal = $_POST['ramal']; // Ramal que será chamado ao ser atendida a chamada efetuada.
$errno = 0;
$errstr = 0;
$oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
if (!$oSocket)
{
echo "Não foi possível completar a chamada...";
}
else
{
fgets($oSocket);
AMI_login($oSocket, '$usuario, $password) . "<br>";
AMI_originate($oSocket, $number) . "<br>";
fputs($oSocket, "Action: Logoff\r\n\r\n");
fclose($oSocket);
}
}
}
<?php
Conteudo do arquivo chamada.php "somente para envio via shell script"
------------------------------------------------------------------------------------------
#!/usr/bin/php -q
<?php
//Como utilizar:
// ./chamada.php telefone ramal
// ./chamada.php 03432564400 2000
// Defina aqui as configurações....
$usuario = 'usuario definido no manager.conf';
$password = 'senha definida no manager.conf';
$context = 'coloque aqui o contexto para efetuar a chamada'
$callerid = 'coloque aqui o numero que vai aparecer no ramal';
if ( isset( $argv[1] ) && isset($argv[2]) ) {
function AMI_sip_status($socket, $sip)
{
fputs($socket, "ACTION: ExtensionState\r\n");
fputs($socket, "Context: ". $context . "\r\n");
fputs($socket, "Exten: " . $ramal . "\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
return fgets($socket);
}
function AMI_originate($socket, $phonenumber)
{
fputs($socket, "Action: originate\r\n");
fputs($socket, "Timeout: 30000\r\n");
fputs($socket, "CallerId: " . $callerid <$phonenumber>\r\n");
fputs($socket, "RetryTime: 45\r\n");
fputs($socket, "WaitTime: 30\r\n");
fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
fputs($socket, "Exten: $phonenumber\r\n");
fputs($socket, "Context: ". $context . "\r\n");
fputs($socket, "Priority: 1\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
$result = fgets($socket);
echo $result;
}
function AMI_login($socket, $username, $password)
{
fputs($socket, "Action: login\r\n");
fputs($socket, "Username: $username\r\n");
fputs($socket, "Secret: $password\r\n\r\n");
fputs($socket, "Events: off\r\n\r\n");
return fgets($socket);
}
if ( isset($_POST['telefone']) && inset($_POST['ramal']) ) {
$number = strtolower($argv[1]); // Número a chamar
$ramal = $argv[2]; // Ramal que será chamado ao ser atendida a chamada efetuada.
$errno = 0;
$errstr = 0;
$oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
if (!$oSocket)
{
echo "Não foi possível completar a chamada...";
}
else
{
fgets($oSocket);
AMI_login($oSocket, '$usuario, $password) . "<br>";
AMI_originate($oSocket, $number) . "<br>";
fputs($oSocket, "Action: Logoff\r\n\r\n");
fclose($oSocket);
}
}
}
?>
----- Original Message -----
From: Ricardo Guedes de Carvalho
To: asteriskbrasil em listas.asteriskbrasil.org
Sent: Monday, April 13, 2009 4:26 PM
Subject: Re: [AsteriskBrasil]script para realizar ligação no asterisk (AGI)
ok, vou testar aki...só uma pergunta, esse arquivo chamada.php deve estar localizado em /var/www/ certo?
2009/4/13 Sebastiao Rocha <lixo em interlinksistemas.com.br>
Para utilizar, efetue as seguinte alterações em seu asterisk.
Conteudo do arquivo /etc/asterisk/manager.conf
------------------------------------------------------------------------------------------
; AMI - The Asterisk Manager Interface
[general]
displaysystemname = yes
enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0
[admin]
secret = coloque aqui a senha para acesso ao manager AMI
read=system,call,log,verbose,command,agent,user,config
write=system,call,log,verbose,command,agent,user,config
permit=127.0.0.1; ou permita o uso via outro computador/rede ex: 192.168.0.0/24
; Authorization for various classes
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
------------------------------------------------------------------------------------------
AMI_login($oSocket, 'usuario', 'senha') . "<br>";
Conteudo do arquivo chamada.php
------------------------------------------------------------------------------------------
<?php
$usuario = 'usuario definido no manager.conf';
$password = 'senha definida no manager.conf';
if ( isset( $_POST['telefone']) && isset($_POST['ramal']) ) {
function AMI_sip_status($socket, $sip)
{
fputs($socket, "ACTION: ExtensionState\r\n");
fputs($socket, "Context: interlink\r\n");
fputs($socket, "Exten: " . $ramal . "\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
return fgets($socket);
}
function AMI_originate($socket, $phonenumber)
{
fputs($socket, "Action: originate\r\n");
fputs($socket, "Timeout: 30000\r\n");
fputs($socket, "CallerId: Site Interlink <$phonenumber>\r\n");
fputs($socket, "RetryTime: 45\r\n");
fputs($socket, "WaitTime: 30\r\n");
fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
fputs($socket, "Exten: 0$phonenumber\r\n");
fputs($socket, "Context: interlink\r\n");
fputs($socket, "Priority: 1\r\n");
fputs($socket, "ActionID: 1\r\n\r\n");
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
fgets($socket);
$result = fgets($socket);
echo $result;
}
function AMI_login($socket, $username, $password)
{
fputs($socket, "Action: login\r\n");
fputs($socket, "Username: $username\r\n");
fputs($socket, "Secret: $password\r\n\r\n");
fputs($socket, "Events: off\r\n\r\n");
return fgets($socket);
}
if ( isset($_POST['telefone']) && inset($_POST['ramal']) ) {
$number = strtolower($_POST['telefone']); // Número a chamar
$ramal = $_POST['telefone']; // Ramal que será chamado ao ser atendida a chamada efetuada.
$errno = 0;
$errstr = 0;
$oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
if (!$oSocket)
{
echo "Não foi possível completar a chamada...";
}
else
{
fgets($oSocket);
AMI_login($oSocket, '$usuario, $password) . "<br>";
AMI_originate($oSocket, $number) . "<br>";
fputs($oSocket, "Action: Logoff\r\n\r\n");
fclose($oSocket);
}
}
}
<?php
------------------------------------------------------------------------------
_______________________________________________
Openmoko Freerunner, primeiro telefone open source, disponível no Brasil rodando o Android da Google.
http://www.neodroid.com
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br
Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20090413/6277c5c0/attachment-0001.htm
Mais detalhes sobre a lista de discussão AsteriskBrasil