Cómo enviar mensajes al canal API

Dado que API Channel no admite la creación implícita de contactos, Livedesk utiliza API Channel en tres pasos:

  1. Crear un contacto
  2. Crear una conversación a partir de 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

Field Type Description
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para la autenticación. Vaya a la página de API Key para obtener la API Key y la API Secret, y concaténelas con dos puntos antes de codificarlas en Base64.
Content-Type application/json Tipo de datos; use application/json para mensajes de texto sin formato.

Parámetros del cuerpo de la solicitud

Field Type Required Description
inbox_id String Yes ID del canal. Corresponde al Channel ID en "Project Settings-Channels-Specific channel-Settings".
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 URL del avatar.
identifier String No Identificador del 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 respuesta

Field Type Required Description
additional_attributes Object No Atributos adicionales.
availability_status String No Estado de disponibilidad; el valor predeterminado es offline.
email String No Dirección de correo electrónico.
id String No ID del contacto.
name String No Nombre.
phone_number String No Número de teléfono.
blocked String No Indica si está bloqueado; el valor predeterminado es false.
identifier String No Identificador del usuario.
thumbnail String No Miniatura.
custom_attributes String No Atributos personalizados.
created_at String No Marca de tiempo de creación.
contact_inboxes Array No Lista de bandejas de entrada del contacto.
inbox String No Bandeja de entrada del 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, // Se puede enviar 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,        // Se puede enviar 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

Field Type Description
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para la autenticación. Vaya a la página de API Key para obtener la API Key y la API Secret, y concaténelas con dos puntos antes de codificarlas en Base64.
Content-Type application/json Tipo de datos; use application/json para mensajes de texto sin formato.

Parámetros del cuerpo de la solicitud

Field Type Required Description
inbox_id String Yes ID del canal. Igual que el ID utilizado en la interfaz de creación de contactos.
contact_id String No ID del contacto. Es el id devuelto por la interfaz de creación de contactos.
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 respuesta

Field Type Required Description
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 Correo electrónico.
id Number No ID del contacto.
name String No Nombre del remitente.
phone_number Null No Número de teléfono.
blocked Boolean No Indica si está bloqueado.
identifier Null No Identificador de atributos del usuario.
thumbnail String No Miniatura.
custom_attributes Object No Atributos personalizados.
created_at Number No Marca de tiempo de creación de la conversación.
channel String No Tipo de canal.
hmac_verified Boolean No Estado de verificación HMAC.
id Number No ID de la conversación.
messages Array No Matriz de mensajes.
account_id Number No ID del 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 Hora del último procesamiento del agente.
assignee_last_seen_at Number No Hora del último procesamiento del asignado.
can_reply Boolean No Indica si puede responder.
contact_last_seen_at Number No Hora de la última visualización del contacto.
custom_attributes Object No Atributos personalizados.
labels Array No Matriz de etiquetas.
muted Boolean No Indica si está silenciado.
snoozed_until Null No Hasta cuándo está en pausa.
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 Indica 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 Hora de creación de la primera respuesta.
unread_count Number No Número de mensajes 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 Hora de inicio de la espera.
sla_policy_id Null No ID de la política de SLA.
ticket_id Null No ID del ticket.
over_limit Boolean No Indica si supera el límite.
content_preview Object No Vista previa del contenido.
content_preview.content Null No Contenido de la 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 del 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 Correo electrónico 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 de atención al cliente envía un mensaje, ¿es normal?", "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 de atención al cliente envía un mensaje, ¿es normal?",
    "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

Field Type Description
Authorization string Utilice Authorization: Basic base64(API Key:API Secret) para la autenticación. Vaya a la página de API Key para obtener la API Key y la API Secret, y concaténelas con dos puntos antes de codificarlas en Base64.
Content-Type application/json Tipo de datos; use application/json para mensajes de texto sin formato.

Parámetros del cuerpo de la solicitud

Field Type Required Description
content String No Contenido del mensaje.
private String No Indica si el mensaje es privado.
message_type String No Tipo de mensaje: outgoing o incoming. Representa, respectivamente, el envío por parte del servicio de atención al cliente o del usuario. Si no se envía, el valor predeterminado es outgoing.
content_attributes String No Atributos del contenido.
in_reply_to String No ID del mensaje al que se responde.
Icon Solid Transparent White Qiyu
Contacto