<?php
//https://pbxncom/asterisk_api/click_to_call.php?key=A7f9K2bX4qP1Lz7a&src=100&dst=13052341212&cid=11302846&trunk=1
//error_reporting(E_ALL & ~E_USER_WARNING & ~E_USER_NOTICE);
//ini_set('display_errors', 1);
header('Content-Type: application/json');
$key="kA7f9Mze";
if($_GET['key']!="$key"){
echo json_encode(["Auth"=>401],JSON_PRETTY_PRINT);
exit();
}
print_r(json_encode($_REQUEST, JSON_PRETTY_PRINT));
$timeout=100;
$host="127.0.0.1";
$port=5038;
$src = preg_replace('/\D/', '', $_GET['src']); // remove non-digits
$dst = preg_replace('/\D/', '', $_GET['dst']); // remove non-digits
$trunkId = preg_replace('/\D/', '', $_GET['trunk']); // remove non-digits
$trunks=[1=>"Twilio",2=>"Telnyx",3=>"Didlogic"];
$trunk=$trunks[$trunkId]??$trunks[1]; // set a default trunk if none is selected
$cid = preg_replace('/\s+/', '', $_GET['cid']);
$id = preg_replace('/\s+/', '', $_GET['id']);
$socket = fsockopen("$host","$port", $errno, $errstr, 10);
if (!$socket){
//If network connection fails;
print_r(json_encode([$errstr=>$errno],JSON_PRETTY_PRINT));
}else{
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: admin\r\n");
fputs($socket, "Secret: L29481uKCU\r\n\r\n");
$wrets=fgets($socket,128);
fputs($socket, "Action: Originate\r\n" );
fputs($socket, "Channel: Local/$src@click_to_call_api_src\r\n" );
fputs($socket, "Exten: $dst\r\n" );
fputs($socket, "Context: click_to_call_api_dst\r\n" );
fputs($socket, "Priority: 1\r\n" );
fputs($socket, "CallerID: $cid\r\n" );
fputs($socket, "Variable: __src=$src\r\n" );
fputs($socket, "Variable: __dst=$dst\r\n" );
fputs($socket, "Variable: __cid=$cid\r\n" );
fputs($socket, "Variable: __trunk=$trunk\r\n" );
fputs($socket, "Async: yes\r\n\r\n" );
fputs($socket, "Action: Logoff\r\n\r\n");
while (!feof($socket)){
$result=fgets($socket);
print_r(json_encode(["API"=>"$wrets","MSG"=>$result],JSON_PRETTY_PRINT));
}
fclose($socket);
}
?>
-------------
[click_to_call_api_src]
exten=>_x.,1,Noop("DST : ${src}, DST : ${dst}, CID : ${CID} , TRUNK : ${trunk}");
same=>n,Set(CALLERID(num)=${dst})
same=>n,Dial(PJSIP/${src})
same=>n,hangup()
[click_to_call_api_dst]
exten=>_x.,1,Noop("DST : ${src}, DST : ${dst}, CID : ${CID} , TRUNK : ${trunk}");
same=>n,Set(CALLERID(num)=+${cid})
same => n,GotoIf($["${trunk}"="Telnyx"]?Telnyx)
same=>n,Dial(PJSIP/+${dst}@${trunk})
same=>n,hangup()
same => n(Telnyx),Set(dst=9817+${dst}) ;;add a prefix if trunk is Telnyx
same=>n,Dial(PJSIP/${dst}@${trunk})
same=>n,hangup()
-----------------
No hay comentarios:
Publicar un comentario