Links

API de SMS

Documentación técnica: SMS API.

Términos importantes

Termo
Significado
Descrição
MT
Mobile Terminated
Mensajes enviados por su empresa al usuario final.
MO
Mobile Originated
Es el término utilizado para los mensajes que tienen como destino su empresa. Es decir, mensajes originados por el usuario (Dispositivo). Se utiliza, por ejemplo, en flujos de preguntas y respuestas vía SMS, cuando se requiere confirmación del usuario.
Response
Resposta síncrona da Sinch
Es una respuesta inmediata a una solicitud realizada en nuestra API, donde te informamos si el mensaje fue aceptado o no por nuestra plataforma.
Callback
Sent status ou status de envio
Es el primer estado enviado que te devolvemos, en el que te informamos si fue posible o no entregar el mensaje. para el operador.
LA
Short Code
Número corto de 5 o 6 dígitos que se utiliza para enviar y recibir mensajes SMS. Son designados por operadores para integradores certificados (Sinch), y cuentan con normas antifraude y antispam.
DR | DLR
Delivery Receipt
Es el segundo estado de envío que le devolvemos, donde le informamos si fue posible o no entregar el dispositivo. Los operadores envían esta información a Sinch y nosotros se la entregamos al cliente. El tiempo de entrega es variable, por ejemplo, si el dispositivo se apagó en el momento del envío y el usuario lo encendió 2 horas después, este estado de DLR se entregará al cliente con 2 horas de retraso. Obs1: Esta confirmación de entrega en el dispositivo solo existirá para los casos en que el mensaje haya sido entregado con éxito al operador. Es decir, el primer estado (Callback) fue exitoso. Obs2: Es muy importante señalar que lamentablemente los operadores OI y Sercomtel no cuentan con esta funcionalidad, es decir, no devuelven la información de entrega al dispositivo. Los envíos realizados a números de estos operadores solo tendrán los datos de entrega del operador (callback).

Flujo de Mensajes

Flujo simplificado: MT, Callback, DLR, MO

API HTTPS

Esta API permite que usted automatice las solicitudes de envíos de mensajes únicas o en lotes, y la recuperación de los estatus de envíos a travez de consultas. Ella utiliza el protocolo HTTP con TLS y acepta los métodos GET con parámetros query string o POST con parámetros en JSON.

Autenticacion

Para efectuar envíos y consultas en nuestra API es necesaria una autenticacion por medio de usuario o e-mail, en conjunto con un token.
Campo
Detalhes
Data Type
UserName
Su nombre de usuario o correo electrónico
String
Authentication Token
Tu token de autenticación. Consulta aquí cómo generar un usuario del sistema.
String
TemplateID
Identificador de plantilla de SMS. El texto del mensaje se recuperará y debe crearse primero a través del Portal de mensajería.
Long
TemplateName
Nombre de la plantilla de SMS. Puede que no sea único, lo que genera un error si se encuentra más de un modelo para el nivel de acceso del usuario. El texto del mensaje se recuperará y debe crearse primero a través del Portal de mensajería
String

Detalles de conexión

Campo
Detalles
Hostname
api-messaging.wavy.global
API's
Envios individuais /v1/send-sms Envios em lote /v1/send-bulk-sms
Porta
443 (https)
Protocolo
HTTPS (encriptação TLS)
Autenticação
Portal
messaging.wavy.global

Codificación (encoding)

El estándar de codificación utilizado es UTF-8, todo el contenido de los mensajes deben seguir ese estándar.
Es posible escapar los caracteres caso desee codificar utilizando el formato HTTP
A seguir algunos ejemplos de codificación
“messageText”:“La combinación fue perfecta :)”
O usted puede escapar los caracteres en el caso que quiera:
“messageText”:“La combina\u00e7\u00e3o fue perfecta :)”

Envió de mensajes (MT)

Envio por método GET - Individual

curl -X POST \
https://api-messaging.wavy.global/v1/send-sms \
-H 'authenticationtoken: <authenticationtoken>' \
-H 'username: <username>' \
-H 'content-type: application/json' \
-d '{"destination": "5511900000000" , "messageText": "linha\nquebrada"}'
Al hacer el envió usted recibirá un JSON informando el id que fue generado para este mensaje (Response o Respuesta sincrona de Sinch):
[
{
"id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
"correlationId":"myId"
}
]
Vía método GET, es posible realizar el envió de un mensaje pasando todos los parámetros como query string

