logoDocumentación
Buscar

How to send a message in an API Channel

Dado que el Canal API no admite la creación implícita de contactos, LiveDesk utiliza el canal API en tres pasos:

  1. Crear un contacto
  2. Crear una conversación basada en la información del contacto
  3. Enviar un mensaje

Crear un contacto

Endpoint de la API

https://livedesk-api.engagelab.com/api/v2/accounts/contacts

Ejemplo de solicitud

curl -X POST https://livedesk-api.engagelab.com/api/v2/accounts/contacts \ -H 'Content-Type: application/json' \ -H 'Authorization: Basic base64(api_key:api_secret)' \ { "inbox_id": 407, "name": "Test", // Opcional "email": "alice@acme.inc", "phone_number": "+123456789", "avatar_url": "https://example.com/avatar.png", "identifier": "1234567890", }
              
              curl -X POST https://livedesk-api.engagelab.com/api/v2/accounts/contacts \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic base64(api_key:api_secret)' \
{
    "inbox_id": 407,
    "name": "Test",                   // Opcional
    "email": "alice@acme.inc",
    "phone_number": "+123456789", 
    "avatar_url": "https://example.com/avatar.png",
    "identifier": "1234567890",
}

            
Este bloque de código se muestra en una ventana flotante

Encabezados de la solicitud

Campo Tipo Descripción
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para autenticación. Vaya a la página de claves de API para obtener API Key y API Secret, y júntelos con dos puntos antes de codificar en Base64.
Content-Type application/json Tipo de dato, use application/json para mensajes en texto plano.

Parámetros del cuerpo de la solicitud

Campo Tipo Obligatorio Descripción
inbox_id String ID de canal. Corresponde al ID del canal en “Configuración de proyecto > Canales > Canal específico > Ajustes”.
name String No Nombre del contacto.
email String No Dirección de correo electrónico.
phone_number String No Método de contacto.
avatar_url String No Enlace del avatar.
identifier String No Identificador de usuario.

Ejemplo de respuesta

{ "payload": { "contact": { "additional_attributes": {}, "availability_status": "offline", "email": null, "id": 2219259, "name": "Test", "phone_number": null, "blocked": false, "identifier": null, "thumbnail": "", "custom_attributes": {}, "created_at": 1766571703, "contact_inboxes": [] }, "contact_inbox": { "inbox": null, "source_id": null } } }
              
              {
    "payload": {
        "contact": {
            "additional_attributes": {},
            "availability_status": "offline",
            "email": null,
            "id": 2219259,
            "name": "Test",
            "phone_number": null,
            "blocked": false,
            "identifier": null,
            "thumbnail": "",
            "custom_attributes": {},
            "created_at": 1766571703,
            "contact_inboxes": []
        },
        "contact_inbox": {
            "inbox": null,
            "source_id": null
        }
    }
}

            
Este bloque de código se muestra en una ventana flotante

Parámetros de la respuesta

Campo Tipo Obligatorio Descripción
additional_attributes Object No Atributos adicionales.
availability_status String No Estado en línea, por defecto es offline.
email String No Dirección de correo electrónico.
id String No ID de contacto.
name String No Nombre.
phone_number String No Número de teléfono.
blocked String No Si está bloqueado, por defecto es false.
identifier String No Identificador de usuario.
thumbnail String No Identificador de usuario.
custom_attributes String No Atributos del cliente.
created_at String No Marca de tiempo de creación.
contact_inboxes Array No Identificador de usuario.
inbox String No Canal.
source_id String No ID de origen.

Crear una conversación

Endpoint de la API

https://livedesk-api.engagelab.com/api/v2/accounts/conversations

Ejemplo de solicitud

curl -X POST https://livedesk-api.engagelab.com/api/v2/accounts/conversations \ -H 'Content-Type: application/json' \ -H 'Authorization: Basic base64(api_key:api_secret)' \ { "inbox_id": 407, // Obligatorio "contact_id": 2219256, // Puede pasarse contact_id o source_id, pero debe identificar correctamente al remitente "source_id": "123456789" }
              
              curl -X POST https://livedesk-api.engagelab.com/api/v2/accounts/conversations \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic base64(api_key:api_secret)' \
{
  "inbox_id": 407,              // Obligatorio
  "contact_id": 2219256,        // Puede pasarse contact_id o source_id, pero debe identificar correctamente al remitente
  "source_id": "123456789"
}

            
Este bloque de código se muestra en una ventana flotante

Encabezados de la solicitud

