Diferencia entre revisiones de «Servicios Web - Llamadas»
(→Forma programática de incorporar llamadas) |
|||
Línea 1: | Línea 1: | ||
− | + | Es posible incorporar llamadas al muro del cliente desde una aplicación externa a través de este servicio web. El uso típico de este servicio sería correr un daemon, en algún otro servidor, que con cierta periodicidad, va creando las llamadas en NiMbox. Las llamadas creadas tienen una clave única construida con la fecha de la llamada (<code>initiated</code>), el origen de la llamada (<code>source</code>) y el destino de la llamada (<code>destination</code>). Sólo puede haber una llamada en un momento, de un origen, a un destino a la vez. Si se trata de crear una segunda llamada con los mismos parámetros, esta no sería creada porque ya existe. | |
− | Para | + | Para comenzar a utilizar el servicio web se puede modificar el script de perl que está más abajo según la instalación en la que se corra. |
+ | |||
+ | == Crear una llamada - /direct/items/phonecalls/create == | ||
+ | |||
+ | Para crear una nueva llamada hay que realizar una solicitud a <code>https://host/direct/items/phonecalls/create</code> con los siguientes parámetros: | ||
;initiated: fecha de la llamada en formato ISO8601 | ;initiated: fecha de la llamada en formato ISO8601 | ||
Línea 9: | Línea 13: | ||
;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 | ;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 | + | Para crear una nueva llamada se puede utilziar: |
<pre> | <pre> | ||
Línea 51: | Línea 55: | ||
;to: fecha hasta que se debe debe eliminar, en formato ISO8601 | ;to: fecha hasta que se debe debe eliminar, en formato ISO8601 | ||
− | Ambas fechas son exclusivas y no deben | + | Ambas fechas son exclusivas y no deben tener las horas. |
Para eliminar llamadas se puede utilizar: | Para eliminar llamadas se puede utilizar: | ||
Línea 83: | Línea 87: | ||
</pre> | </pre> | ||
− | == Forma programática de | + | == Forma programática de crear llamadas == |
− | Es posible modificar este script en perl para extraer las llamadas de la tabla cdr de asterisk | + | Es posible modificar este script en perl para extraer las llamadas de la tabla cdr de asterisk y crearlas en NiMbox |
<pre> | <pre> |
Revisión de 10:53 25 nov 2012
Es posible incorporar llamadas al muro del cliente desde una aplicación externa a través de este servicio web. El uso típico de este servicio sería correr un daemon, en algún otro servidor, que con cierta periodicidad, va creando las llamadas en NiMbox. Las llamadas creadas tienen una clave única construida con la fecha de la llamada (initiated
), el origen de la llamada (source
) y el destino de la llamada (destination
). Sólo puede haber una llamada en un momento, de un origen, a un destino a la vez. Si se trata de crear una segunda llamada con los mismos parámetros, esta no sería creada porque ya existe.
Para comenzar a utilizar el servicio web se puede modificar el script de perl que está más abajo según la instalación en la que se corra.
Contenido |
Crear una llamada - /direct/items/phonecalls/create
Para crear 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 crear 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 tener 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 crear llamadas
Es posible modificar este script en perl para extraer las llamadas de la tabla cdr de asterisk y crearlas en 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; }