Diferencia entre revisiones de «Servicios Web - Llamadas»
(→éxito) |
(→Forma programática de incorporar llamadas) |
||
| Línea 128: | Línea 128: | ||
cdr | cdr | ||
WHERE | WHERE | ||
| − | calldate >= ' | + | calldate >= '2012-01-01' AND LENGTH(dst) > 7 |
EOSQL | EOSQL | ||
Revisión de 13:21 24 nov 2012
Contenido |
Incorporar una llamada - /direct/items/phonecalls/create
Para incorporar una nueva llamada hay que realizar una solicitud a https://host/direct/items/phonecalls/create con los siguientes parámetros:
- initiated
- fecha de la llamada en formato ISO8601
- source
- número que origina la llamada
- destination
- número al que se hizo la llamada
- duration (opcional)
- duración de la llamada en segundos
- url (opcional)
- link para mostrar junto con la llamada que puede llevar a mayor detalle de la misma fuera de la aplicación de NiMbox
Para incorporar una nueva llamada se puede utilziar:
wget --user=jlopez --password=comic --no-check-certificate -qO- \ "https://host/direct/items/phonecalls/create?initiated=2012-08-23T12:20:33&source=7222&destination=02122853348&duration=45&url=http..."
éxito
En caso de que todo funcione correctamente se recibirá un json parecido a este:
{
"error": false,
"contactId": 12334,
"phonecallId": 3241
}
- contactId
- es el código del contacto al que se le conectó la llamada
- phonecallId
- es el código de la llamada
error
Si algo no funcionó se recibirá un json parecido a este:
{
"error": true,
"errors": {
"destination": "no se consiguió el número de destino en la base de datos"
}
}
Eliminar llamadas - /direct/items/phonecalls/delete
Para eliminar llamadas hay que realizar una solicitud a http://host/direct/items/phonecalls/delete con los siguientes parámetros:
- from
- fecha desde que se debe eliminar, en formato ISO8601
- to
- fecha hasta que se debe debe eliminar, en formato ISO8601
Ambas fechas son exclusivas y no deben incorporar las horas.
Para eliminar llamadas se puede utilizar:
wget --user=jlopez --password=comic --no-check-certificate -qO- \ "http://host/direct/items/phonecalls/delete?from=2012-08-23&to=2012-08-25"
El resultado de esta invocación resulta en un json con un parámetro error que puede ser true o false.
éxito
{
"count" : 702,
"error" : false
}
- count
- cantidad de llamadas eliminadas
error
{
"error" : true,
"errors" : {
}
}
Forma programática de incorporar llamadas
Es posible modificar este script en perl para extraer las llamadas de la tabla cdr de asterisk e incorporarlas a NiMbox
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use LWP::UserAgent;
use LWP::ConnCache;
use URI::Escape;
use JSON;
# configuration
my $ASTERISK_HOST = "192.168.128.96";
my $ASTERISK_USER = "testing";
my $ASTERISK_PASSWORD = "testing";
my $NIMBOX_HOST = "192.168.1.98:8080";
my $NIMBOX_USER = "admin";
my $NIMBOX_PASSWORD = "admin";
# do the query
my $start = time;
my $handle = DBI->connect(
"DBI:mysql:asterisk;host=$ASTERISK_HOST",
$ASTERISK_USER,
$ASTERISK_PASSWORD);
my $sql = <<EOSQL;
SELECT
DATE_FORMAT(calldate, '%Y-%m-%dT%TZ') AS initiated,
src AS source,
dst AS destination,
duration AS duration,
CONCAT('http://192.168.128.96/recordings/', channel) AS url
FROM
cdr
WHERE
calldate >= '2012-01-01' AND LENGTH(dst) > 7
EOSQL
my $statement = $handle->prepare($sql);
$statement->execute();
# send the results
my $agent = LWP::UserAgent->new();
my $cache = LWP::ConnCache->new();
$cache->total_capacity([1]);
$agent->conn_cache($cache);
$agent->credentials("$NIMBOX_HOST", "NiMbox", $NIMBOX_USER, $NIMBOX_PASSWORD);
while (my $r = $statement->fetchrow_hashref()) {
print "Processing $r->{initiated} from $r->{source} to $r->{destination}... ";
# prepare the url
my $url = "http://$NIMBOX_HOST/direct/items/phonecalls/create";
$url = $url . "?initiated=$r->{initiated}";
$url = $url . "&source=$r->{source}";
$url = $url . "&destination=" . uri_escape(convertDestination($r->{'destination'}));
$url = $url . "&duration=$r->{duration}";
$url = $url . "&url=" . uri_escape($r->{'url'});
my $response = $agent->get($url);
my $json = decode_json($response->content);
if ($json->{'error'}) {
print "ERROR\n";
} else {
print "OK\n";
}
}
print "execution time: " . (time - $start) . "\n";
exit(0);
sub convertDestination {
my ($destination) = @_;
if ($destination =~ /^9/) {
$destination = substr($destination, 1);
if (length($destination) == 7) {
$destination = "0212" . $destination;
}
}
return $destination;
}