API Envío de WHATSAPP (7.0)

INTRODUCCION

API de integración de envío de mensajes WHATSAPP BUSINESS desde aplicaciones mediante peticiones https.

AUTENTICACIÓN

En su cuenta de usuario encontrará el Usuario API y el API Token, ambos son necesarios para realizar las peticiones API REST a las funciones de la API. Las Peticiones, por seguridad deben ralizarse en POST y con protocolo HTTPS Seguro.

Para utilizar la Autenticación Básica debe incluir una cabecera en las peticiones del tipo: Authorization: Basic Base64StringAPI donde Base64StringAPI es la codificación en Base64 de la cadena UsuarioAPI:APIToken, puede encontrar su Usuario API y API Token en su cuenta de usuario en Tus Datos -> Configurar Cuenta.

Para generar el string codificado en Base64, simplemente genere el string UsuarioApi:APIToken y codifíquelo en base64 mediante cualquier función base64encode.

A TENER EN CUENTA

Conexiones en vacío: Es importante tener en cuenta que una conexión errónea de forma repetida será tratada por el sistema como spam y podrá llegar a bloquear temporalmente la conexión. Es conveniente evitar realizar repetidas conexiones con datos erróneos o conexiones rápidas ‘en vacío’ (sin realizar envíos) con los mismos datos para obtener el número de créditos o el mismo report.

