Comment envoyer des messages à un canal API

Comme le canal API ne prend pas en charge la création implicite de contacts, l’envoi de messages via le canal API LiveDesk comprend les trois étapes suivantes :

  1. Créer un contact
  2. Créer une conversation à partir des informations du contact
  3. Envoyer un message

Créer un contact

URL de la requête

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

Exemple de requête

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", // Facultatif "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",                   // Facultatif
    "email": "alice@acme.inc",
    "phone_number": "+123456789",
    "avatar_url": "https://example.com/avatar.png",
    "identifier": "1234567890"
}

            
Afficher ce bloc de code dans la fenêtre flottante

En-têtes de la requête

Field Type Description
Authorization string Authentifiez-vous à l’aide de Authorization: Basic base64(API Key:API Secret). Accédez à la page API Keys pour obtenir l’API Key et l’API Secret, séparez-les par deux-points, puis encodez-les en Base64.
Content-Type application/json Type de données. Utilisez application/json pour les messages texte classiques.

Paramètres du corps de la requête

Field Type Required Description
inbox_id String Yes ID du canal. Il correspond à l’ID du canal indiqué dans Project Settings > Channels > Specific Channel > Settings.
name String No Nom du contact.
email String No Adresse e-mail.
phone_number String No Numéro de téléphone du contact.
avatar_url String No URL de l’avatar.
identifier String No Identifiant utilisateur.

Exemple de réponse

{ "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
        }
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de réponse

Field Type Required Description
additional_attributes Object No Attributs supplémentaires.
availability_status String No Statut en ligne. La valeur par défaut est offline.
email String No Adresse e-mail.
id String No ID du contact.
name String No Nom.
phone_number String No Numéro de téléphone.
blocked String No Indique si le contact est bloqué. La valeur par défaut est false.
identifier String No Identifiant utilisateur.
thumbnail String No URL de la miniature.
custom_attributes String No Attributs personnalisés.
created_at String No Horodatage de création.
contact_inboxes Array No Boîtes de réception du contact.
inbox String No Boîte de réception du canal.
source_id String No ID source.

Créer une conversation

URL de la requête

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

Exemple de requête

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, // Obligatoire "contact_id": 2219256, // contact_id ou source_id peut être transmis, mais l'un des deux doit être fourni pour identifier correctement l'expéditeur "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,              // Obligatoire
  "contact_id": 2219256,        // contact_id ou source_id peut être transmis, mais l'un des deux doit être fourni pour identifier correctement l'expéditeur
  "source_id": "123456789"
}

            
Afficher ce bloc de code dans la fenêtre flottante

En-têtes de la requête

Field Type Description
Authorization string Authentifiez-vous à l’aide de Authorization: Basic base64(API Key:API Secret). Accédez à la page API Keys pour obtenir l’API Key et l’API Secret, séparez-les par deux-points, puis encodez-les en Base64.
Content-Type application/json Type de données. Utilisez application/json pour les messages texte classiques.

Paramètres du corps de la requête

Field Type Required Description
inbox_id String Yes ID du canal. Il s’agit du même ID que celui utilisé dans l’API de création d’un contact.
contact_id String No ID du contact. Il s’agit de l’id renvoyé dans la réponse de l’API de création d’un contact.
source_id String No ID source.

Exemple de réponse

