Servicios Web - Llamadas
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" : 0, "error" : false }
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 >= '2010-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; }