Para obtener reports de forma óptima en tiempo real se recomienda configurar la API en el panel para recibirlos en un script de su web.
Respuesta de las peticiones: La mayoría de las funciones disponen de un parámetro denominado ‘Resp’. Este parámetro define el formato de la respuesta que se devolverá. Puede ser TXT, JSON, XML o no definido. Se recomienda siempre definir este parámetro ya que todas las funciones, por compatibilidad con versiones anteriores de la API, responden por defecto (si no se define este parámetro) tal y como lo hacían en versiones antiguas. En estos resultados de versiones de API anteriores se obvian algunas de las variables que se incluyen en esta versión de la API y que consideramos importantes para facilitar la integración e información de la cuenta. En los ejemplos incluidos siempre se tiene en cuenta que ha definido el parámetro. Si está trabajando directamente con la API versión >= 5, asumiremos que ha definido el parámetro en todas las peticiones.
Funcionamiento recomendado: El funcionamiento recomendado, por ser el más sencillo y, a la vez, el más profesional es el siguiente:
- PROCESO 1: Envío de mensaje Whatsapp : Descrito en la función EnviarWHATSAPP de este documento.
- PROCESO 2: Recepción automática de reports en su web (proceso descrito en el la sección 'Recepción de reports de entrega'.

Enviar Whatsapp

/EnviarWHATSAPP

Función de envío de mensajes Whatsapp desde aplicaciones. Definición de parámetros necesarios.

ATENCIÓN: Debe tener activada la cuenta whatsapp en su panel de usuario. También chequee la sección de recepción de reports en tiempo real si desea recibir el estado de los mensajes y las interacciones del destinatario en tiempo real en un script de su web.

query Parameters
Destinatarios
required
Array of arrays
Tipomensaje
required
string
Enum: "PLANTILLA" "TEXTO" "IMAGEN" "DOCUMENTO" "UBICACION" "SOLICITARUBICACION" "LISTA" "BOTONESRESPUESTA" "REACCION" "BOTONESCTA"
Example: Tipomensaje=[{"Telefono":"34600000001","Nombre":"Pedro Pérez","Email":"destinatario@eldominio.com"}]

Tipo de mensaje a enviar. Una vez recibas un mensaje de un cliente o éste interactúe con uno de tus mensajes (por ejemplo pulsando un botón del mensaje de la plantilla que le has enviado) se abrirá una ventana de 24 horas en las que podrás enviarle a ese destinatario cualquier tipo de mensaje. Fuera de esa ventana de 24 horas sólo podrás enviar mensajes de tipo Plantillas.

Plantilla - Tipo de mensaje Plantilla, debes haber creado en Meta la plantilla correspondiente.
Texto - Mensaje de Texto, puedes incluir variables.
Imagen - Mensaje de Imagen
Documento - Envío de un Documento
Ubicacion - Envío de una ubicación.
SolicitarUbicacion - Solicita la ubicación al destinatario.
Lista - Envía una lista de opciones
BotonesRespuesta - Envío de una lista de botones con respuestas.
Reaccion - Enviar reacción a un mensaje recibido desde tu cliente
BotonesCTA - Envío de un botón CTA (Click to Action)", "Example"=>"Plantilla", "Default"=>"Plantilla" ), "DESTINATARIOS"=>array( "Description"=>"Array JSON con los destinatario del whatsapp (parámetro Teléfono) y sus variables asociadas si desea personalizar. Puede añadir variables si desea personalizar Header, footer, botones, etc.. por destinatario. Sólo es obligatorio el teléfono y las variables de la plantilla en caso de enviar este tipo de mensaje, las demás variables se añaden para peersonalizar otros tipos de mensajes y deben incluirse en las secciones del mensaje como {{Variable}} (por ejemplo el el header, body o footer del mensaje) Por ejemplo: <pre style="white-space: break-spaces;border-radius: 10px;text-align: left;"><code class="language-js" style="white-space: break-spaces;"> [ { "Telefono": "34600000001", "Nombre": "Pedro Aicart", "Email": "pedro@dominio.com" "idMensajeRespondido": "100299924445" }, { "Telefono": "34600000002", "Nombre": "Ana Aguado", "Email": "ana@empresa.com" } ] Como mínimo se debe indicar el teléfono de cada destinatario, también puedes incluir el idMensajeRespondido si el mensaje es respuesta directa a uno que hayas recibido. En determinados tipos de mensajes como Reaccion es imperativo indicar el parámetro idMensajeRespondido por destinatario ya que se trata de una reacción directa a un mensaje recibido. Las Variables adicionales (además del Teléfono y las variables que incluyas si quieres personalizar el parámetro DatosMensaje) a incluir por destinatario dependen del tipo de mensaje. ATENCIÓN: Para enviar emojos (por ejemplo en el tipo de mensaje "REACCION" o en cualquier parte del texto de otros tipos de mensajes, puedes haceerlo directamente con el emoji 😃o mediante códigos UTF-16 , por ejemplo: \uD83D\uDE01
Plantilla Se deben incluir para cada destinatario, las variables de la plantilla para personalizar el mensaje. (aquellas que, en la creación se escriben como {{Nombre}} , {{1}}, etc...

Texto - Se debe enviar el parámetro "Texto" por destinatario, puede ser personalizado.
    Texto - El mensaje de texto para cada destinatario
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
Imagen - Mensaje de Imagen, debes incluir para cada destinatario:
    Imagen - URL de la imagen a enviar a ese destinatario
    Descripcion - Mensaje de texto que acompaña a la imagen para ese destinatario.
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
Documento - Envío de un Documento
    Documento - URL del documento a enviar
    Descripcion - Mensaje de texto que acompaña al documento (puede contener variables por destinatario).
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
Ubicacion - Envío de una ubicación.
    Latitud - Latitud de la ubicación por ejemplo 40.7522 (punto como separador de decimales)
    Longitud - Longitud de la ubicación, por ejemplo -3.4562 (punto como separador de decimales)
    Nombre - Nomnre de la ubicación
    Direccion - Dirección de la ubicación
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
SolicitarUbicacion - Solicita la ubicación al destinatario.
    Texto - El mensaje de texto a enviar al destinatario para solicitar su ubicación. Ejemplo: Para poder enviarte sugerencias de restaurantes en tu zona necesitamos tu ubicación.
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
Lista - Envía una lista de opciones
    Lista Debes incluir un parámetro Lista que sea a su vez un array con ID, Titulo y Descripcion por cada elemento de la lista. De esta forma es personalizable la lista por destinatario. Ejemplo "lista":[{"ID":"1","Titulo":"primero","Descripcion":"Éste es el primero"},{"ID":"2","Titulo":"segunda","Descripcion":"Éste es el segundo"},{"ID":"3","Titulo":"tercera","Descripcion":"Éste es el tercero"}]
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
BotonesRespuesta - Envío de una lista de botones con respuestas.
    Botones Es un array con ID y Valor por cada Botón. De esta forma, la lista de botones es personalizable por destinatario. ejemplo "Botones":[{"Id":"Id1","Valor":"Botón 1"},{"Id":"ident2","Valor":"Mi segundo botón"}]
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.
Reaccion - Enviar reacción a un mensaje recibido desde tu cliente
    Emoji - Valor del Emoji a enviar como reacción al mensaje recibido.
    idMensajeRecibido (Obligatorio) - Valor del id del mensaje recibido al que se desea reaccionar.
BotonesCTA - Envío de un botón CTA (Click to Action)
    Boton texto del botón
    Url Es la url a la que se redirigirá al destinatario cuando pulse en el botón
    idMensajeRecibido (Opcional) - Valor del id del mensaje recibido si quieres que la respuesta aparezca relacionada a él.

Datosmensaje
Array of arrays
Example: Datosmensaje={"Plantilla":"Mi Plantilla"}

Array JSON con los datos necesarios para cada tipo de mensaje del whatsapp
Plantilla Se deben incluir los siguientes parámetros en DatosMensaje
    Plantilla - Nombre de la plantilla que se desea enviar. Atención: debes incluir en el parámetro destinatarios el valor las variables incluidas en la plantilla para cada destinatario.
Texto - DatosMensaje no necesita parámetros adicionales. Los parámetros deben incluirse en el array Destinatarios, variable "Texto" personalizada por destinatario.
Imagen - Mensaje de Imagen, no precisa de elementos en el array DatosMensaje
Documento - Envío de un Documento , no precisa de elementos en el array DatosMensaje
Ubicacion - Envío de una ubicación, no precisa de elementos en el array DatosMensaje
SolicitarUbicacion - Solicita la ubicación al destinatario, no precisa de elementos en el array DatosMensaje
Lista - Envía una lista de opciones
    Header - Cabecera del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.
    Body - Cuerpo del mensaje. Longitud máxima de 1024 caracteres
    Footer - Pie del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.
BotonesRespuesta - Envío de una lista de botones con respuestas.
    Header - Cabecera del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.
    Body - Cuerpo del mensaje. Longitud máxima de 1024 caracteres
    Footer - Pie del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.

Reaccion - Enviar reacción a un mensaje recibido desde tu cliente, no precisa de elementos en el array DatosMensaje
BotonesCTA - Envío de un botón CTA (Click to Action)
    Header - Cabecera del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.
    Body - Cuerpo del mensaje. Longitud máxima de 1024 caracteres
    Footer - Pie del mensaje. Longitud máxima una vez sustituidas las variables de 60 caracteres. El sistema cortará a 60 caracteres si se sobrepasa este límite.

Fecha
string
Example: Fecha=2022-05-01 15:10

Fecha en la que queda programado el envío, el mensaje se enviará en esa fecha. Por defecto "" que significa enviar inmediatamente. Formato Año-Mes-dia hora:minuto. La referencia horaria es CET/CEST (Zona horaria de España).

Referenciausuario
string
Example: Referenciausuario=Tu referencia

Parámetro que se utiliza como referencia de toda la campaña para el usuario. Si se selecciona recibir el report en una URL, recibirá este parámetro en el resultado del envío y también la referencia de cada uno de los destinatarios si la ha indicado en el array de usuario.

Report
integer
Example: Report=0

Si desea recibir reports en un script de su web (activando en panel de usuario la configuración API). 1 para Sí, 0 para No. Por defecto 0.

Siguientecanal
Array of arrays
Fixutf8
integer
Resp
string
Enum: "TXT" "JSON" "XML"
Example: Resp=JSON

Tipo de respuesta a mostrar como resultado de la llamada.
ANT - (Obsoleto). Se mantiene por compatibilidad con versiones anteriores
JSON - La respuesta la obtendrá en JSON
XML - La respuesta la obtendrá en XML
TXT - La respuesta la obtendrá en formato Texto

Responses

Response Schema:
Array
Res
required
integer <int32>

Respuesta de la función solicitada
>0 Número de mensajes enviados.
-1 Error de autenticación.
-2 No hay créditos suficientes.
-3 Error en los datos de la llamada. Faltan Parámetros obligatorios. En este caso, obtendrá un parámetro adicional denominado Error con la descripción del error.
-4 No ha configurado Whatsapp Business en su cuenta de usuario.
-5 Error de meta/Facebook al enviar el mensaje.
-6 Error en la Plantilla de whatsapp

Error
string

En caso de Res -3 , obtendrá un error descriptivo del problema en este parámetro.

idMensaje
integer

Identificador del mensaje enviado.

Cred
double

Créditos que restan en la cuenta de usuario tras el envío.

Enviados
integer

Número de mensajes efectivamente enviados.

NoEnviados
integer

Número de destinatarios erróneos/no enviados.

Request samples


curl --location --request POST 'https://api.mensatek.com/v7/EnviarWHATSAPP' \ 
--header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \ 
--form 'Destinatarios=""' \ 
--form 'Tipomensaje="[{\"Telefono\":\"34600000001\",\"Nombre\":\"Pedro Pérez\",\"Email\":\"destinatario@eldominio.com\"}]"' \ 

Response samples

Content type
[
  • {
    }
]

Poner Estado Escribiendo

/TypingWHATSAPP

Función que permite poner el estado escribiendo en Whatsapp, de esta forma , mientras contestas, el destinatario verá que estas escribiendo.

query Parameters
Idmensaje
required
integer
Example: Idmensaje=1288177432

Identificador del mensaje al que estás respondiendo o vas a responder. El IdMensaje es el identificador que obtienes en el webhook de recepción de mensajes

Telefono
required
string
Example: Telefono=34600000000

Teéfon del que ha recibido el mensaje y al que estás respondiendo.

Resp
string
Enum: "TXT" "JSON" "XML"
Example: Resp=JSON

Tipo de respuesta a mostrar como resultado de la llamada.
ANT - (Obsoleto). Se mantiene por compatibilidad con versiones anteriores
JSON - La respuesta la obtendrá en JSON
XML - La respuesta la obtendrá en XML
TXT - La respuesta la obtendrá en formato Texto

Responses

Response Schema:
Array
Res
required
integer <int32>

Respuesta de la función solicitada
>0 Correcto.
-1 Error de autenticación.
-3 Error en los datos de la llamada. Faltan Parámetros obligatorios. En este caso, obtendrá un parámetro adicional denominado Error con la descripción del error.
-4 No ha configurado Whatsapp Business en su cuenta de usuario.
-5 Error de meta/Facebook al procesar la petición.
-6 Error en el proceso

Error
string

En caso de Res -3 , obtendrá un error descriptivo del problema en este parámetro.

Cred
double

Créditos que hay en la cuenta

Request samples


curl --location --request POST 'https://api.mensatek.com/v7/TypingWHATSAPP' \ 
--header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \ 
--form 'Idmensaje="1288177432"' \ 
--form 'Telefono="34600000000"' \ 

Response samples

Content type
[
  • {
    }
]

Cambiar Estado Whatsapp

/CambiarEstadoWHATSAPP

Función que permite cambiar el estado de tu cuenta en whatspp. Debes tener en cuenta que el cambio no es automático. Puede tardar segundos en validarse en Meta o varios minutos si no pasa la primera validación de Meta/Facebook.

query Parameters
Estado
required
string
Example: Estado=Estoy usando Whatsapp Business con Mensatek

Nuevo estado de tu cuenta de whatsapp. Hasta 1024 caracteres.

Resp
string
Enum: "TXT" "JSON" "XML"
Example: Resp=JSON

Tipo de respuesta a mostrar como resultado de la llamada.
ANT - (Obsoleto). Se mantiene por compatibilidad con versiones anteriores
JSON - La respuesta la obtendrá en JSON
XML - La respuesta la obtendrá en XML
TXT - La respuesta la obtendrá en formato Texto

Responses

Response Schema:
Array
Res
required
integer <int32>

Respuesta de la función solicitada
>0 Correcto.
-1 Error de autenticación.
-3 Error en los datos de la llamada. Faltan Parámetros obligatorios. En este caso, obtendrá un parámetro adicional denominado Error con la descripción del error.
-4 No ha configurado Whatsapp Business en su cuenta de usuario.
-5 Error de meta/Facebook al procesar la petición.
-6 Error en el proceso

Error
string

En caso de Res -3 , obtendrá un error descriptivo del problema en este parámetro.

Cred
double

Créditos que hay en la cuenta

Request samples


curl --location --request POST 'https://api.mensatek.com/v7/CambiarEstadoWHATSAPP' \ 
--header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \ 
--form 'Estado="Estoy usando Whatsapp Business con Mensatek"' \ 

Response samples

Content type
[
  • {
    }
]

Recepción de reports de entrega y cambios de estado de mensajes whatsapp enviados y recepción de recibidos

https://{SuDominio}/path/de/su/script/de/recepción/de/reports

ENVÍO EN TIEMPO REAL DE LOS CAMBIOS DE ESTADO DE MENSAJES ENVIADOS Y RECIBIDOS A UN SCRIPT DE SU SERVIDOR.
Activando la opción de recibir los reports en tiempo real en un script en su servidor desde su panel de usuario, recibirá una petición POST con el formato indicado cada vez que un mensaje enviado cambie de estado o cuando reciba un mensaje o respuesta a sus mensajes. Puede configurar recibir las peticiones con autenticación básica y en formato JSON o FORM-DATA

Request Body schema:

Parámetros recibidos en su script en petición POST con la configuración especificada en su panel de usuario/configuración API.

Servicio
required
string

Tipo de report que está recibiendo (el objetivo es distinguir entre los reports de los diferentes servicios). Los servicios a los que se refiere esta especificación puede recibir WHATSAPP Si el servicio se refiere a un report de WHATSAPP

Direccion
required
string

Tipo de report que está recibiendo (el objetivo es distinguir entre los reports de mensajes de entrada y de salirda). INPUT Si el mensaje es de recepción/se ha recibido un mensaje OUTPUT Si el report es de un estado de mensaje enviado

Estado
required
integer

Estado del mensaje enviado o recibido. Los estados posibles son:

ESTADO DESCRIPCION SIGNIFICADO
`8` Recibido El mensaje ha sido recibido.
`9` Mensaje leído Significado: Mensaje recibido y marcado como leído.
`10` Enviado Significado:El mensaje se ha enviado, esperando entrega.
`11` Mensaje Entregado Significado: El mensaje se ha entregado.
`12` El destinatario ha leído el mensaje Significado: El destinatario ha leído el mensaje.
`29` Mensaje Cancelado Significado: El mensaje ha sido cancelado por el usuario antes de su envío.
`50` Rechazado por Facebook Significado: Facebook ha rechazado el mensaje revise el motivo y reintente.
`51` Sin Whatsapp Significado: El destinatario no dispone de whatsapp, no se ha indicado ningún canal alternativo para entregar el mensaje.
`52` Reenviado por otro canal Significado: Se ha reenviado por otro canal porque el destinatario no dispone de whatsapp
`55` No se ha podido enviar. Hay un error en el envío del mensaje.
`56` Sin crédito en Meta. No tienes crédito en Meta. Debes acceder a tu cuenta de Meta y añadir una tarjeta bancaria.
`900` Enviado por SMS Significado: El destinatario no tiene whatsapp y se ha enviado por SMS .
`901` Enviado por RCS Significado: El destinatario no tiene whatsapp y se ha enviado por RCS .
`902` Enviado por VOZ Significado: El destinatario no tiene whatsapp y se ha enviado por VOZ .
`903` Enviado por EMAIL Significado: El destinatario no tiene whatsapp y se ha enviado por EMAIL .
`1000` Entregado a Facebook Significado: El mensaje ha sido aceptado para su entrega por Facebook/Meta.
`1001` Programado Significado: El mensaje Está programado para enviarse más tarde.
`1002` Enviando Significado: El mensaje está siendo enviado.
`1003` Reintentando Significado: Ha habido un problema en destino, el sistema está reintentando.
Telefono
required
string

Teléfono del destinatario (o del remitente si es un mensaje recibido) al que se refiere el report.

NombreDestinatario
required
string

Nombre del perfil de whatsapp al que se envía o del que se ha recibido un mensaje.

Fecha
required
string

Fecha del report

idMensaje
required
integer

Identificador único recibido como respuesta en la función de envío (idMensaje recibido en la función de envío)

Referencia
required
string

Referencia del usuario que se envió durante la petición de envío.

Tipo
required
string

Tipo del mensaje enviado o recibido. Son los tipos de mensaje indicados en la función 'Enviar'

Mensaje
string

Mensaje recibido, sólo disponible en caso de Direccion=INPUT

Request samples

Content type
{
  • "Servicio": "WHATSAPP",
  • "Direccion": "INPUT",
  • "Estado": 8,
  • "Telefono": 34600000001,
  • "NombreDestinatario": "Pedro Pérez",
  • "Fecha": "2020-12-03 11:14:24",
  • "idMensaje": 10573758,
  • "Referencia": "Su referencia si la indicó",
  • "Tipo": "text",
  • "Mensaje": {
    }
}