Campo Tipo Descripción
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para autenticación. Vaya a la página de claves de API para obtener API Key y API Secret, y júntelos con dos puntos antes de codificar en Base64.
Content-Type application/json Tipo de dato, use application/json para mensajes en texto plano.

Parámetros del cuerpo de la solicitud

Campo Tipo Obligatorio Descripción
inbox_id String ID del canal. Igual al ID usado en la interfaz de creación de contacto.
contact_id String No ID de contacto. El id obtenido en la respuesta de la creación del contacto.
source_id String No ID de origen.

Ejemplo de respuesta

{ "meta": { "sender": { "additional_attributes": {}, "availability_status": "offline", "email": null, "id": 2219256, "name": "Test", "phone_number": null, "blocked": false, "identifier": null, "thumbnail": "", "custom_attributes": {}, "created_at": 1766571624 }, "channel": "Channel::Api", "hmac_verified": false }, "id": 40, "messages": [], "account_id": 17623000010928, "uuid": "660ce36f-46bb-4153-948c-8a26e6dab634", "inbox_id": 407, "additional_attributes": {}, "agent_last_seen_at": 0, "assignee_last_seen_at": 0, "can_reply": true, "contact_last_seen_at": 0, "custom_attributes": {}, "labels": [], "muted": false, "snoozed_until": null, "status": "open", "priority": null, "conversation_category": "chat", "chat_mode": "private_chat", "is_forum": false, "created_at": 1766572062, "updated_at": 1766572062.5803902, "timestamp": 1766572062, "first_reply_created_at": 0, "unread_count": 0, "last_non_activity_message": null, "last_activity_at": 1766572062, "waiting_since": 1766572062, "sla_policy_id": null, "ticket_id": null, "over_limit": false, "content_preview": { "content": null, "message_type": null, "created_at": null }, "platform": { "channel_type": "Channel::Api", "inbox_name": "JennyApi", "inbox_id": 407 }, "account_info": { "contact_name": "Test", "contact_email": null, "contact_phone": null, "contact_id": 2219256, "contact_avatar": "" }, "assignment": { "assignee_id": null, "assignee_name": null, "assignee_email": null, "team_id": null, "team_name": null } }
              
              {
    "meta": {
        "sender": {
            "additional_attributes": {},
            "availability_status": "offline",
            "email": null,
            "id": 2219256,
            "name": "Test",
            "phone_number": null,
            "blocked": false,
            "identifier": null,
            "thumbnail": "",
            "custom_attributes": {},
            "created_at": 1766571624
        },
        "channel": "Channel::Api",
        "hmac_verified": false
    },
    "id": 40,
    "messages": [],
    "account_id": 17623000010928,
    "uuid": "660ce36f-46bb-4153-948c-8a26e6dab634",
    "inbox_id": 407,
    "additional_attributes": {},
    "agent_last_seen_at": 0,
    "assignee_last_seen_at": 0,
    "can_reply": true,
    "contact_last_seen_at": 0,
    "custom_attributes": {},
    "labels": [],
    "muted": false,
    "snoozed_until": null,
    "status": "open",
    "priority": null,
    "conversation_category": "chat",
    "chat_mode": "private_chat",
    "is_forum": false,
    "created_at": 1766572062,
    "updated_at": 1766572062.5803902,
    "timestamp": 1766572062,
    "first_reply_created_at": 0,
    "unread_count": 0,
    "last_non_activity_message": null,
    "last_activity_at": 1766572062,
    "waiting_since": 1766572062,
    "sla_policy_id": null,
    "ticket_id": null,
    "over_limit": false,
    "content_preview": {
        "content": null,
        "message_type": null,
        "created_at": null
    },
    "platform": {
        "channel_type": "Channel::Api",
        "inbox_name": "JennyApi",
        "inbox_id": 407
    },
    "account_info": {
        "contact_name": "Test",
        "contact_email": null,
        "contact_phone": null,
        "contact_id": 2219256,
        "contact_avatar": ""
    },
    "assignment": {
        "assignee_id": null,
        "assignee_name": null,
        "assignee_email": null,
        "team_id": null,
        "team_name": null
    }
}

            
Este bloque de código se muestra en una ventana flotante

Parámetros de la respuesta

