-
-
Save anpel/a6cdffea7dc9d85bfe1885f1fb40f980 to your computer and use it in GitHub Desktop.
/** | |
* Once this scipt is executed it will connect to the local port you have assigned to | |
* Asterisk (default: 5038) and send an authentication request. If successfull, it will | |
* send a second request to originate your call. | |
* | |
* The internal SIP line $internalPhoneline will be dialed, and when picked up the | |
* $target phone will be dialed using your outbound calls context ($context). | |
* | |
* Of course, you can modify the commands sent to the asterisk manager interface to suit your needs. | |
* you can find more about the available options at: | |
* | |
* http://www.voip-info.org/wiki/view/Asterisk+manager+API | |
* http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate | |
* | |
* Hope this helps! | |
* | |
* Licence: | |
* | |
* This program is free software: you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation, either version 3 of the License, or | |
* (at your option) any later version. | |
* | |
* This program is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* | |
* You should have received a copy of the GNU General Public License | |
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |
*/ | |
<?php | |
// Replace with your port if not using the default. | |
// If unsure check /etc/asterisk/manager.conf under [general]; | |
$port = 5038; | |
// Replace with your username. You can find it in /etc/asterisk/manager.conf. | |
// If unsure look for a user with "originate" permissions, or create one as | |
// shown at http://www.voip-info.org/wiki/view/Asterisk+config+manager.conf. | |
$username = "user"; | |
// Replace with your password (refered to as "secret" in /etc/asterisk/manager.conf) | |
$password = "pass"; | |
// Internal phone line to call from | |
$internalPhoneline = "203"; | |
// Context for outbound calls. See /etc/asterisk/extensions.conf if unsure. | |
$context = "context"; | |
$socket = stream_socket_client("tcp://127.0.0.1:$port"); | |
if($socket) | |
{ | |
echo "Connected to socket, sending authentication request.\n"; | |
// Prepare authentication request | |
$authenticationRequest = "Action: Login\r\n"; | |
$authenticationRequest .= "Username: $username\r\n"; | |
$authenticationRequest .= "Secret: $password\r\n"; | |
$authenticationRequest .= "Events: off\r\n\r\n"; | |
// Send authentication request | |
$authenticate = stream_socket_sendto($socket, $authenticationRequest); | |
if($authenticate > 0) | |
{ | |
// Wait for server response | |
usleep(200000); | |
// Read server response | |
$authenticateResponse = fread($socket, 4096); | |
// Check if authentication was successful | |
if(strpos($authenticateResponse, 'Success') !== false) | |
{ | |
echo "Authenticated to Asterisk Manager Inteface. Initiating call.\n"; | |
// Prepare originate request | |
$originateRequest = "Action: Originate\r\n"; | |
$originateRequest .= "Channel: SIP/$internalPhoneline\r\n"; | |
$originateRequest .= "Callerid: Click 2 Call\r\n"; | |
$originateRequest .= "Exten: $target\r\n"; | |
$originateRequest .= "Context: $context\r\n"; | |
$originateRequest .= "Priority: 1\r\n"; | |
$originateRequest .= "Async: yes\r\n\r\n"; | |
// Send originate request | |
$originate = stream_socket_sendto($socket, $originateRequest); | |
if($originate > 0) | |
{ | |
// Wait for server response | |
usleep(200000); | |
// Read server response | |
$originateResponse = fread($socket, 4096); | |
// Check if originate was successful | |
if(strpos($originateResponse, 'Success') !== false) | |
{ | |
echo "Call initiated, dialing."; | |
} else { | |
echo "Could not initiate call.\n"; | |
} | |
} else { | |
echo "Could not write call initiation request to socket.\n"; | |
} | |
} else { | |
echo "Could not authenticate to Asterisk Manager Interface.\n"; | |
} | |
} else { | |
echo "Could not write authentication request to socket.\n"; | |
} | |
} else { | |
echo "Unable to connect to socket."; | |
} |
@sigmund-avila It's been a while since I last worked with Asterisk so I can't be too helpful.
Seems like someone was trying to do the same here: https://community.asterisk.org/t/solved-trigger-page-on-incoming-call/38767.
I see some code samples and the issue is marked as solved, so I would start with that.
Good luck!
Andreas
Well, I solved myself, i need to put $context = "default";
in the code.
Well, I solved myself, i need to put
$context = "default";
in the code.
Hello, please for calls coming from outside to Asterisk. What should we put in context ?
Well, I solved myself, i need to put
$context = "default";
in the code.Hello, please for calls coming from outside to Asterisk. What should we put in context ?
Really don't know, we only use for only internal calls.
Hi
Test $context = "from-internal";
or $context = "from-trunk";
it's worked for me
;-)
Hi Anpel!
Im creating an Incoming call pop up window for the CRM that I created. I successfully manage to view the AMI to my server using telnet. Now my problem is how can I listen to the pbx incoming events. I want to hook every time there are incoming call then I will push a notification to my users so they can see the information of the caller.
Thanks,
Sigmund