URL para envíos unitarios via GET

GET https://api-messaging.wavy.global/v1/send-sms?destination=..
Vía método POST, es posible realizar el envió de un mensaje pasando todos los parámetros como body

URL para envíos unitarios via POST

POST https://api-messaging.wavy.global/v1/send-sms - Content-Type: application/json

Parametros

* Campo obligatorio
Campo
Detalles
Tipo
destination*
Teléfono para el cual sera enviado el mensaje (incluido código de país). Ejemplo: 5511900000000
String
messageText*
Texto del mensaje que sera enviado (max 1280 chars).
String
correlationId
Un ID único definido por usted para coincidencia con los estatus de envió (Callback y DLR). Este parámetro es opcional y usted puede utilizar el ID generado por Sinch para coincidencia (max 64 chars).
String
extraInfo
Cualquier información extra que usted desee adicionar al mensaje (max 255 chars).
String
timeWindow
Mensajes serán enviados apenas en horarios específicos. Por ejemplo, si usted configura la ventana [11, 12, 18], los mensajes seran enviados entre 11:00 y 11:59, 12:00 y 12:59, 18:00 y 18:59, este parámetro se debe definir en la raíz del objeto JSON
Integer[]
expiresAt
Los mensajes no serán enviados después de esta fecha. El formato utilizado es Unix time . Obs: Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
Long
expiresInMinutes
El mensaje sera expirado después del tiempo informado en este campo. El tiempo pasa a ser contabilizado en el momento que el mensaje es recibido por Sinch. Obs: Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
Long
expiresDate
El mensaje no sera enviado después de esta fecha. El campo acepta el siguiente formato yyyy-MM-dd’T'HH:mm:ss. Obs: Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
String
scheduledAt
El mensaje no sera enviado después de esta fecha. ¡IMPORTANTE! Es posible realizar una agenda solo en un período superior a 30 minutos, un proceso por el cual fluxo diferenciado do envio sem agendamento. El formato utilizado es Unix time. Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
Long
delayedInMinutes
Minutos después que la solicitud es realizada el mensaje sea enviado. Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
Long
scheduledDate
El mensaje no sera enviado antes de este fecha. El campo soporta el siguiente formato yyyy-MM-dd’T'HH:mm:ss. Obs: Los campos expiresAt, expiresInMinutes y expiresDate son mutuamente exclusivos (Use solamente uno de ellos)
String
timeZone
Especifica el timezone que sera utilizado directamente en los campos: expiresDate, scheduledDate y timeWindow (que sera modificado en caso que sean utilizados timezones dinámicos como los horarios de verano). Si el timezone no estuviese presente en la solicitud el sistema verificara el timezone del usuario - si estuviera presente - o el timezone del país del usuario en el ultimo caso. Si ninguna de las opciones estuvieran presentes, el sistema utilizara el horario UTC
String
campaignAlias
Identificación de campaña creada previamente. Clique aqui para registar una nueva campaña, este parámetro se debe definir en la raíz del objeto JSON
String
flashSMS
Flash SMS,use esta opción para enviar un mensaje pop-up al teléfono del usuario. Para enviar un mensaje Flash pase el parámetro true.
Boolean
flowId
Identificador del flujo del bot. El mensaje de texto provendrá del flujo
String
subAccount
Referencia de subcuenta. Solo puede ser utilizado por Administradores.
String
params
Mapa de marcadores de posición que serán reemplazados en el mensaje. Si uno o más parámetros son incorrectos, el mensaje se marcará como no válido, pero el envío no se cancelará. Es necesario enviar el flowId para utilizar los parámetros
Map
Para cada usuario hay un token de autenticación único. Para evitar problemas con la eliminación de usuarios, cree un usuario del sistema para sus integraciones.

Envio por método POST - Individual o e lote