Campo Tipo Obligatorio Descripción
meta Object No Objeto de metadatos.
sender Object No Información del remitente.
additional_attributes Object No Atributos adicionales.
availability_status String No Estado de disponibilidad.
email Null No Email.
id Number No ID de contacto.
name String No Nombre del remitente.
phone_number Null No Número de teléfono.
blocked Boolean No Si está bloqueado.
identifier Null No Identificador de atributos de usuario.
thumbnail String No Miniatura.
custom_attributes Object No Atributos personalizados.
created_at Number No Marca de tiempo de creación.
channel String No Tipo de canal.
hmac_verified Boolean No Estado de verificación HMAC.
id Number No ID de conversación.
messages Array No Array de mensajes.
account_id Number No ID de proyecto
uuid String No Identificador único.
inbox_id Number No ID del canal.
additional_attributes Object No Atributos adicionales.
agent_last_seen_at Number No Última hora procesada por el agente.
assignee_last_seen_at Number No Última hora procesada por el asignado.
can_reply Boolean No Si se puede responder.
contact_last_seen_at Number No Última vez visto del contacto.
custom_attributes Object No Atributos personalizados.
labels Array No Array de etiquetas.
muted Boolean No Si está silenciado.
snoozed_until Null No Pausado hasta.
status String No Estado.
priority Null No Prioridad.
conversation_category String No Categoría de la conversación.
chat_mode String No Modo de chat.
is_forum Boolean No Si es un foro.
created_at Number No Marca de tiempo de creación.
updated_at Number No Marca de tiempo de actualización.
timestamp Number No Marca de tiempo.
first_reply_created_at Number No Primera respuesta creada.
unread_count Number No Conteo de no leídos.
last_non_activity_message Null No Último mensaje que no es de actividad.
last_activity_at Number No Hora de la última actividad.
waiting_since Number No Tiempo de espera desde.
sla_policy_id Null No ID de política SLA.
ticket_id Null No ID de ticket.
over_limit Boolean No Si supera el límite.
content_preview Object No Vista previa de contenido.
content_preview.content Null No Contenido de vista previa.
content_preview.message_type Null No Tipo de mensaje.
content_preview.created_at Null No Hora de creación.
platform Object No Información de la plataforma.
channel_type String No Tipo de canal.
inbox_name String No Nombre de la bandeja de entrada.
inbox_id Number No ID de la bandeja de entrada.
account_info Object No Información de la cuenta.
contact_name String No Nombre del contacto.
contact_email Null No Correo electrónico del contacto.
contact_phone Null No Teléfono del contacto.
contact_id Number No ID de contacto.
contact_avatar String No Avatar del contacto.
assignment Object No Información de asignación.
assignee_id Null No ID del asignado.
assignee_name Null No Nombre del asignado.
assignee_email Null No Email del asignado.
team_id Null No ID del equipo.
team_name Null No Nombre del equipo.

Enviar un mensaje

Endpoint de la API

https://livedesk-api.engagelab.com/api/v2/accounts/conversations/:conversation_id/messages

Ejemplo de solicitud

curl -X POST 'https://livedesk-api.engagelab.com/api/v2/accounts/conversations/:conversation_id/messages' \ -H 'Content-Type: application/json' \ -H 'Authorization: Basic base64(api_key:api_secret)' \ -d '{ "content": "El servicio al cliente envía un mensaje, ¿es correcto?", "private": false, "message_type": "incoming", "content_attributes": { "in_reply_to": 29 } }'
              
              curl -X POST 'https://livedesk-api.engagelab.com/api/v2/accounts/conversations/:conversation_id/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic base64(api_key:api_secret)' \
-d '{
    "content": "El servicio al cliente envía un mensaje, ¿es correcto?",  
    "private": false,
    "message_type": "incoming",
    "content_attributes": {
        "in_reply_to": 29   
    }
}'

            
Este bloque de código se muestra en una ventana flotante

Encabezados de la solicitud

Campo Tipo Descripción
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para autenticación. Vaya a la página de claves de API para obtener API Key y API Secret, y júntelos con dos puntos antes de codificar en Base64.
Content-Type application/json Tipo de dato, use application/json para mensajes en texto plano.

Parámetros del cuerpo de la solicitud

Campo Tipo Obligatorio Descripción
content String No ID de canal. Corresponde al ID del canal en “Configuración de proyecto > Canales > Canal específico > Ajustes”.
private String No Nombre del contacto.
message_type String No Tipo de mensaje, outgoing o incoming. Representa envío de agente o usuario respectivamente. Si no se pasa, el valor predeterminado es outgoing.
content_attributes String No Atributos de contenido.
in_reply_to String No Contenido de la respuesta.
icon
Contacto