Introducción
PHP
Click2Call desde página web
- Ejemplo de web con botón de "llámame"
<html>
<body>
<div>
<input id="number" placeholder="número"/>
<button type="button" onclick="callme()">llamame</button>
</div>
<div id="result"></div>
<script>
function callme() {
var XHR = new XMLHttpRequest();
XHR.addEventListener('readystatechange', function() {
if (XHR.readyState == 4 && XHR.status == 200) {
document.getElementById("result").innerHTML = XHR.responseText;
} else {
document.getElementById("result").innerHTML = "ha ocurrido un error: " + XHR.responseText
}
});
var FD = new FormData();
FD.append('number', document.getElementById("number").value);
XHR.open('POST', 'doC2c.php');
document.getElementById("result").innerHTML = "enviando peticion..."
XHR.send(FD);
}
</script>
</body>
</html>
- Código PHP que gestiona la petición y genera el click2call
<?php
$apikey = ""; //PON AQUI TU API KEY
$origin = ""; //PON AQUI LA EXTENSION DONDE QUIERES QUE SUENE
if ($apikey == "") {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
echo "Falta especificar el apikey, edita el fichero PHP y complete la variable apikey con el apikey correspondiente.";
die();
} else if ($origin == "") {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
echo "Falta especificar la extension de origen, edita el fichero PHP y complete la variable apikey con el apikey correspondiente.";
die();
} else {
$opts = array(
'http' => array(
'method' => "GET",
'header' => "Content-type: application/json\n"
."X-Api-Key: ".$apikey,
)
);
$context = stream_context_create($opts);
$response = file_get_contents("https://vpbx.me/api/originatecall/".$origin."/".$_POST['number'], false, $context);
//echo $response;
echo "llamando...";
}
?>
Recuperar llamadas realizadas
<html>
<head></head>
<body>
<h2>POST - /cdr</h2>
<?php
$apikey = ""; //RELLENAR LA VARIABLE CON EL APIKEY FACILITADO
if ($apikey == "") {
echo "Falta especificar el apikey, edita el fichero PHP y complete la variable apikey con el apikey correspondiente.";
} else {
$from = 1445292000000; // 20-10-2015 00:00:00
$to = 1445378399000; // 20-10-2015 23:59:59
$data = json_encode(array(
'from' => $from,
'to' => $to
));
echo "<h4>POST JSON</h4>";
echo $data."</br>";
$opts = array(
'http' => array(
'method' => "POST",
'header' => "Content-type: application/json\n"
."X-Api-Key: ".$apikey,
'content' => $data
)
);
$context = stream_context_create($opts);
$html = file_get_contents("https://vpbx.me/api/cdr", false, $context);
echo "<h4>Response</h4>";
echo $html;
//para usar la respuesta programaticamente:
//$json = json_decode($html);
//foreach ($json as $call) {
// echo $call->callId."<br>";
//}
}
?>
</body>
</html>
Consulta y descarga de llamadas grabadas
<?php
$apikey = ""; //RELLENAR LA VARIABLE CON EL APIKEY FACILITADO
if ($apikey == "") {
die("Falta especificar el apikey, edita el fichero PHP y complete la variable apikey con el apikey correspondiente.\n");
}
///////////////////////////////////////////////
// Datos del filtro para hacer la petición
///////////////////////////////////////////////
// fecha de inicio
$from = "01-02-2017 10:00:00";
// fecha de fin
$to = "01-02-2017 16:00:00";
// destino de la llamada
$dst = "966261122";
//////////////////////////////////////////////////
// Pasamos las fechas a timestamp en milisegundos
//////////////////////////////////////////////////
// desde
$fromMilis = strtotime($from) * 1000;
// hasta fecha
$toMilis = strtotime($to) * 1000;
//////////////////////////////////////////////////
// Componemmos el fitro en json
//////////////////////////////////////////////////
$data = json_encode(array(
'from' => $fromMilis,
'to' => $toMilis,
'dst' => $dst
));
//////////////////////////////////////////////////
// Opciones para la petición web (autenticación)
//////////////////////////////////////////////////
$optsGetCdr = array(
'http' => array(
'method' => "POST",
'header' => "Content-type: application/json\n"
."X-Api-Key: ".$apikey,
'content' => $data
)
);
//////////////////////////////////////////////////
// Lanzamos la petición
//////////////////////////////////////////////////
$contextGetCdr = stream_context_create($optsGetCdr);
$rawResponse = file_get_contents("https://vpbx.me/api/cdr", false, $contextGetCdr);
// parseamos la respuesta
$json = json_decode($rawResponse);
////////////////////////////////////////////////////////////////
// Procesamos la respuesta iterando por los registros obtenimos
////////////////////////////////////////////////////////////////
// opciones http para obtener la grabación
$optsRecording = array(
'http' => array(
'method' => "GET",
'header' => "X-Api-Key: ".$apikey,
)
);
$contextRecording = stream_context_create($optsRecording);
foreach($json as $call) {
// si hay grabación
if ($call->recording == 1) {
// obtenemos el id de la llamada
$callId = $call->callId;
// nombre que tendrá el fichero: "src_dst_callId.mp3"
$fileToSave = "/tmp/" . $call->src . "_" . $call->dst . "-" . $callId . ".mp3";
// obtenemos el fichero
file_put_contents($fileToSave, file_get_contents("https://vpbx.me/api/recording/" . $callId, false, $contextRecording));
echo "Grabación " . $fileToSave . " guardada.\n";
}
}
?>