{ "meta": { "sender": { "additional_attributes": {}, "availability_status": "offline", "email": null, "id": 2219256, "name": "wjTest", "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": "wjTest", "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": "wjTest",
            "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": "wjTest",
        "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
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de réponse

Field Type Required Description
meta Object No Objet de métadonnées.
sender Object No Informations sur l’expéditeur.
additional_attributes Object No Attributs supplémentaires.
availability_status String No Statut de disponibilité.
email Null No Adresse e-mail.
id Number No ID du contact.
name String No Nom de l’expéditeur.
phone_number Null No Numéro de téléphone.
blocked Boolean No Indique si le contact est bloqué.
identifier Null No Identifiant utilisateur.
thumbnail String No Miniature.
custom_attributes Object No Attributs personnalisés.
created_at Number No Horodatage de création de la conversation.
channel String No Type de canal.
hmac_verified Boolean No Statut de vérification HMAC.
id Number No ID de la conversation.
messages Array No Tableau des messages.
account_id Number No ID du projet.
uuid String No Identifiant unique.
inbox_id Number No ID du canal.
additional_attributes Object No Attributs supplémentaires.
agent_last_seen_at Number No Heure à laquelle l’agent a consulté ou traité la conversation pour la dernière fois.
assignee_last_seen_at Number No Heure à laquelle la personne assignée a consulté ou traité la conversation pour la dernière fois.
can_reply Boolean No Indique si une réponse peut être envoyée.
contact_last_seen_at Number No Heure à laquelle le contact a été vu pour la dernière fois.
custom_attributes Object No Attributs personnalisés.
labels Array No Tableau des libellés.
muted Boolean No Indique si la conversation est mise en sourdine.
snoozed_until Null No Heure jusqu’à laquelle la conversation est mise en attente.
status String No Statut.
priority Null No Priorité.
conversation_category String No Catégorie de la conversation.
chat_mode String No Mode de discussion.
is_forum Boolean No Indique s’il s’agit d’un forum.
created_at Number No Horodatage de création.
updated_at Number No Horodatage de mise à jour.
timestamp Number No Horodatage.
first_reply_created_at Number No Heure de création de la première réponse.
unread_count Number No Nombre de messages non lus.
last_non_activity_message Null No Dernier message ne correspondant pas à une activité.
last_activity_at Number No Heure de la dernière activité.
waiting_since Number No Heure du début de l’attente.
sla_policy_id Null No ID de la politique SLA.
ticket_id Null No ID du ticket.
over_limit Boolean No Indique si la limite a été dépassée.
content_preview Object No Aperçu du contenu.
content_preview.content Null No Contenu de l’aperçu.
content_preview.message_type Null No Type de message.
content_preview.created_at Null No Heure de création.
platform Object No Informations sur la plateforme.
channel_type String No Type de canal.
inbox_name String No Nom de la boîte de réception.
inbox_id Number No ID de la boîte de réception.
account_info Object No Informations sur le compte.
contact_name String No Nom du contact.
contact_email Null No Adresse e-mail du contact.
contact_phone Null No Numéro de téléphone du contact.
contact_id Number No ID du contact.
contact_avatar String No Avatar du contact.
assignment Object No Informations sur l’assignation.
assignee_id Null No ID de la personne assignée.
assignee_name Null No Nom de la personne assignée.
assignee_email Null No Adresse e-mail de la personne assignée.
team_id Null No ID de l’équipe.
team_name Null No Nom de l’équipe.

Envoyer un message

URL de la requête

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

Exemple de requête

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": "Le représentant du service client a envoyé un message. Est-ce 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": "Le représentant du service client a envoyé un message. Est-ce normal ?",
    "private": false,
    "message_type": "incoming",
    "content_attributes": {
        "in_reply_to": 29
    }
}'

            
Afficher ce bloc de code dans la fenêtre flottante

En-têtes de la requête

Field Type Description
Authorization string Authentifiez-vous à l’aide de Authorization: Basic base64(API Key:API Secret). Accédez à la page API Keys pour obtenir l’API Key et l’API Secret, séparez-les par deux-points, puis encodez-les en Base64.
Content-Type application/json Type de données. Utilisez application/json pour les messages texte classiques.

Paramètres du corps de la requête

Field Type Required Description
content String Yes Contenu du message.
private Boolean No Indique s’il s’agit d’un message privé. La valeur par défaut est false.
message_type String No Type de message : outgoing ou incoming. Ils désignent respectivement les messages envoyés par le représentant du service client et par l’utilisateur. Si ce paramètre n’est pas spécifié, la valeur par défaut est outgoing.
content_attributes String No Attributs du contenu.
in_reply_to String No Contenu cible de la réponse.
Icon Solid Transparent White Qiyu
Contactez-nous