Comment envoyer des messages au canal API

Comme le canal API ne prend pas en charge la création implicite de contacts, Livedesk utilise le canal API en trois étapes :

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

Créer un contact

Point de terminaison API

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 requête

Field Type Description
Authorization string Utilisez Authorization: Basic base64(API Key:API Secret) pour l'authentification. Veuillez vous rendre sur la page API Key pour obtenir l'API Key et l'API Secret, puis les concaténer avec deux-points avant l'encodage Base64.
Content-Type application/json Type de données : utilisez application/json pour les messages en texte brut.

Paramètres du corps de la requête

Field Type Required Description
inbox_id String Yes ID du canal. Correspond à l'ID du canal dans Project Settings-Channels-Specific channel-Settings.
name String No Nom du contact.
email String No Adresse e-mail.
phone_number String No Moyen de contact.
avatar_url String No Lien de la pièce jointe.
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 de pièce jointe.
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é, false par défaut.
identifier String No Identifiant utilisateur.
thumbnail String No Identifiant utilisateur.
custom_attributes String No Attributs client.
created_at String No Horodatage de création.
contact_inboxes Array No Identifiant utilisateur.
inbox String No Canal.
source_id String No ID source.

Créer une conversation

Point de terminaison API

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, // Vous pouvez transmettre soit contact_id soit source_id, mais il doit 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,        // Vous pouvez transmettre soit contact_id soit source_id, mais il doit identifier correctement l'expéditeur
  "source_id": "123456789"
}

            
Afficher ce bloc de code dans la fenêtre flottante

En-têtes de requête

Field Type Description
Authorization string Utilisez Authorization: Basic base64(API Key:API Secret) pour l'authentification. Veuillez vous rendre sur la page API Key pour obtenir l'API Key et l'API Secret, puis les concaténer avec deux-points avant l'encodage Base64.
Content-Type application/json Type de données : utilisez application/json pour les messages en texte brut.

Paramètres du corps de la requête

Field Type Required Description
inbox_id String Yes ID du canal. Identique à l'ID utilisé dans l'interface de création de contact.
contact_id String No ID du contact. ID provenant de la réponse de l'interface de création de contact.
source_id String No ID source.

Exemple de réponse

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

            
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 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 s'il est bloqué.
identifier Null No Identifiant d'attribut 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 Dernière heure de traitement de l'agent.
assignee_last_seen_at Number No Dernière heure de traitement de l'attributaire.
can_reply Boolean No Indique s'il est possible de répondre.
contact_last_seen_at Number No Dernière heure de consultation du contact.
custom_attributes Object No Attributs personnalisés.
labels Array No Tableau des étiquettes.
muted Boolean No Indique si la conversation est en sourdine.
snoozed_until Null No Mise en pause jusqu'à.
status String No Statut.
priority Null No Priorité.
conversation_category String No Catégorie de conversation.
chat_mode String No Mode de chat.
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 non lié à l'activité.
last_activity_at Number No Heure de la dernière activité.
waiting_since Number No Heure de début d'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 est 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 du compte.
contact_name String No Nom du contact.
contact_email Null No E-mail du contact.
contact_phone Null No Téléphone du contact.
contact_id Number No ID du contact.
contact_avatar String No Avatar du contact.
assignment Object No Informations d'attribution.
assignee_id Null No ID de l'attributaire.
assignee_name Null No Nom de l'attributaire.
assignee_email Null No E-mail de l'attributaire.
team_id Null No ID de l'équipe.
team_name Null No Nom de l'équipe.

Envoyer un message

Point de terminaison API

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 service client envoie 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 service client envoie 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 requête

Field Type Description
Authorization string Utilisez Authorization: Basic base64(API Key:API Secret) pour l'authentification. Veuillez vous rendre sur la page API Key pour obtenir l'API Key et l'API Secret, puis les concaténer avec deux-points avant l'encodage Base64.
Content-Type application/json Type de données : utilisez application/json pour les messages en texte brut.

Paramètres du corps de la requête

Field Type Required Description
content String No ID du canal. Correspond à l'ID du canal dans Project Settings-Channels-Specific channel-Settings.
private String No Nom du contact.
message_type String No Type de message, outgoing ou incoming. Ils représentent respectivement l'envoi par le service client ou par l'utilisateur. La valeur par défaut est outgoing s'il n'est pas transmis.
content_attributes String No Attributs du contenu.
in_reply_to String No Contenu de la réponse.
Icon Solid Transparent White Qiyu
Contactez-nous