Arrow
Primeros pasos con Wazzup
Arrow
Cómo conectar messenger
Arrow
Cómo utilizar los chats de Wazzup
Arrow
Cómo pagar el servicio
Arrow
Bitrix24
Arrow
Kommo
Arrow
Zoho CRM
Arrow
HubSpot
Arrow
Pipedrive
Arrow
Otros CRM
Arrow
Cómo vender aún más cómodamente
Arrow
Todo sobre WABA
Arrow
Para socios
Arrow
Documentación API
Documentación API
Arrow

Envío de mensajes

En este artículo, examinaremos a fondo el proceso de enviar, editar y eliminar mensajes a través de la API de Wazzup.

Envío de mensajes

Para enviar mensajes es necesario hacer una solicitud:

Método POST https://api.wazzup24.com/v3/message

En el cuerpo de la solicitud debes pasar los parámetros del mensaje con los datos de autorización en el encabezado.

Parámetros de solicitud

POST /v3/message
├── channelId *
├── chatType *
├── chatId
├── text
├── contentUri
├── refMessageId
├── crmUserId
├── crmMessageId
├── username
├── phone
├── clearUnanswered
├── templateId
├── templateValues[]
└── buttonsObject
    ├── buttons[]
    │   ├── text
    │   └── type
    └── payload

Los parámetros obligatorios están marcados con un asterisco (*)

Parámetro Tipo Descripción
channelId* String ID del canal (uuidv4) a través del cual se enviará el mensaje.
chatType* String Tipo de mensajería. Valores disponibles:
  • WhatsApp: "whatsapp"
  • Viber: "viber"
  • Chat grupal de WhatsApp: "whatsgroup"
  • Instagram: "instagram"
  • Telegram: "telegram"
chatId String ID de chat (cuenta del contacto en el mensajero):
  • Para "whatsapp" y "viber" — solo números, sin espacios ni caracteres especiales, en el formato 79011112233.
  • Para "instagram" — una cuenta sin el "@" al principio.
  • Para "whatsgroup" — viene en los webhooks de los mensajes entrantes.
  • Para "telegram" — viene en los webhooks de los mensajes entrantes y en respuesta a una solicitud al enviar un mensaje saliente con los parámetros de teléfono o nombre de usuario.
text String Texto del mensaje. Es obligatorio si no se especifica el contentUri. No se pueden enviar tanto el texto como el contentUri al mismo tiempo. Restricciones:
  • Para WhatsApp, hasta 10,000 caracteres.
  • Para Instagram, hasta 1,000 caracteres.
  • Para WABA, hasta 550 caracteres en un mensaje de plantilla, y 1024 caracteres en un mensaje normal.
  • Para Telegram, hasta 4,096 caracteres.

Los mensajes de WhatsApp, WABA, Viber y Telegram Bot se pueden formatear usando los siguientes símbolos:

bold — negrita
italic — cursiva
Monospaced — monoespaciado
~strikethrough~ — ~~tachado~~

Los mensajes de Telegram Bot también se pueden formatear usando las siguientes etiquetas:

<code><b>bold</b></code> — para texto en negrita
<code><i>italic</i></code> — cursiva
<code><u>underlined</u></code> — subrayado
<code><s>strikethrough</s></code> — tachado

Si no trabajas con el parámetro templateId para WABA, puedes enviar una plantilla aprobada por Meta* mediante el parámetro text. Para ello, indica el código de la plantilla en el valor y completa las variables, si las hay. Ejemplo:

text: "@template: 6201005a-9a6f-486f-bdd5-e6cb86c76ddb { [[valor de la variable]] }"

contentUri String

Un enlace al archivo a enviar. Es obligatorio si no se especifica texto. El contenido debe ser descargado a través de un enlace sin redirecciones. Se intentará descargar el contenido tan pronto como se reciba la solicitud, es decir, se pueden usar enlaces de corta duración. Puede haber restricciones sobre el tipo y el tamaño del contenido, específicas de cada mensajero. No se puede transmitir tanto el texto como el contentUri al mismo tiempo.

