Especificacin, SMSBROKER
HTTP Protocol
TELKIA
Versin: 2.8
Fecha: 02-11-2016
Page 1
Registro de Cambios
Este documento es revisado peridicamente para mantener consistencia con las
actualizaciones del softw are.
Revisin Cambios respecto a versiones
anteriores
1.6 Se aade la funcionalidad de envo push al cliente
de las notificaciones de entrega
2.0 Nueva versin del API. Se incluyen parmetros
nuevos:
- Etiqueta tag definida por el cliente
- Fecha programada de envo
- Periodo de Validez del mensaje
- Modo de Pruebas
2.7 Se aade el parmetro bkid (bulk id) para
identificar a un grupo de SMS
2.8 Se aclara la lista de caracteres alfanumricos
permitidos en el remitente
Proprietary Notice
This document is the property of TELKI A SLU. All information herein is confidential to TELKI A and
must not be copied or disclosed to any third party w ithout the prior w ritten consent of TELKI A.
Page 2
Copyright TELKI A 2009 2016
Page 3
ndice
1 Introduccin ........................................................................................................... 5
1.1 Alcance del Documento ................................................................................................................................ 5
1.1.1 Introduccin a SMSBROKER .................................................................................................................... 5
1.1.2 Requisitos ......................................................................................................................................................... 5
2 Descripcin Tcnica ................................................................................................ 5
2.1 Funcionalidad ................................................................................................................................................... 5
2.2 Parmetros ......................................................................................................................................................... 5
2.2.1 Remitente Alfanumrico (parmetro snr) ........................................................................................ 7
2.2.2 Envo de mensajes programado (parmetro st) ........................................................................... 8
2.2.3 Manejo de mensajes largos (parmetro split) ............................................................................... 8
2.3 Respuesta a la peticin HTTP .................................................................................................................... 8
2.4 Envo de un SMS a mltiples destinatarios .......................................................................................... 9
2.5 Envo de mltiples SMS por POST ......................................................................................................... 10
2.5 Notificacin de Entrega ............................................................................................................................. 11
2.6 Comprobacin de saldo ............................................................................................................................. 12
2.7 Cancelacin de un mensaje programado ........................................................................................... 13
2.8 Cancelacin masiva de mensajes programados .............................................................................. 13
APNDICE ................................................................................................................ 15
Cdigo de ejemplo en PHP ............................................................................................................................... 15
1) Envo de SMS ..................................................................................................................................................... 15
2) Recepcin de Notificaciones de Entrega ............................................................................................... 15
Cdigo de ejemplo en Python ......................................................................................................................... 16
1) Envo de SMS ..................................................................................................................................................... 16
Page 4
1 Introduccin
1.1 Alcance del Documento
1.1.1 Introduccin a SMSBROKER
La plataforma SMSBROKER de TELKIA permite el envo de mensajes SMS a travs del
protocolo HTTP.
1.1.2 Requisitos
Para poder enviar SMS es necesario:
Tener una cuenta abierta en TELKIA
Tener crditos suficientes en la cuenta de usuario
2 Descripcin Tcnica
2.1 Funcionalidad
El envo de datos se realiza a travs del comando GET o POST de HTTP (para el envo de
mensajes binarios solo se permite a travs de un POST). El sistema acepta peticiones en la
siguiente URL:
http://sms.smsbroker.net:11000/api/sendSMS.php
2.2 Parmetros
Se permiten los siguientes parmetros, en cualquier orden:
Parmetros Obligatorios
Page 5
activa el parmetro
extended se
permiten hasta 380
caracteres, enviados
como mensajes
concatenados)
Parmetros Opcionales
Page 6
codificacin del
mensaje
1 = normal(por
defecto)
2 = binario
3 = Unicode (admite
acentos y caracteres
especiales, pero
cada carcter ocupa
2 bytes. 1 SM S = 70
caracteres Unicode)
split 1,2 o 3 1 N mero mximo de
SM S en los que se
dividir el mensaje,
en el caso de que su
tamao exceda de
los 160 caracteres
(140 octetos)
Esta opcin permite
el envo de
mensajes largos
como 2 o 3 SM S
concatenados
json 0 o 1 1 (0 por defecto) Bandera que indica
si se desea que la
respuesta del A P I
sea un J SON en
lugar de un XM L
(por defecto)
test 0 o 1 1 (0 por defecto) Bandera que indica
si se esta haciendo
un test de
comunicacin con el
A P I y no se desea
que el SM S se envie
al destinatario.
0 = N o (por defecto)
1 = S
http://sms.smsbroker.net:11000/api/sendSMS.php?user=cliente1&pw=555555&d
nr=34123456789&msg=esto+es+una+prueba&snr=miempresa
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
El uso de cualquier otro carcter no incluido en la lista anterior puede afectar incluso a la
entrega del SMS, o bien el remitente es alterado o incluso la entrega del mensaje puede
fallar.
Page 7
Ejemplo:
st=2011-12-25 19:00:00
Page 8
<?xml version="1.0" encoding="iso-8859-1" ?>
<smsbroker>
<message>
<msgid>2f02b6919a9be9fb680fa57dac14c8ab</msgid>
<dnr>34600123456</dnr>
<status>OK</status >
</message >
<message>
<msgid>2f02b6919a9be9afe80fa57dac14c8a9</msgid>
<dnr >34600123456</dnr >
<status >OK</status >
</message >
</smsbroker>
errorCode Descripcin
0 Correcto
-1 N umero de Destino no vlido
-2 Remitente no vlido
-3 Contenido del mensaje no vlido
-10 Sin Saldo. Falta de crdito
-14 Usuario no vlido
-15 Clave incorrecta
-99 Error del sistema
Page 9
http://sms.smsbroker.net:11000/api/sendSMS.php?user=cliente1&pw=555555&d
nr=34610200901, 34610200902, 34610200903&msg=esto+es+una+prueba&snr=
miempresa
Page 10
Respuesta obtenida:
<message>
<msgid>2f00f271d856c370280905a616</msgid>
<dnr >34600000005</dnr >
<status > OK </status >
</message >
<message>
<msgid>-1</msgid>
<dnr >34600000006</dnr >
<status >Error</status >
<error > Low Balance. Please Top Up your Account </error >
<errorCode >-10</ errorCode >
</message >
</smsbroker>
Cuando el cliente facilita una URL a este efecto, SMSBROKER enva automticamente las
notificaciones de entrega segn se van recibiendo del operador.
Page 11
Es necesario que la aplicacin del cliente responda a esta peticin http con el cdigo 200 y
adems con el texto OK. En caso contrario , o si la URL no est accesible en ese momento,
se realizarn varios reintentos hasta un mximo de 24 horas.
Su script debe ser capaz de recibir y procesar un fichero XML con esta estructura:
status Descripcin
ACCEPTD El mensaje ha sido aceptado por el
operador. A la espera de posibles
notificaciones de entrega
DELIVRD El mensaje ha sido entregado al terminal
FAILED Ha fallado el intento de entrega
EXPIRED El mensaje ha caducado antes de poder
entregarlo
REJECTED M ensaje rechazado por el SM S-C del
operador
UNDELIV Ha sido imposible entregar el mensaje
DELETED El mensaje ha sido borrado por el SM S-C
UNKNOWN Estado desconocido, normalmente si no se
ha recibido notificacin del SM S-C
transcurridas 24 horas
Las horas indicadas en las notificaciones de entrega estn en referidas a UTC.
Page 12
La llamada HTTP devuelve un fichero XML cuyo formato es como sigue:
<?xml version="1.0" encoding="iso-8859-1" ?>
<smsbroker>
<account>
<balance>2105</balance>
<currency>credits</currency>
</ account >
</smsbroker>
La llamada HTTP devuelve un fichero XML cuyo formato es como sigue:
<?xml version="1.0" encoding="iso-8859-1" ?>
<smsbroker>
<message>
<msgid>2f01f24ca546179g577</ msgid >
<dnr>34600123456</dnr>
<status>DELETED</status>
</ message >
</smsbroker>
Page 13
Para cancelar todos los SMS programados de una campaa bastar hacer una llamada a la
siguiente URL:
http://sms.smsbroker.net:11000/api/cancelCampaign.php
con los parmetros:
Nombre del Valor / Formato Ejemplo Descripcin
parmetro
user A lfanumrico Cliente1 I dentificador de la
cuenta de cliente
pw A lfanumrico a7372fe contrasea
La llamada HTTP devuelve un fichero XML cuyo formato es como sigue:
<?xml version="1.0" encoding="iso-8859-1" ?>
<smsbroker>
<message>
< campaign >Campaign321</ campaign >
<count>1322</ count >
<status>DELETED</status>
</ message >
</smsbroker>
Page 14
APNDICE
Cdigo de ejemplo en PHP
1) Envo de SMS
<?
$url =
"http://sms.smsbroker.net:11000/api/sendSMS.php?user=xxxx&pw=xxxxxxxxx&dnr=3460000000&ms
g=mensaje+de+prueba&snr=TELKIA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url); // URL to post
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return into a variable
if($ok) {
$xml = new SimpleXMLElement($xml_string);
if ($xml->xpath('/smsbroker/message')) {
foreach($xml->xpath('/smsbroker/message') as $sms) {
echo "id : " . $sms->msgid ."\n";
echo "dnr : " . $sms->dnr ."\n";
echo "status: " . $sms->status ."\n";
}
} else {
foreach($xml->xpath('/smsbroker') as $resultado) {
$status = $resultado->status;
$error = $resultado->error;
$errorCode = $resultado->errorCode;
echo "Resultado del envio: status: '$status' error: '$error'
errorCode: '$errorCode' \n";
}
}
} else echo "Error ".curl_error($ch)." when posting to url: ".$url;
>
<?
$xml = simplexml_load_string($postData);
header('Content-Type: text/plain');
echo $ack;
?>
Page 15
1) Envo de SMS
import requests
import json
r = requests.post("http://sms.smsbroker.net:11000/api/sendSMS.php", data={'user':
'USERNAME', 'pw': 'PASSWORD', 'dnr': '3460000000' ,'snr': 'TELKIA','msg': 'Hola, esto es
un SMS de prueba'})
r.raise_for_status()
data=r.json()
#PRINT RESPONSE
print(r.text) #TEXT/HTML
print(r.status_code, r.reason)
count = data['message-count']
print "message count is ",count
Page 16