curl --request POST \
--url https://api-messaging.wavy.global/v1/send-bulk-sms \
--header 'authenticationtoken: <Token de autenticação>' \
--header 'username:<Usuário Movile Messaging>' \
--header 'content-type: application/json' \
--data "{ "messages":[{ "destination":"5519999999999", "messageText":"First message" }, { "destination":"5519999999999" }, { "destination":"5519999999999" }], "defaultValues":{"messageText":"Default message" }}"
Al hacer el envió, retornara un objeto JSON con un UUID del lote e de los mensajes individuales :
{
"id": "ce528d70-013b-11e7-98f2-e27c463c8809",
"messages": [
{
"id": "ce528d71-013b-11e7-98f2-e27c463c8809"
},
{
"id": "ce528d72-013b-11e7-98f2-e27c463c8809"
}
]
}
Permite el envió de mensajes en lote o individuales pasando los parámetros de un objeto JSON Existe um limite de 1000 mensajes por solicitud
Existe um limite de 1000 mensajes por solicitud

Solicitud HTTP Method POST

Ejemplo de JSON para envio em Lote:
Exemplo 1:
{
"messages":[
{
"destination":"5519900001111",
"messageText":"First message"
},
{
"destination":"5519900002222"
},
{
"destination":"5519900003333"
}
],
"defaultValues":{
"messageText":"Default message"
}
}
Exemplo 2:
{
"messages":[
{
"destination":"5519900001111",
"messageText":"First message"
},
{
"destination":"5519900002222"
}
],
"timeZone":"America/Sao_Paulo",
"scheduledDate": "2017-01-28T02:30:43",
"timeWindow": [12, 15, 20],
"defaultValues":{
"messageText":"Default message"
}
}
Exemplo 3:
`
{
"messages":[
{
"destination":"5519900001111",
},
{
"destination":"5519900002222"
}
],
"defaultValues":{
"messageText":"Default message",
"flashSMS":"true"
}
}
Ejemplo 4, com flowId y params:
{
"messages":[
{
"destination":"5519900001111",
"params": {
"param1": "other_value1",
"param2": "other_value2"
}
},
{
"destination":"5519900002222"
}
],
"defaultValues":{
"params": {
"param1": "value1",
"param2": "value2"
}
},
"flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
Observe que en los ejemplos de arriba, algunos campos “destination” no tienen un “messageText” atribuido directamente para ellos, en este caso, el texto del mensaje sera el “messageText” dentro de “defaultValues”. Esa función es útil cuando es necesario el envió del mismo mensaje para varios números diferentes.
POST https://api-messaging.wavy.global/v1/send-bulk-sms Content-Type: application/json
IMPORTANTE! Para cada usuario existe un token de autenticacion único

HTTP Status Code Response

Códigos de estado HTTP más comunes:
Grupo
Descrição
2xx
Éxito
4xx
error del cliente
5xx
Error del Servidor
Código
Descrição
200
Éxito
400
Solicitud incorrecta
401
Sin autorización
403
Prohibido
404
No encontrado
429
Muchas solicitudes cumplidas
500
Error Interno del Servidor
503
Servicio no disponible
504
tiempo de espera de la puerta de enlace
O limite de máximo é de 700 requisições por segundo por IP.

Estado del envío (devolución de llamada y DLR)

Hay dos formas de obtener el estado de envío de los mensajes, son:
  • Webhook: Recibe estados en el webservice de tu empresa (recomendado).
Tan pronto como entreguemos el mensaje al operador, o tan pronto como el operador nos informe si ha entregado el mensaje al dispositivo, la información se le transmitirá instantáneamente.
  • API de consulta: realice solicitudes de consulta en nuestra API de estado de sms.
Los estados están disponibles por 3 días, y pueden ser consultados por el UUID que Sinch devolvió al recibir el mensaje de su empresa, o por el ID que recibió su empresa al entregar el mensaje a Sinch.
La desventaja de esta opción Tenga en cuenta que en los ejemplos anteriores, algunos campos de "destino" no tienen un "messageText" directamente asignado a ellos, en estos casos, el texto del mensaje será el "messageText" dentro de "defaultValues". Esta función es útil cuando es necesario enviar el mismo mensaje a varios números de consulta diferentes en lugar de un webhook, ya que estará realizando solicitudes de consulta de una ID que quizás aún no se haya entregado al operador o al dispositivo, en este caso. , se realizarán una serie de solicitudes innecesarias. Por ejemplo, si un usuario tenía su dispositivo apagado cuando le envió un mensaje y lo llamó 2 horas después, consultará esta identificación innumerables veces durante dos horas. Y en el caso de usar un webhook, esta información se le enviaría tan pronto como se entregue al dispositivo, sin solicitudes vacías.
Las consultas de estado tienen un límite de velocidad de 1 solicitud por segundo por dirección IP. Las solicitudes que superan este límite se responden con el código de estado HTTP 429.

Estado a través de webhook (entregado a su servicio web)

Para configurar el envío de Callbacks y DRs (duda sobre los términos, consulte la pestaña de Términos Importantes) primero es necesario iniciar sesión en Sinch Messaging en la configuración de la API, en el formulario de configuración puede proporcionar las URL donde estarán los estados de envío enviados (devoluciones de llamada) y estados de confirmación del dispositivo (DR)
Después de agregar su webhook al portal anterior, la configuración se replicará en nuestra plataforma en 10 minutos y llamaremos a su URL cuando ocurran las siguientes acciones:
Ação
Status de retorno enviado
Después de que se entregue o no un mensaje, en el transportista
API de estado de envío (devolución de llamada)
Cuándo se entrega o no un mensaje, en el dispositivo del cliente
API de informes de entrega (DR)
Ejemplo de estado de envío JSON (devolución de llamada - entrega del transportista)
POST https://example.com/callback/
Content-Type: application/json
{
"id":"f9c100ff-aed0-4456-898c-e57d754c439c",
"correlationId":"client-id",
"carrierId":1,
"carrierName":"VIVO",
"destination":"5511900009999",
"sentStatusCode":2,
"sentStatus":"SENT_SUCCESS",
"sentAt":1266660300000,
"sentDate":"2010-02-20T10:05:00Z",
"campaignId":"64",
"extraInfo":"",
}

Campos JSON de respuesta de devolución de llamada (estado enviado)

Campo
Descrição
id
UUID generado del mensaje
correlationId
Su ID para este mensaje
carrierId
identificador del transportista
carrierName
Nombre de la operadora
destination
Número de teléfono del mensaje enviado
sentStatusCode
Código de estado generado por Sinch para el mensaje que indica el estado del envío. Consulte los códigos de estado para obtener más información.
sentStatus
descripción del estado del envío. Consulte los códigos de estado para obtener más información.
sentAt
Hora de envío, el formato utilizado es Unix_time
sentDate
Fecha en que se envió el mensaje. Formato: aaaa-MM-dd'T'HH:mm:ssZ
campaignId
Identificador de campaña si lo hay
extraInfo
Cualquier información extra añadida por el cliente al enviar el mensaje

Informes de entrega de respuesta (DR) de campos JSON

Campo
Descrição
id
UUID generado del mensaje
correlationId
Su ID para este mensaje
carrierId
identificador del transportista
carrierName
Nombre de la operadora
destination
Número de teléfono del mensaje enviado
sentStatusCode
Código de estado generado por Sinch para el mensaje que indica el estado del envío. Consulte los códigos de estado para obtener más información.
sentStatus
descripción del estado del envío. Consulte los códigos de estado para obtener más información.
sentAt
Hora de envío, el formato utilizado es Unix_time
sentDate
Fecha en que se envió el mensaje. Formato: aaaa-MM-dd'T'HH:mm:ssZ
campaignId
Identificador de campaña si lo hay
extraInfo
Cualquier información extra añadida por el cliente al enviar el mensaje

Consulta de estado a través de solicitud HTTP

Para comprobar el estado de los últimos mensajes enviados, es necesario realizar una solicitud POST a la siguiente URL, enviando el(los) UUID(s) y/o el(los) correlación(es) obtenidos en la respuesta de envío:
POST https://api-messaging.wavy.global/v1/sms/status/search
{ "ids": ["918F3591-9AD6-11E7-9C9B-E255B01A8B1A","234F3591-6AD6-11E7-9C9B-E255B01A8B1A"], "correlationIds": ["2468"] }
También es posible obtener solo los estados aún no consultados:
GET https://api-messaging.wavy.global/v1/sms/status/list
Tenga en cuenta que este punto final solo devuelve estados que este punto final aún no ha devuelto.

Respuestas de mensajes en lote

La respuesta de envíos en lote contendrá un archivo JSON con las informaciones necesarias para su rastreamiento, sera generado un id para todo el lote y un id y correlationid individual para cada mensaje:
Campo
Detalles
Tipo
id
UUID generado para este lote
String
messages
Este campo es un array con las respuestas de los mensajes individuales del lote, contiene el id y el correlationid de cada mensaje enviado.
SingleSMSResponse[]

Respuesta

Campos JSON de respuesta:
Campo
Detalhes
Tipo
id
UUID generado en la solicitud del mensaje
String
correlationId
Mismo ID de correlación que la solicitud
String
carrierId
ID del transportista, para más información ver código de error
Long
carrierName
Nombre de la compañía
String
destination
Número de teléfono del mensaje enviado
String
sentStatusCode
Código de estado enviado.
Long
sentStatus
Enviar estado.
String
sentStatusAt
Cuándo se envió el mensaje. es una fecha de epoca
Long
sentStatusDate
Cuándo se envió el mensaje. Formato aaaa-MM-dd'T'HH:mm:ssZ. Formato de fecha con hora y zona horaria (ISO 8601)
String
deliveredStatusCode
Código de estado entregado.
Long
deliveredStatus
Estado entregado.
String
deliveredAt
Cuándo se entregó el mensaje. es una fecha de epoca
Long
deliveredDate
Cuándo se entregó el mensaje. Formato aaaa-MM-dd'T'HH:mm:ssZ. Formato de fecha con hora y zona horaria (ISO 8601)
String
campaignId
Identificador de campaña
Long
extraInfo
Cualquier información adicional establecida por el usuario cuando se envió el mensaje
String
Ejemplo de informe de entrega JSON (DR o DLR: entrega al dispositivo del usuario)
{
"id":"8f5af680-973e-11e4-ad43-4ee58e9a13a6",
"correlationId":"myId",
"carrierId":5,
"carrierName":"TIM",
"destination":"5519900001111",
"sentStatusCode":2,
"sentStatus":"SENT_SUCCESS",
"sentStatusAt":1420732929252,
"sentStatusDate":"2015-01-08T16:02:09Z",
"deliveredStatusCode":4,
"deliveredStatus":"DELIVERED_SUCCESS",
"deliveredAt":1420732954000,
"deliveredDate":"2015-01-08T16:02:34Z",
"campaignId":1234
}

Respuesta del usuario (MO)

La API de MO le permite automatizar el proceso de recuperación de las respuestas enviadas por los clientes en respuesta a los mensajes que les envió. Todas las solicitudes utilizan el método GET y las respuestas se envían en formato JSON. ¡IMPORTANTE! La recepción de MO está habilitada por defecto solo para las LA 27182 y 28149, si es necesario recibir mensajes a través de otras LA, será necesario contactar a soporte para evaluar.
También es posible configurar los MO para que se reenvíen a medida que llegan a una API de cliente, esta es la forma más eficiente ya que no es necesario realizar ninguna llamada, solo manejar los envíos a medida que llegan. Para que esta configuración se lleve a cabo es necesario abrir un ticket con nuestro equipo de soporte técnico a través del correo electrónico de soporte, pasando la url que recibirá los MOs. Pudimos enviar los MO tanto a través del método GET (cadena de consulta) como a través del método POST (JSON).
Ejemplo de JSON enviado a su API (método POST)
{
"id": "25950050-7362-11e6-be62-001b7843e7d4",
"subAccount": "Marketing",
"campaignAlias": "Promo",
"carrierId": 1,
"carrierName": "VIVO",
"source": "5516981562820",
"shortCode": "28128",
"messageText": "Eu quero pizza",
"receivedAt": 1473088405588,
"receivedDate": "2016-09-05T12:13:25Z",
"mt": {
"id": "8be584fd-2554-439b-9ba9-aab507278992",
"correlationId": "1876",
"username": "iFoodCS",
"email": "[email protected]"
}
}
Cada solicitud realizada devolverá los MO de los últimos 3 días, hasta un límite de 1.000 MO. Para fechas anteriores o cantidades mayores, comuníquese con nuestro equipo de soporte a través de nuestro Centro de Servicio.
El comportamiento de la consulta List MO será diferente para cada usuario autenticado debido al nivel de permiso de cada usuario.
Recomendamos el método de envío de MO a la API, cada MO enviado se enviará automáticamente a la API, ya que de esta manera las respuestas se pueden manejar inmediatamente después de recibirlas.
Perfil
Permissão
Regular
cada solicitud realizada en la API de MO solo devolverá los MO correspondientes a la subcuenta a la que pertenece el usuario. No es posible que un usuario normal recupere MO de otras subcuentas.
Administrador
el comportamiento predeterminado para el usuario administrador es recuperar todos los MO para todas las subcuentas. si un administrador quiere recuperar los MO de solo una de las subcuentas, es necesario especificar la subcuenta en el parámetro subAccount con la identificación de la subcuenta deseada.

Formato de respuesta MO

Ejemplo de llamada de respuesta JSON Sinch API:
{
"total": 1,
"start": "2016-09-04T11:12:41Z",
"end": "2016-09-08T11:17:39.113Z",
"messages": [
{
"id": "25950050-7362-11e6-be62-001b7843e7d4",
"subAccount": "Marketing",
"campaignAlias": "Promo",
"carrierId": 1,
"carrierName": "VIVO",
"source": "5516981562820",
"shortCode": "28128",
"messageText": "Eu quero pizza",
"receivedAt": 1473088405588,
"receivedDate": "2016-09-05T12:13:25Z",
"mt": {
"id": "8be584fd-2554-439b-9ba9-aab507278992",
"correlationId": "1876",
"username": "iFoodCS",
"email": "[email protected]"
}
},
{
"id": "d3afc42a-1fd9-49ff-8b8b-34299c070ef3",
"subAccount": "Marketing",
"campaignAlias": "Promo",
"carrierId": 5,
"carrierName": "TIM",
"source": "5519987565020",
"shortCode": "28128",
"messageText": "Meu hamburguer está chegando?",
"receivedAt": 1473088405588,
"receivedDate": "2016-09-05T12:13:25Z",
"mt": {
"id": "302db832-3527-4e3c-b57b-6a481644d88b",
"correlationId": "1893",
"username": "CS",
"email": "[email protected]"
}
}
]
}
Tanto las solicitudes de listado (lista) como la función de búsqueda (buscar) devuelven un objeto JSON con los campos a continuación:
Cada mensaje en el campo de mensajes tiene la siguiente estructura:
Campo
Detalles
Tipo
id
identificación del mensaje
String
subAccount
subcuenta responsable de enviar el mensaje que generó la respuesta
String
carrierId
identificación del operador
Integer
carrierName
Nombre de la compañía
String
source
Número de teléfono que envió el mensaje de respuesta
String
shortCode
El código abreviado del mensaje que originó la respuesta y a través del cual se envió la respuesta
String
messageText
Texto del mensaje de respuesta
String
receivedAt
tiempo de recibo
Long
receivedDate
Fecha y hora del recibo en formato UTC
String
campaignAlias
Alias ​​de la campaña que originó la respuesta
String
mt
MT original que gerou a resposta
MT
Los MT tienen la siguiente estructura:
Campo
Detalhes
Tipo
id
Identificación de MT
String
correlationId
CorrelationID enviado en MT
String
username
Nombre de usuario del usuario responsable de enviar el MT
String
email
Correo electrónico del responsable del envío del MT
String

Solicitud listar MO (list)

El listado ira a retornar todos los MOs recibidos desde la ultima llamada de acuerdo con la respuesta estándar descripta encima. Una vez que esta llamada es realizada sera consumida y no retornara las llamadas siguientes.
Como un usuario regular, para recuperar todos los MOs de una subcuenta use:
GET https://api-messaging.wavy.global/v1/sms/receive/list
Como usuario administrador, para recuperar TODOS los MOs de TODAS las subcuentas use:
GET https://api-messaging.wavy.global/v1/sms/receive/list
Como usuario administrador. Para recuperar los MOs de una subcuenta con la referencia “referencia_subcuenta”, use:
GET https://api-messaging.wavy.global/v1/sms/receive/list?subAccount=referencia_subconta
La solicitud de búsqueda (search request) retornara cada MO recibido en un determinado periodo de tiempo. Usted necesita definir los parámetros START y END para especificar un periodo de tiempo, deberá ser utilizado el formato ISO-8601. START es definido 5 días antes de la fecha actual y END es definido en la fecha actual. No es posible recuperar MOs anteriores a 5 días.
Como um usuario regular, para recuperar todos los MOs de una subcuenta use:
GET https://api-messaging.wavy.global/v1/sms/receive/search
Como usuario administrador, para recuperar TODOS los MOs de TODAS las subcuentas use:
GET https://api-messaging.wavy.global/v1/sms/receive/search
Como usuario administrador. Para recuperar los MOs de una subcuenta con la referencia “referencia_subcuenta”, use:
GET https://api-messaging.wavy.global/v1/sms/receive/search?subAccount=referencia_subconta
Busqueda com START e END definidos:
GET https://api-messaging.wavy.global/v1/sms/receive/search?start=2016-09-12T00:00:00&end=2016-09-15T00:00:00
Solamente con START especificado (utilizando END estandar, fecha actual)
GET https://api-messaging.wavy.global/v1/sms/receive/search?start=2016-09-12T00:00:00
Solamente con END especificado (utilizando START standar, 5 dias antes de la fecha atual)
GET https://api-messaging.wavy.global/v1/sms/receive/search?end=2016-09-15T00:00:00
Usado valores estandar para START y END especificando subconta
GET https://api-messaging.wavy.global/v1/sms/receive/search?subAccount=iFoodMarketing

Códigos de Estatus de Envió

Existen dos niveles de estatus, que son enviados independientemente.
1 - Primer estatus (sent_status - Estatus de envió = Callback)
Estatus de entrega en la operadora, este es el primer estatus que retornamos, y todas las operadoras poseen.
Código
Mensaje
Significado
2
SENT_SUCCESS
Entregado en la operadora con éxito (Este es un estatus que debe ser considerado para efecto de cobro.)
101
EXPIRED
Expirado antes de ser entregado al aparato.
102
CARRIER_COMMUNICATION_ERROR
Error de comunicación con la operadora.
103
REJECTED_BY_CARRIER
Operadora rechazo el mensaje.
201
NO_CREDIT
El limite de mensajes configurado por el administrador de su empresa, para su cuenta o sub cuenta fue exedido. O, en el caso que su empresa utilice el modelo pre-pago de creditos, este credito acabo.
202
INVALID_DESTINATION_NUMBER
El numero de destino es invalido (No es un numero de celular valido).
203
BLACKLISTED
El numero de destino esta en la lista bloqueada, y fue ingresado manualmente por su empresa.
204
DESTINATION_BLOCKED_BY_OPTOUT
El numero de destino solicito opt-out, y no quiere recibir mas mensajes de esta sub cuenta. (Este estatus es especifico para cuentas de Mobile Marketing).
205
DESTINATION_MESSAGE_LIMIT_REACHED
El numero de destino ya recibió la cantidad máxima de mensajes que una misma empresa puede enviar, dentro de un periodo de tiempo. (Este estatus es especifico para cuentas de Mobile Marketing, es esta una regla de las operadoras.
207
INVALID_MESSAGE_TEXT
El texto del mensaje contiene palabras que no son aceptadas por las operadoras. Estas palabras pueden ser de mucha bajeza, o en caso que su cuenta sea de Mobile Marketing, pueden ser de grandes marcas.
301
INTERNAL_ERROR
Ocurrio un error en la plataforma de Sinch
2 - Segundo estatus (delivered_status - Delivery Report Callback)
Estatus de entrega en el aparato, este es el segundo estatus que retornamos y solo existe para los casos en que el primer estatus de arriba fue de éxito, o sea, el mensaje fue entregado en la operadora con éxito. En este estatus informamos si el mensaje fue o no entregado en el aparato. Algunas operadoras no poseen este segundo nivel de estatus, para estas operadoras, lo máximo de información que existe es el primer estatus o sea, si la operadora acepto el mensaje o no.
Código
Mensaje
Significado
4
DELIVERED_SUCCESS
Entregado en el aparato con éxito.
104
NOT_DELIVERED
La operadora acepto el mensaje, pero no consiguió entregarlo en el aparato. Posibles causas: Aparato apagado o fuera del área de servicio por tiempo determinado (normalmente 24 horas, pero para algunas operadoras, este tiempo de tentativa es de 8 horas). Número válido, pero inactivo (algunas operadoras retornan este tipo de error solamente en este segundo nivel de estatus).

API SMPP

Todos los servicios provistos por Sinch deben obligatoriamente ser encriptados, y el protocolo SMPP no posee encriptacion nativa. En este caso disponibilizamos dos alternativas para integración

Opción 1 - SMPP over TLS + IP whitelist (Opción recomendada)

Esta es la opción que recomendamos. En el caso que su sistema no tenga esta funcionalidad, clique aqui para obtener ayuda en la configuracion de un proxy TLS.
Mas allá de la encriptacion que será realizada por TLS, el acceso será autorizado solamente para la IP publica de su servidor. (Aceptamos múltiples IPs e rangos) Esta información debe ser enviada para el Soporte.
En el caso que sea necesaria la liberación de salida de trafico en su firewall, recomendamos que sea liberado cualquier IP de destino en la puerta 2444. Si esto no es posible, se deberán incluir las siguientes reglas de liberación:
200.219.220.8:2444 200.219.220.193:2444 200.189.169.8:2444 189.36.59.86:2444 45.236.179.18:2444 45.236.179.19:2444

Opcion 2 - SMPP over VPN

La encriptacion y la liberación de acceso sera realizada vía VPN.
En el caso que elija esta opción, configure las VPNs utilizando los siguientes peers y hosts con las propuestas de fase 1 y 2 que desea. Llene y envié el formulario de VPN de su empresa para nuestro soporte.
peer 200.155.0.250 hosts 200.219.220.8 and 200.219.220.193 port 2443
peer 200.143.57.150 hosts 200.189.169.8 and 189.36.59.86 port 2443
peer 45.236.178.12 hosts 45.236.179.18 and 45.236.179.19 port 2443
Obs: Por razones de alta disponibilidad y balanceamiento de carga, es obligatorio el establecimiento de las 2 VPNs definidas arriba.

Detalles de conexión

Información
Detalles
Hostname / IP Address
smpp-messaging.wavy.global Al configurar su sistema SMPP, es obligatorio utilizar el dominio como destino, y no las IPs. Este dominio posee 4 proxys de entrada con round robin DNS y health check, y múltiples servidores backend. Basado en el volumen de mensajes que su empresa traficara, vamos a aumentar el numero de binds (conexiones) permitidas simultáneamente.
Puerta
2444 (SMPP over TLS) o 2443 (VPN)
Version SMPP
3.4
Numero de binds
Mínimo 4. Establecer por lo menos 4 binds es mandatario para obtener alta-disponibilidad y balanceamiento de carga.
Codificación de los caracteres
GSM7 - Default (data_coding = 0) (GSM3.38 extended table is not supported by carriers.) LATIN1 (data_coding = 1) UCS2 (data_coding=8).
Flash SMS
Soporta data_coding=0x10 para GSM7 y data_coding 0x18 para UCS2 Cuando recibamos un flashSMS de nuestro cliente, el mismo sera enviado a la operadora como flashSMS, en el caso que la operadora no acepte flashSMS, este será entregado como un SMS regular.
Enquire-link
Minimo: 30 segundos / Máximo: 59 segundos.
Concatenación
UDH de 8 bits y 16 bits son compatibles / UDH Headers
Default addr_ton
1
Default addr_npi
1
window size
10
System IDs
SystemIDs can NOT contain the underscore _ character
Passwords
De acuerdo con la especificación del protocolo versión 3.4, no puede contener mas que 8 caracteres.
2way
Soportado
SMPP bind type
Transceiver(Recomendado). Binds transmit/receiver separados también son aceptados.
SMPP system_type
MovileSMSC
SMPP source addr (senderID)
Cuando su servicio necesite respuestas de usuarios (MO), el source addres debe ser igual al system_id, o sea, el nombre de usuario. Cuando el servicio no necesita de MOs usted puede utilizar cualquier cosa en este campo.
Max flujo de MO
80 por bind
Max flujo de MT
80 por bind
Server Timezone
UTC
Formato de ID
UUID
Default validity_period
24 hours

Estatus de envio (Callback e DLR)

1 - Primer estatus (sent_status - Estatus de envio = Callback)