SMS REST API Developers Guide
SMS REST API Developers Guide
Contenido
1 INTRODUCCIN ................................................................................................................... 4 1.1 ALCANCE ...................................................................................................................... 4 1.2 GLOSARIO .................................................................................................................... 5 2 CONVENCIONES GENERALES ........................................................................................... 6 2.1 PAUTAS GENERALES DE UNA INTERFAZ REST ..................................................... 6 2.2 CONSIDERACIONES ESPECFICAS PARA LA API REST DE SMS .......................... 6 2.2.1 Consideraciones de Seguridad ................................................................................. 8 3 DEFINICIN DE LAS OPERACIONES ............................................................................... 10 3.1 ENVO DE SMS........................................................................................................... 10 3.1.1 Peticin .................................................................................................................... 10 3.1.2 RESPUESTA ........................................................................................................... 11 3.2 CONSULTA DEL ESTADO DE ENVO ....................................................................... 12 3.2.1 PETICIN ................................................................................................................ 12 3.2.2 4 5 Respuesta ............................................................................................................... 13 NAMESPACES .................................................................................................................... 15 DEFINICIN DE TIPOS DE DATOS ................................................................................... 16 5.1 ESTRUCTURA DEL SMSTextType ............................................................................ 16 5.2 ESTRUCTURA DEL SMSTextResultType .................................................................. 16 5.3 ESTRUCTURA DEL SMSDeliveryStatusPollType ...................................................... 16 5.4 ESTRUCTURA DEL SMSDeliveryStatusType ............................................................ 17 5.5 ESTRUCTURA DEL DeliveryInformationType ............................................................ 17 5.6 ENUMERACIN DEL DeliveryStatusType ................................................................. 17 5.7 ENUMERACIN DEL AltType .................................................................................... 18 5.8 OPCIN UserIdType ................................................................................................... 18 6 LIBRERAS CLIENTE DE USO DE LAS APIS .................................................................... 19 6.1 CLIENTE JAVA ........................................................................................................... 19 6.1.1 Directrices de Programacin ................................................................................... 19 6.1.2 6.1.3 6.1.4 Ejemplo para el envo con el cliente SMS ............................................................... 19 Paquetes del Cliente ............................................................................................... 20 Prerrequisitos .......................................................................................................... 21
6.2 CLIENTE C# ................................................................................................................ 21 6.2.1 Directrices de Programacin ................................................................................... 21 6.2.2 6.2.3 6.2.4 Ejemplo para el envo con el cliente SMS ............................................................... 21 Paquetes del Cliente ............................................................................................... 22 Prerrequisitos .......................................................................................................... 22
6.3 CLIENTE PHP ............................................................................................................. 22 6.3.1 Dependencias .......................................................................................................... 22 6.3.2 6.3.3 6.3.4 7 A Directrices de Programacin ................................................................................... 22 Ejemplo para el envo con el cliente SMS ............................................................... 22 Paquetes del Cliente ............................................................................................... 23
DETALLE DE LAS DESCRIPCIONES DE ERROR ............................................................ 24 CONSIDERACIONES GENERALES ................................................................................... 25 A.1 Mtodos HTTP ............................................................................................................ 25 A.1.1 POST ....................................................................................................................... 25 A.1.2 A.1.3 A.1.4 GET ......................................................................................................................... 25 PUT.......................................................................................................................... 25 DELETE ................................................................................................................... 26
A.2.2 B
XML ......................................................................................................................... 26
REFERENCIAS .................................................................................................................... 27
1 INTRODUCCIN
Este documento sirve como gua para el uso de la API REST de envo de SMS que proporciona Movistar Developers PlatformBETA. Las funcionalidades que se exponen son el envo de SMS y la consulta del estado de envo de un SMS. Estas funcionalidades se exponen a travs de una interfaz REST (REpresentational State Transfer) que expone el servicio simplificando las peticiones a travs de sencillas peticiones HTTP. 1.1 ALCANCE
El API SMS de Movistar Developers PlatformBETA permite el envo de mensajes SMS a los siguientes pases. ALEMANIA ARGENTINA BRASIL COLOMBIA CHILE CHINA ECUADOR EL SALVADOR ESPAA ESTADOS UNIDOS FINLANDIA FRANCIA HONK KONG INDIA IRLANDA ISRAEL ITALIA JAPN KOREA DEL SUR GUATEMALA MARRUECOS MXICO NICARAGUA PASES BAJOS PANAM PER PORTUGAL REINO UNIDO REPBLICA CHECA RUSIA SUECIA
1.2
GLOSARIO API: Application Programming Interface ID: Identifier HTTPS: HyperText Transfer Protocol Secure JSON: JavaScript Object Notation REST: Representational State Transfer SMS: Short Messaging Service URI: Uniform Resource Identifier URL: Uniform Resource Locator WSDL: Web Services Description Language XML: eXtended Markup Language
2 CONVENCIONES GENERALES
2.1 PAUTAS GENERALES DE UNA INTERFAZ REST REST (REpresentational States Transfer) es un estilo de arquitectura basado en los siguientes principios: Direccionabilidad: Los recursos son expuestos mediante URIs. Sin Estado. Las peticiones a los recursos son independientes una de la otra. Conectividad. Los recursos pueden incluir enlaces a otros recursos. Una interfaz uniforme: Las operaciones permitidas son obtencin, creacin, modificacin y eliminacin de recursos utilizando el protocolo HTTP.
La implementacin de estos pilares da como resultado servicios RESTful que se basan en el protocolo HTTP, son independientes del lenguaje, pueden usarse en presencia de firewalls, las aplicaciones pueden cachearlos, son altamente escalables, etc. REST tiene como propsito la implementacin de servicios ligeros, inteligibles y fcilmente implementables que se definen en base a una serie de operaciones RESTful, que implica el intercambio de informacin acorde a los formatos de los datos REST. 2.2 CONSIDERACIONES ESPECFICAS PARA LA API REST DE SMS 1. La peticin de envo de SMS es una peticin POST que se puede hacer con los siguiente Content-Types: - application/xml - application/json - application/x-www-form-urlencoded (soportado, aunque se recomienda usar XML o JSON) 2. La respuesta a esa peticin ir en el formato expresado en la peticin, excepto cuando la peticin sea url-encoded, en cuyo caso las respuestas sern XML. 3. La peticin de SMSDeliveryStatus es una peticin GET, en la que se indica el SMS a consultar a travs de un parmetro indicado en la URI que forma la peticin. Por defecto la respuesta tiene formato XML, aunque se puede pedir que la respuesta est en formato JSON a travs de un parmetro alt, incluido en la URI que forma la peticin. 4. Mapeo de XML A JSON. Puesto que XML es el formato por defecto utilizado en la API de SMS, se incluyen archivos XSD que describen los datos necesarios para invocar al API mediante XML. Para pasar estas representaciones a formato JSON, se presentan las siguientes reglas de aplicacin general:
a. Los elementos XML que aparecen al mismo nivel jerrquico XML (tanto los elementos de primer nivel como los que estn dentro del mismo elemento XML padre), se mapean a un conjunto de pares nombre:valor dentro de un objeto JSON, como se describe a continuacin:
Pgina 6 de 27 movistar 2009 Reservados todos los derechos.
i. Cada elemento XML que aparece una sola vez en el mismo nivel jerrquico se mapea a un par nombre:valor individual. El nombre se forma de acuerdo al punto b, mientras que el valor se forma de acuerdo al punto c. ii. Elementos XML que aparezcan ms de una vez en el mismo nivel jerrquico se mapean a un nico par nombre:valor individual. El nombre se forma de acuerdo al punto b, mientras que el valor is un array JSON que contiene un valor por cada ocurrencia del elemento XML. El nombre se forma de acuerdo al punto b, mientras que los valores se forman de acuerdo al punto c. iii. El nombre y el valor de los objetos JSON irn entre comillas . Adems, cualquier representacin JSON ir entre llaves {}, de acuerdo a la RFC de JSON. b. El nombre del par nombre:valor es el nombre de los elementos XML (nombre_elemento_XML:valor). c. El valor se forma como se describe a continuacin: i. Cuando el elemento XML no tiene ni atributos ni elementos XML hijos, el valor es igual al valor del elemento XML. En caso de que el elemento sea nulo (no tenga valor), se indicar poniendo un valor null en el JSON. ii. Cuando el elemento XML tenga elementos hijos y/o atributos, el valor es un objeto JSON que contiene los siguientes pares nombre:valor : Un par nombre:valor por cada atributo, donde el nombre es el nombre del atributo y el valor es el valor del atributo. Un par nombre:valor asociado al valor del elemento XML, donde nombre es la cadena $t y valor es el valor del elemento XML.
Nota: no hay una regla especfica sobre esto en la RFC de JSON o en json.org. Por tanto, se ha seleccionado la cadena $t en base a las reglas de Google para conversin de feeds XML a JSON (http://code.google.com/intl/es/apis/gdata/json.html).
Pares nombre:valor asociados a elementos XML hijos. Estos pares nombre:valor se forman de acuerdo al punto a.
"cat": {"name": "Matilda"}, "dog": [ { "BReed": "labrador", "name": { "$t": "Rufus", "attr": "1234" } }, { "BReed": "whippet", "a": null, "name": "Marty" }, null ] }}
2.2.1
Consideraciones de Seguridad
El siguiente punto detalla las consideraciones de seguridad que se deben tener en cuenta en las aplicaciones desarrolladas para acceder a la API de SMS REST. La aplicaciones deben incluir un Authorization header en cada peticin HTTP. El encabezado contendr los siguientes datos:
Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key= "serviceId@spId", signature_method="MD5", signature="MD5(spId+spPassword+timeStamp)", timestamp="YYYYMMDDHHMMSS", version="0.1", token="AccessToken", requestor_id ="MSISDN ", requestor_type ="1"
Los trminos serviceId, spID y spPassword se pueden obtener en la informacin del desarrollador en la Web de Movistar Developers PlatformBETA. Requestor_id es el MSISDN (nmero de telfono) del usuario en nombre del cual la aplicacin invocar el API. AccessToken es un conjunto de 8 caracteres entre los siguientes {a-z, A-Z, 0-9} que el usuario podr obtener y actualizar en la seccin Mi perfil del portal de Movistar Developers PlatformBETA y que la aplicacin debe incluir en la cabecera Authorization para invocar el API en nombre del usuario. Puesto que le aplicacin debe incluir el requestor_id y token del usuario, es responsabilidad del developer solicitar estos datos al usuario antes de invocar el API de la forma que considere ms conveniente. Un ejemplo de un Authorization Header sera:
Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key= "35000001000001@35000001", signature_method="MD5", signature="5b941f30e158d2af2df658dd5acca810", timestamp="20090902154157 ", version="0.1", token="1x3rs6n8", requestor_id ="5213907550010", requestor_type ="1"
Pgina 8 de 27 movistar 2009 Reservados todos los derechos.
Cuando una peticin HTTP se realiza sin la cabecera Authorization o con un formato incorrecto, se recibir una respuesta de error HTTP. Sin embargo, si el formato de la cabecera Authorization es correcto pero los valores contenidos en ella son errneos, se aceptar la peticin pero el mensaje no se enviar. Esta situacin podr comprobarse mediante la operacin GetSMSDeliveryStatus (ver 3.2 CONSULTA DEL ESTADO DE ENVO).
3.1
3.1.1
ENVO DE SMS
Peticin
Entrada POST https://200.39.21.12:8443/osg/UNICA-SMSREST/SMS
Content-Type: application/x-www-form-urlencoded
POST /osg/UNICA-SMS-REST/SMS HTTP/1.1 Content-Type: application/x-www-form-urlencoded Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key="0100105600@000025", signature_method="MD5", signature="D645CDAD8BFE153CCE0DC368970F8042", timestamp="20091015120036", version="0.1", token="2SDO4gAL", requestor_id="5213907550011", requestor_type="1"
Pgina 10 de 27 movistar 2009 Reservados todos los derechos.
Content-Type: application/xml
POST /osg/UNICA-SMS-REST/SMS HTTP/1.1 Content-Type: application/xml Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key="0100105600@000025", signature_method="MD5", signature="CF753CB3173FC8F343C2B84EFEDE3AED", timestamp="20091015115855", version="0.1", token="2SDO4gAL", requestor_id="5213907550011", requestor_type="1" User-Agent: Jakarta Commons-HttpClient/3.1 Host: 200.39.21.12:8443 Content-Length: 497 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <ns0:smsText xmlns:ns0="http://www.telefonica.com/UNICA/sms_bodies/v0_1_1_LITMUS_LA TAM_03102009" xmlns:ns1="http://www.telefonica.com/UNICA/sms_types/v0_1_1_LITMUS_LAT AM_03102009" xmlns:ns2="http://www.telefonica.com/UNICA_CommonTypes/v0_1"> <ns1:address> <ns2:phoneNumber>5213851866417</ns2:phoneNumber> </ns1:address> <ns1:message>This is the message content.</ns1:message> </ns0:smsText>
3.1.2
RESPUESTA
Entrada 201 Created
En caso de producirse algn error relacionado con: spId o serviceId no vlidos spPassword no vlido La aplicacin no tiene permisos para utilizar el API Parmetros no vlidos Violacin de los SLA
se responder con un cdigo de estado HTTP del tipo 4XX/5XX. Sin embargo, si de produce un error relacionado con:
Pgina 11 de 27 movistar 2009 Reservados todos los derechos.
se responder con un cdigo de estado HTTP 201, pero al consultar el estado del envo se obtendr el valor DeliveryImpossible (ver 3.2 CONSULTA DEL ESTADO DE ENVO).
Content-Type: application/json
HTTP/1.1 201 Created Server: Apache-Coyote/1.1 Location: https://200.39.21.12:8443/osg/UNICA-SMSREST/SMS/SMSDeliveryStatus?smsIdentifier=10000910151003485403 Content-Type: application/json;charset=ISO-8859-1 Content-Length: 51 Date: Thu, 15 Oct 2009 10:03:48 GMT {"smsTextResult":{"result":"10000910151003485403"}}
Content-Type: application/xml
HTTP/1.1 201 Created Server: Apache-Coyote/1.1 Location: https://200.39.21.12:8443/osg/UNICA-SMSREST/SMS/SMSDeliveryStatus?smsIdentifier=10000910151000384995 Content-Type: application/xml;charset=ISO-8859-1 Content-Length: 240 Date: Thu, 15 Oct 2009 10:00:38 GMT <smsTextResult xmlns="http://www.telefonica.com/UNICA/sms_bodies/v0_1_1_LITMUS_LATAM_ 03102009" xmlns:v0="http://www.telefonica.com/UNICA/sms_types/v0_1_1_LITMUS_LATA M_03102009"> <v0:result>10000910151000384995</v0:result> </smsTextResult>
3.2
3.2.1
La URL necesaria para la peticin de consulta se obtiene en el header de Location incluido en la respuesta a la operacin SendSMS.
Entrada GET https://200.39.21.12:8443/osg/UNICA-SMSREST/SMSDeliveryStatus La peticin GET de consulta no incluye body, la informacin necesaria debe ser pasada como parmetros de consulta.
Ejemplo de una peticin de consulta del Estado de Envo con respuesta en XML
GET /osg/UNICA-SMSREST/SMSDeliveryStatus?smsIdentifier=10000910151005185603 HTTP/1.1 Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key="0100105600@000025", signature_method="MD5", signature="4E787BC6A43561968224BD9ACDFCBE3A", timestamp="20091015120337", version="0.1", token="2SDO4gAL", requestor_id="5213907550011", requestor_type="1" User-Agent: Jakarta Commons-HttpClient/3.1 Host: 200.39.21.12:8443
Ejemplo de una peticin de consulta del Estado de Envo con respuesta en JSON
GET /osg/UNICA-SMSREST/SMSDeliveryStatus?smsIdentifier=10000910151014046414&alt=json HTTP/1.1 Authorization: SDPBasicAuth realm="SDPAPIs", consumer_key="0100105600@000025", signature_method="MD5", signature="2760345011F7C1B49BEA572EEE235F2A", timestamp="20091015121223", version="0.1", token="2SDO4gAL", requestor_id="5213907550011", requestor_type="1" User-Agent: Jakarta Commons-HttpClient/3.1 Host: 200.39.21.12:8443
3.2.2
Respuesta
Entrada 200 OK
Application/json
Application/xml (por defecto) Un elemento del tipo SMSDeliveryStatusType indicado en el formato expresado en el Content-Type
<NS1:smsDeliveryStatus xmlns:NS1="http://www.telefonica.com/UNICA/sms_bodies/v0_1_1_LITMUS_LA TAM_03102009"> <NS2:smsDeliveryStatus xmlns:NS2="http://www.telefonica.com/UNICA/sms_types/v0_1_1_LITMUS_LAT AM_03102009"> <NS2:address> <NS3:anyUri xmlns:NS3="http://www.telefonica.com/UNICA_CommonTypes/v0_1">tel:+5213 851866417</NS3:anyUri> </NS2:address> <NS2:deliveryStatus>DeliveredToTerminal</NS2:deliveryStatus> </NS2:smsDeliveryStatus> </NS1:smsDeliveryStatus>
4 NAMESPACES
Los tipos de datos estn definidos en el siguiente namespace: http://www.telefonica.com/UNICA/sms_types/v0_1_1_LITMUS_LATAM_03102009 Los elementos superiores utilizados en los cuerpos de las peticiones y repuestas REST estn definidos en el siguiente namespace: http://www.telefonica.com/UNICA/sms_bodies/v0_1_1_LITMUS_LATAM_03102009 Los tipos de datos comunes para todas las APIs estn definidas en el siguiente namespace. http://www.telefonica.com/UNICA_CommonTypes/v0_1 Otros tipos de datos comunes adoptados de ParlayX estn definidos en el siguiente namespace:
http://www.csapi.org/schema/parlayx/common/v3_1
5.1
Parmetro address
message
Opcion al No
Descripcin Lista de direcciones a las cules se van a enviar los SMS. IdToken y valores de IP no son aceptadas. El mensaje a enviar. Longitud mxima 160 caracteres (tenga en cuenta que los caracteres acentuados ocupan dos caracteres a la hora del envo). En algunas ocasiones, los caracteres acentuados podran no visualizarse correctamente en el terminal. Cuando la codificacin es base64, esta operacin permite enviar un SMS de aviso o push SMS, con los siguientes parmetros extensibles: sourceport, destinationport, esm_class y data_coding. Indica el nmero de puerto de la aplicacin asociado con la direccin origen del mensaje. Opcional para MyMail service. Indica el nmero de puerto de la aplicacin asociado con la direccin destion del mensaje. Este parmetro es utilizado para indicar atributos especiales a con un mensaje corto. Define la codificacin de los datos de usuario del mensaje corto.
No
encode
xsd:string
S S S S
5.2
Parmetro result
Opcion al No
Descripcin Es un identificador correlado con el SMS enviado que se utiliza en una operacin GetSMSDeliveryStatus
5.3
Utilizado como entrada para la consulta o recepcin sncrona del estado de entrega de un SMS.
Parmetro
Elemento tipo
Opcion al No S
Descripcin Identificador relacionado con el estado de entrega del SMS. Parmetro opcional que sirve para indicar que se realiza la consulta en formato JSON. (alt=JSON)
Debe tenerse en cuenta que el tipo de dato SMSDeliveryStatusPollType se utiliza en las operaciones GET y por lo tanto, debe pasarse en las peticiones en la URI de peticin. De esta manera, no se utiliza XML ni JSON para la codificacin de este tipo de datos.
5.4
Parmetro smsDeliveryStat us
Opcion al S
Descripcin Describe las variaciones del estado de entrega del SMS. Valores posibles son: DeliveredToNetwork DeliveryUncertain DeliveryImpossible MessageWaiting DeliveredToTerminal
5.5
Parmetro
Elemento tipo
Opcion al
Descripcin
Indica la direccin de destino con la que la notificacin est relacionada.
Indica el resultado de la entrega para las direcciones de destino. Utilizado junto al estado de entrega (i.e. DeliveryImpossible) para proporcionar informacin adicional.
5.6
Enumeracin
DeliveredToNetwork DeliveryUncertain
Descripcin Entrega a la red con xito Estado de entrega desconocido. (p. ej: por haber sido enviado a otra red)
Entrega imposible, el mensaje no pudo ser entregado antes de expirar El mensaje est encolado para entrega. Este es un estado temporal, pendiente de transicin a otro estado mencionado. Entrega exitosa Imposible proveer la notificacin de entrega. Se usa para indicar que la recepcin de entrega para la direccin especificada en una operacin SendSMS no est soportada.
Nota: En los envos fuera de Mxico podra no llegar a obtenerse un estado DeliveredToTerminal, aunque el mensaje se haya entregado correctamente.
5.7
Enumeracin
JSON
5.8
Parmetro
OPCIN UserIdType
Elemento tipo Opcion al Descripcin
Nmero de telfono
S S S S S
CLIENTE JAVA
Directrices de Programacin
De forma general, se define un interface principal para cada API, que define las operaciones REST de cliente permitidas para el correspondiente servicio. Mediante un mecanismo de factories se ofrecen implementaciones de estos interfaces, que funcionan como clientes REST. Estos clientes implementan las operaciones definidas para cada API utilizando un modelo de datos Java acorde con los tipos de datos definidos en las APIs. El interface implementado por los clientes SMS es el siguiente:
La factory que debe ser usada para obtener una instancia de la clase cliente para SMS es la que sigue: SMS API Client Factory: es.tid.unica.rest.sms.SMSClientFactory
6.1.2
El siguiente ejemplo muestra el uso del cliente para el uso de la API REST de SMS:
// General configuration data String base_uri = "https://200.39.21.12:8443/osg/UNICA-SMS-REST"; String proxy_host = null; // No proxy is used int proxy_port = 80; // Security configuration data String service_id = "0100105600"; String sp_id = "000025"; String sp_password = "123456"; String access_token = "2SDO4gAL"; String requestor_id = "5213907550011";
int requestor_type = 1; // String receipt_msisdn = "5213851866417"; String message_text = "This is the text to be sent"; try { // Creating the client SMSClient client = SMSClientFactory.getInstance().createSMSClient(base_uri, proxy_host, proxy_port); // Initialize the client client.setServiceId(service_id); client.setSpId(sp_id); client.setSpPassword(sp_password); client.setAccessToken(access_token); client.setRequestorId(requestor_id); client.setRequestorType(requestor_type); // Enable authentication client.enableAuthentication(true); //----------------------------------------------// Send an SMS // 1. Build the message SMSTextType sms = new SMSTextType(); // 1.1 Receipt address UserIdType address = new UserIdType(); address.setPhoneNumber(new E164Type(receipt_msisdn)); sms.addAddress(address); // 1.2 Text content SMSTextContentType sms_text_content = new SMSTextContentType(message_text); sms.setMessage(sms_text_content); // 2. Send the message. SendSMSResult result = client.sendSMS(sms, Encoding.APPLICATION_XML); System.out.println("The result of the sendSMS opeation is " + result); //----------------------------------------------//----------------------------------------------// Retrieve the delivery status of the sent SMS. SMSDeliveryStatusType status = client.getSMSDeliveryStatus(result.getLocationHeader().toString(), null); System.out.println("The result of the getSMSDeliveryStatus opeation is " + status); //----------------------------------------------} catch (Exception e) { e.printStackTrace(); }
6.1.3
La librera Java de cliente SMS est formada por los siguientes paquetes:
Enumeracin
Descripcin Paquete que contiene las clases principales para el cliente SMS REST API. Paquete que contiene los tipos de datos principales para los mensajes y los parmetros utilizados por las APIs. Este paquete contiene los tipos de datos bsicos de ParlayX, que pueden ser utilizados en las APIs Paquete que contiene los tipos de datos especficos de la API de SMS
6.1.4
Prerrequisitos
Para el correcto funcionamiento de la librera de cliente de Java de SMS es necesario tener instalada la versin 1.5 o superior del JRE (Java Runtime Environment) o JDK (Java Development Kit). Tambin es necesario utilizar las libreras contenidas en los archivos .jar situados en el directorio lib de la distribucin del cliente Java.
6.2
6.2.1
CLIENTE C#
Directrices de Programacin
Se define una clase factory para cada API actuando como creador de clientes REST. A partir de una instancia nica de la factory se puede obtener un cliente para el API al que pertenece, poblado con ms o menos datos iniciales dependiendo de la operacin de creacin utilizada. El cliente obtenido, por flexibilidad a la hora de proveer diferentes implementaciones, se ofrece en forma de interfaz del lenguaje C#. La interfaz obtenida a partir del factory se comportar como un cliente REST. Estos clientes implementan las operaciones definidas para cada API utilizando un modelo de datos C# acorde con los tipos de datos definidos en las APIs. La factory e interfaz del cliente SMS para la API REST son los siguientes:
es.tid.unica.rest.sms.SMSClientFactory es.tid.unica.rest.sms.ISMSClient
6.2.2
El siguiente ejemplo muestra el uso del cliente para el uso de la API REST de SMS:
try { //1.- instanciate factory and create client from factory instance. //In this example we will use baseUri and proxy data ISMSClient smsClient = SMSClientFactory.GetInstance().CreateSMSClient(baseUri, proxyHost, proxyPort); //2.- Set credentials for authentication smsClient.Credentials.ServiceId = serviceId; smsClient.Credentials.SpId = spId; smsClient.Credentials.SpPassword = spPassword; smsClient.Credentials.RequestorId = accessNumber; smsClient.Credentials.RequestorType = requestorType; smsClient.Credentials.AccessToken = accessToken; //3.-Create text message object SMSTextType sms = new SMSTextType(); //4.- Create at least one destination address and add it to message object UserIdType address = new UserIdType(); address.PhoneNumber = new E164Type("5213851866417"); sms.AddAddress(address); //5.- Create message internal text content and add it to message object SMSTextContentType message = new SMSTextContentType("This is the content"); sms.Message = message; //6.- Define encoding Encoding encoding = Encoding.APPLICATION_URL_ENCODED; //6.- Send message using SMS client SendSMSResult sendSMSResult=smsClient.SendSMS(sms, encoding); //7.- Check delivery result message identifier Console.WriteLine("SMS Identifier: {0}", sendSMSResult.SmsTextResult.Result.Data); } catch (Exception ex) { Console.WriteLine(ex.Message);
6.2.3
Enumeracin
Descripcin Paquete que contiene las clases principales para el cliente SMS REST API. Paquete que contiene los tipos de datos principales para los mensajes y los parmetros utilizados por las APIs. Este paquete contiene los tipos de datos bsicos de ParlayX, que pueden ser utilizados en las APIs Paquete que contiene los tipos de datos especficos de la API de SMS
6.2.4
Prerrequisitos
Sistema Operativo Windows XP Service Pack 2 (o superior) o Windows Vista Microsoft .NET Framework 3.5, disponible para descarga gratuita en http://www.microsoft.com/downloads
Esta librera no ha sido diseada para otros entornos como Mono o Portable.NET.
6.3
6.3.1
CLIENTE PHP
Dependencias
PHP 5.2.6 PHP5-CURL 5.2.6 CURL 7.18.2
6.3.2
Directrices de Programacin
Se define una clase para cada API actuando como un cliente REST. Estos clientes implementan las operaciones definidas para cada API utilizando como referencia los tipos de datos definidos en las APIs. Las clases del cliente SMS para la API REST son las que siguen (una clase para cada tipo de codificacin):
Esta librera se ha probado en los siguientes sistemas operativos: CentOs 5, Fedora 11, Ubuntu Jaunty, Ubuntu Karmic, Debian Lenny, Windows 7 y Windows XP.
6.3.3 Ejemplo para el envo con el cliente SMS
El siguiente ejemplo muestra el uso del cliente para el uso de la API REST de SMS:
<?php
//Clase para el envio de SMS mediante URL encode include_once "./smsRESTlibraryURLEnc.php"; //Creacin del cliente para el envio de SMS $smsClient = new smsRESTclient($spId,$serviceId,$spPassword,$token,$requestor_id,$apiendpoint); //Destinatario del SMS $address["phoneNumber"]="0000000000"; //Contenido del SMS $message= "Esto es una prueba"; //Envio del SMS y resultado $result = $smsClient->sendSMS($address,$message); ?>
6.3.4
Enumeracin
Descripcin Paquete que contiene la clase principal para el cliente SMS REST API con codificacin XML. Paquete que contiene la clase principal para el cliente SMS REST API con codificacin JSON. Paquete que contiene la clase principal para el cliente SMS REST API con codificacin URL encode.
se responder con un cdigo de estado HTTP del tipo 4XX/5XX. Sin embargo, si de produce un error relacionado con: token no vlido El MSISDN no tiene permisos para utilizar el API
se responder con un cdigo de estado HTTP 201, pero al consultar el estado del envo se obtendr el valor DeliveryImpossible.
CONSIDERACIONES GENERALES
En esta seccin se describen elementos necesarios para el normal funcionamiento de la API REST SMS:
Mtodos HTTP: que constituyen las operaciones RESTful, de acuerdo con los principios REST. Representaciones comunes.
A.1
Mtodos HTTP
A.1.1
POST
El mtodo POST se utiliza para solicitar que el servidor de origen acepte la entidad contenida en la peticin como un nuevo recurso identificado por la URI de la peticin en la Request-Line. POST est diseado para permitir un mtodo uniforme que cubra las siguientes funciones:
Anotacin de recursos existentes. Postear un mensaje en un boletn, grupo de noticias, lista de correo, o grupo similar de artculos. Proveer un bloque de datos, como el resultado del envo de un formulario, para que sea procesado. Extender una base de datos a travs del aadido de una operacin.
La actual funcionalidad desarrollada por el mtodo POST est determinada por el servidor y es usualmente dependiente de la Request-URI. La entidad posteada est subordinada a esa URI de la misma manera que el archivo est subordinado al directorio que lo contiene, un artculo de noticias est subordinado a un grupo de noticias al que est posteado, como un registro est subordinado a una base de datos.
A.1.2
GET
El mtodo GET intenta extraer cualquier informacin (en la forma de una entidad) identificada por una Request-URI. Si la Request-URI se refiere a un proceso que genera datos, es un dato producido que debe devolverse como la entidad en la respuesta y no el texto origen del proceso, a no ser que el texto sea la salida del proceso.
A.1.3
PUT
El mtodo PUT solicita que la entidad contenida sea almacenada bajo la Request-URI proporcionada. Si la Request-URI se refiere a un recurso existente, la entidad contenida
Pgina 25 de 27 movistar 2009 Reservados todos los derechos.
debe ser considerada como una versin modificada del recurso residente en el servidor. Si la Request-URI no apunta a un recurso existente, y la URI es capaz de ser definida como un nuevo recurso por el agente solicitante, el servidor de origen puede crear el recurso con esa URI.
A.1.4
DELETE
El mtodo Delete solicita que el servidor de origen borre el recurso identificado con la Request-URI. Este mtodo puede ser reescrito por intervencin humana (u otros mtodos) en el servidor de origen. El cliente no puede garantizar que la operacin haya sido llevada a trmino, incluso si el cdigo de estado devuelto desde el origen indica que la accin ha sido completada con xito. Sin embargo, el servidor no debe indicar una respuesta satisfactoria a no ser que, en el momento en que la respuesta es entregada, intente borrar el recurso o moverlo a una localizacin inaccesible.
A.2
A.2.1
REPRESENTACIONES COMUNES
JSON
Las peticiones POST pueden incluir datos en formato JSON. Las respuestas deben incluir el cuerpo en formato JSON, si corresponden a peticiones POST incluidas en formato JSON o si corresponden a peticiones GET incluidas con el parmetro alt=json. En estos casos, la cabecera Content-Type:Application/json debe estar presente en la respuesta.
A.2.2
XML
Las peticiones POST pueden incluir datos en formato XML. En estos casos, se utiliza un cuerpo application/xml. Este formato XML debe cumplir con las especificaciones de XML Schema. Las respuestas deben incluir un cuerpo del XML si la correspondiente peticin POST incluye datos en formato XML o si la correspondiente peticin GET no inclua el parmetro alt=json. En estos casos, la cabecera Content-Type: Application/xml debe estar presente en la respuesta.
REFERENCIAS
[1] 3GPP TS 29.199-1: "Open Service Access (OSA); Parlay X Web Services; Part 1: Common [2] 3GPP TS 29.199-4: "Open Service Access (OSA); Parlay X Web Services; Part 4: Short Messaging". [3] [4] GSMA OneAPI, http://gsma.securespsite.com/access/default.aspx RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1
[5] W3C Recommendation (26 June 2007): "Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts, https://www.w3.org/TR/2007/REC-wsdl20adjuncts-20070626/#_http_binding_default_rule_method [6] W3C Recommendation (2 May 2001): "XML Schema Part 2: Datatypes", http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/.