Los mensajes de voz de Telegram de hasta 1 MB en formatos .mp3 y .ogg se enviarán como mensajes de voz. Otros formatos y grabaciones más grandes se enviarán como archivos.

refMessageId String Id del mensaje a citar.
crmUserId String ID del usuario de CRM especificado con los usuarios CRUD. Si se especifica, y si dicho usuario ya existe, guardaremos su ID y nombre como al enviar mediante iframe. No funciona al conectarse a través de la API Sidecar.
crmMessageId String Identificador de mensaje en el CRM. Necesario para que el enrutamiento sea idempotente.
username String Solo para Telegram Personal. Nombre de usuario del contacto de Telegram, sin el símbolo "@" al inicio. Puede usarse al enviar mensajes a través de Telegram si no se conoce el chatId.
phone String Solo para Telegram Personal. Número de teléfono del contacto en formato internacional, sin el signo "+" ni otros símbolos, solo números, incluyendo el código de país correspondiente. Puede usarse al enviar mensajes a través de Telegram si no se conoce el chatId.
clearUnanswered Boolean Indica si se debe reiniciar el contador de mensajes no respondidos. Especifica "false" для evitar que el mensaje restablezca el contador. Por ejemplo, útil en automatizaciones, para que el usuario del CRM reciba una notificación de un nuevo mensaje entrante, incluso si el cliente ha enviado una respuesta automática. Si no se especifica nada, el mensaje saliente reiniciará el contador.
templateId String Código de plantilla WABA.
templateValues Array de String Valores para rellenar las variables en la plantilla.
buttonsObject Objeto buttonsObject Botones adjuntos a un mensaje. Se pueden utilizar para trabajar con plantillas WABA и с интерактивными сообщениями WABA.

buttonsObject (objeto)

Parámetro Tipo Descripción
buttons Object[ ] No se permiten más de 10 botones. Si el array contiene más de 10 botones, se tomarán únicamente los primeros 10.
buttons.text String Necesario para trabajar con mensajes interactivos. Texto del botón, máximo 20 caracteres.
buttons.type String Tipo de botón. Actualmente solo se admite el formato "text".
payload String Payload de las plantillas y de los botones de mensajes interactivos.
¡La ruta no es idempotente! Las solicitudes repetidas con el mismo contenido resultarán en el envío de varios mensajes idénticos. Para protegerte contra posibles duplicados, puedes añadir la propiedad crmMessageId única para cada mensaje.

Si el mensaje ya fue enviado, cualquier otra solicitud con el mismo crmMessageId no se enviará, y se devolverá el error:

400 Bad Request
{ error: 'repeatedCrmMessageId', description: 'Ya has enviado un mensaje con el mismo crmMessageId' }

Ejemplos de solicitud

fetch("https://api.wazzup24.com/v3/message", {
 method: "POST",
 headers: {
   "Content-Type": "application/json",
   "Authorization": "Bearer {apiKey|sidecarApiKey}",
 },
 body: {
   channelId: "e0629e11-0f67-4567-92a9-2237e91ec1b9",
   chatId: "string-chat-id",
   chatType: "whatsapp",
   text: "message text"
 },
});

Respuesta

Si envías una plantilla sin payload a través de la API, en el webhook de mensaje de respuesta se enviará el texto del botón correspondiente.

Parámetro Tipo Descripción
messageId String Identificador del mensaje. Solo aparece cuando code=OK
chatId String ID del chat. Solo aparece cuando code=OK

Gestión de mensajes

Una vez enviado el mensaje, se puede editar o eliminar, siempre y cuando el canal lo soporte.

Edición de mensajes

Método PATCH https://api.wazzup24.com/v3/message/:messageId
Parámetro Tipo Descripción
messageId String Identificador del mensaje (en la URL)
crmUserId String ID del usuario CRM, especificado con CRUD de usuarios
text String Texto del mensaje. Obligatorio si no se usa contentUri
contentUri String URL del archivo a enviar. Obligatorio si no se usa text

Eliminación de mensajes

Método DELETE https://api.wazzup24.com/v3/message/:messageId