Saltar al contenido principal

Direct Messages

Los direct messages son mensajes que se envían directamente al participante final (cliente, proveedor, ciudadano, etc.) a través del canal de comunicación (WhatsApp, Instagram, etc.).

A diferencia de los hint messages que solo son visibles para el agente, los direct messages llegan al participante de la conversación.

¿Cómo se ven en la interfaz?

Ver Elementos en la interfaz del agente para una referencia visual de cómo se ven los direct messages (burbujas verdes) dentro de la conversación.

Mismo endpoint, diferente comportamiento

Los direct messages usan el mismo endpoint que los hint messages (/messages/reply), pero con el parámetro send_as_direct_message: true.


Configuración requerida

Para que tu aplicación pueda enviar direct messages, el administrador de la cuenta debe habilitar el permiso:

"Permitir el envío de respuestas automáticas a tus clientes por parte de esta aplicación"

Este permiso se configura en los ajustes de la aplicación dentro de Socialdesk.

Comportamiento según configuración

send_as_direct_messagePermiso activadoResultado
false o no enviado-Se envía como hint message
trueSiSe envía como direct message al participante
trueNoSe envía como hint message (fallback seguro), incluyendo las quick_replies como sugerencias para el agente

Endpoint

POST /web-api/messages/reply

Headers

Authorization: Bearer {access_token}
Content-Type: application/json

Body

{
"text": "¡Hola! El Plan Básico incluye 8 usuarios y 2 líneas de WhatsApp por $79/mes + IVA.",
"message_id": "msg_001",
"conversation_id": "conv_456",
"send_as_direct_message": true,
"application_context": {
"last_intent": "pricing_inquiry",
"auto_replied": true
}
}

Parámetros

CampoTipoRequeridoDescripción
textstringSi*Texto del mensaje que recibirá el participante
attachmentsarraySi*Archivos adjuntos
interactionsarrayNoInteracciones asociadas al mensaje (botones, listas, etc.)
message_idstringSiID del mensaje al que se responde. Viene en el webhook: payload.id
conversation_idstringSiID de la conversación. Viene en el webhook: payload.conversation.id
send_as_direct_messagebooleanSiDebe ser true para enviar como direct message
application_contextobjectNoJSON para persistir el contexto conversacional de tu aplicación. Ver application_context

*Se requiere al menos text o attachments.

Estructura de attachments

CampoTipoDescripción
typestringTipo: IMAGE, VIDEO, AUDIO, TEXT, CONTACTS
urlstringURL del archivo
fileNamestringNombre del archivo

Para la estructura de interactions (botones y listas de WhatsApp), consulta la documentación de interactions en Hint Messages.

Callbacks y quick_replies

Cuando se envía como direct message, los callbacks y quick_replies no aplican, ya que el mensaje va directo al participante y no al agente. Si el permiso de respuestas automáticas no está activado, el mensaje se convierte en un hint y las quick_replies se mostrarán como sugerencias al agente.


Respuesta

{
"success": true
}

Ejemplo con cURL

curl -X POST https://api.socialdesk.cr/web-api/messages/reply \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"text": "¡Hola! Gracias por contactarnos. Un asesor te atenderá en breve.",
"message_id": "msg_abc123",
"conversation_id": "conv_xyz789",
"send_as_direct_message": true
}'

Ejemplo: con adjunto

curl -X POST https://api.socialdesk.cr/web-api/messages/reply \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"text": "Aquí está la cotización que solicitaste:",
"attachments": [
{
"type": "IMAGE",
"url": "https://example.com/cotizacion.pdf",
"fileName": "cotizacion.pdf"
}
],
"message_id": "msg_abc123",
"conversation_id": "conv_xyz789",
"send_as_direct_message": true
}'

Errores comunes

CódigoErrorDescripción
400You must send text or attachmentNo se envió ni texto ni attachments
400Message is requiredFalta el message_id
400Conversation is requiredFalta el conversation_id
400Cannot send both context and application_contextSe enviaron ambos campos; son mutuamente excluyentes
401UnauthorizedToken inválido o expirado
403Only app extensions can use application_contextSolo las aplicaciones (tipo APP) pueden usar application_context