Detección de Carrier

Introducción:

A continuación se detalla el uso de la API provista por MovilGate para inyectar mensajes SMS salientes sin necesidad de indicar la operadora, la cual forma parte del ServicioId.

Importante

En 2018 MovilGate firmó un acuerdo con el Ente Nacional de Comunicaciones (ENACOM) para acceder a la base de Portabilidad Numérica que incluye los números de teléfonos de los usuarios que optaron por cambiar de compañía manteniendo el número de línea. Esto permite que la detección sea más efectiva, siempre y cuando se consideren las recomendaciones que se detallan a continuación.

Modo de uso:

Cuando no se conoce la operadora se debe enviar un MTRequest muy similar al standard. La diferencia está en que se requiere agregar en el XML un nuevo atributo llamado “ShortNumber”, en el cual se especifica el número corto establecido para su integración. Por ejemplo el “50150”:

<MTRequest>
<Proveedor Id="__user__" Password="__password__"/>
<Servicio Id="" ContentType="0" ShortNumber="50150"/>
<Telefono msisdn="1150585424" IdTran=""/>
<Contenido>Test envio MT</Contenido>
</MTRequest>

Como se puede apreciar, por un lado ahora aparece el atributo ShortNumber, que tiene el valor 50150, y el elemento Servicio ID está presente, pero vacío.

En el caso que se conozca el Servicio ID pueden mantener el valor de ShortNumber en el XML, eso no genera problemas y evita tener que manejar una excepción para agregarlo en algunos casos, y en otros no.

Nota Importante: Para que la detección funcione correctamente debe cumplir los siguientes requisitos:

  • 10 dígitos de largo, incluyendo el código de área y el número.
  • Códigos de área sin 0 (cero).
  • Teléfono sin 15.
  • No incluir el código de país 54, o 549.
Respuesta ante una detección exitosa

Caso 1: Detección exitosa

Cuando MovilGate recibe un request con el formato que recién mostramos lo que hace es intentar detectar la operadora e inmediatamente responder en la misma sesión, agregando el header X-Movilgate-Carrier, el cual indica el Servicio Id que se detectó.

Ejemplo:

< HTTP/1.1 200 OK
< X-Movilgate-Carrier: 50150.movistar.ar
< X-Movilgate-Ref-MsgId: 242879764
< X-Movilgate-Status: OK
< Content-type: text/xml
< Connection: close
< Date: Fri, 07 Dec 2012 14:32:09 GMT
< Server: Bombo/2.0
<?xml version="1.0"?>
<MTResponse>
<Transaccion estado="0" IdTran="242879764" Fecha="2012-12-07 11:32:09"/>
<Texto>OK</Texto>
</MTResponse>

Luego de entregar ésta respuesta, el mensaje es puesto en cola para ser despachado hacia la operadora detectada. De aquí en adelante el flujo continúa igual que si se hubiese enviado el valor correspondiente de Servicio Id.

Respuesta ante una detección no exitosa

Cuando ocurran alguno de estos 2 casos fallidos, se debe descartar dicho teléfono de su base y no volver a enviarlo para detectar.

Caso 2: Detección NO exitosa

Este caso sucede cuando la línea que se envió a detectar no se encuentra en la base de usuarios de Enacom (Ente nacional de comunicaciones).

wEn el caso que no se pueda detectar la operadora MovilGate directamente responderá con un código HTTP 500, adicionalmente se agrega el header X-Movilgate-Status: ERROR_NO_PARAMETERS para diferenciarlo de otros casos.

HTTP/1.1 500 Internal Server Error
< X-Movilgate-Status: ERROR_NO_PARAMETERS
< Content-type: text/html
< Connection: close
< Date: Sat, 07 Dec 2012 11:33:54 GMT
< Server: Bombo/2.0
Closing connection #0

Caso 3: Detección de teléfono fijo

En el caso que la detección arroje que la línea pertenece a un teléfono fijo responderá con un código HTTP 401, adicionalmente se agrega el header X-Movilgate-Status: ERROR_NO_ALLOW_BY_ALLOW.

Además se identifica en el header X-Movilgate-Carrier: 50150.tel_fijo.ar

< HTTP/1.1 401 Unauthorized
< X-Movilgate-Carrier: 50150.tel_fijo.ar
< X-Movilgate-Status: ERROR_NO_ALLOW_BY_ALLOW
< Content-type: text/html
< Connection: close
< Date: Thu, 29 Nov 2018 19:50:13 GMT
< Server: Bombo/2.0
Closing connection #0