Rechercher des conversations par identifiant de contact
Les systèmes externes peuvent rechercher les ID des conversations régulières associées, leurs heures de création et leurs statuts actuels pour un contact à l'aide de l'identifiant métier du contact, de son adresse e-mail ou de son numéro de téléphone complet. Les ID de conversation renvoyés peuvent être utilisés directement avec les API V2 existantes pour obtenir les détails des conversations, les messages, etc.
Méthode de requête
GET
URL de requête
https://livedesk-api.engagelab.com/api/v2/accounts/conversations/lookup
Authentification
Cette API utilise l'authentification HTTP Basic. Transmettez Authorization dans l'en-tête de la requête, avec la clé API comme nom d'utilisateur et le secret API comme mot de passe. Le projet associé aux identifiants définit le périmètre de recherche ; vous n'avez donc pas besoin d'inclure l'ID du projet dans le chemin. Pour plus de détails, consultez la présentation de l'API.
Si account_id est inclus dans la requête, sa valeur doit correspondre au projet associé aux identifiants ; sinon, un code 401 est renvoyé.
Requête
Exemple de requête
curl -X GET 'https://livedesk-api.engagelab.com/api/v2/accounts/conversations/lookup?type=identifier&value=Customer_123&page=1&page_size=20' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic base64(api_key:api_secret)'
Lors d'une recherche par numéro de téléphone, + doit être encodé dans l'URL :
GET /api/v2/accounts/conversations/lookup?type=phone&value=%2B15551234567
Paramètres d'en-tête de requête
| Field | Type | Required | Description |
|---|---|---|---|
Authorization |
string | Yes | Authentifie à l'aide de Authorization: Basic base64(API Key:API Secret). Joignez la clé API et le secret API avec deux-points, puis encodez-les en Base64. |
Paramètres de requête
| Field | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | Type d'attribut de requête. Seuls identifier, email et phone sont autorisés. |
value |
string | Yes | Chaîne non vide comparée exactement à l'attribut du contact correspondant à type. |
page |
integer | No | Entier positif. La valeur par défaut est 1. |
page_size |
integer | No | Entier positif. La valeur par défaut est 20 ; les valeurs supérieures à 50 sont traitées comme 50. |
account_id |
integer | No | ID du projet. Il n'est généralement pas nécessaire de le fournir. S'il est fourni, il doit correspondre au projet associé aux identifiants ; sinon, un code 401 est renvoyé. |
Règles de correspondance
identifier: sensible à la casse. La valeur d'origine est conservée et la correspondance par sous-chaîne ou par caractère générique n'est pas prise en charge.email: les espaces en début et en fin de chaîne sont supprimés, et le format de l'adresse e-mail est validé avant d'effectuer une correspondance exacte, insensible à la casse.phone: les espaces en début et en fin de chaîne sont d'abord supprimés. Le numéro doit être complet, inclure+et l'indicatif du pays, et correspondre au format duphone_numberdu contact. L'API n'ajoute pas d'indicatif de pays par défaut et ne prend pas en charge la correspondance sur les derniers chiffres d'un numéro.- Les paramètres GET doivent être correctement encodés dans l'URL. En particulier,
+dans les numéros de téléphone doit être encodé en%2B.
Périmètre de recherche et tri
Les contacts et les conversations sont recherchés uniquement dans le projet associé aux identifiants. L'API renvoie toutes les conversations régulières associées au contact dans toutes les boîtes de réception du projet (conversation_category=chat), à l'exclusion des conversations de ticket et sans filtrage par agent actuel, agent assigné ou boîte de réception.
Les conversations régulières dans tous les statuts sont renvoyées : open, resolved, pending, snoozed et closed. Cette API ne permet pas de filtrer par statut ; même si status est fourni, les résultats ne sont pas restreints.
Les résultats sont triés par heure de création de la conversation par ordre décroissant. Lorsque les heures de création sont identiques, les résultats sont triés par clé primaire interne de la conversation, également par ordre décroissant. L'ordre de pagination reste stable tant que les données ne changent pas. La pagination par pages ne garantit pas un instantané cohérent pendant que des conversations sont créées ou supprimées simultanément.
Réponse
Réponse réussie
HTTP 200 :
{
"meta": {
"count": 2,
"current_page": 1,
"page_size": 20,
"total_pages": 1
},
"payload": [
{
"id": 202609000000002,
"created_at": 1788739200,
"status": "closed",
"inbox_id": 12,
"contact_id": 901
},
{
"id": 202609000000001,
"created_at": 1788652800,
"status": "open",
"inbox_id": 10,
"contact_id": 901
}
]
}
Paramètres de réponse
| Field | Type | Description |
|---|---|---|
| meta | object | Métadonnées de pagination. |
| count | integer | Nombre total de conversations régulières correspondantes, tous statuts confondus et non affecté par la pagination. |
| current_page | integer | Numéro de la page actuelle. |
| page_size | integer | Nombre réel d'éléments par page ; 50 lorsque la valeur demandée est supérieure à 50. |
| total_pages | integer | Nombre total de pages ; 0 lorsqu'il n'y a aucun résultat. |
| payload | array | Liste des conversations sur la page actuelle. |
| id | integer | ID de conversation externe, c'est-à-dire conversations.display_id ; il peut être utilisé directement avec les API V2 existantes pour obtenir les détails des conversations, les messages, etc. |
| created_at | integer | Heure de création de la conversation sous forme de timestamp Unix, en secondes. |
| status | string | Statut actuel de la conversation, qui peut être open, resolved, pending, snoozed ou closed. |
| inbox_id | integer | ID de la boîte de réception associée. |
| contact_id | integer | ID du contact correspondant. |
Si le contact n'existe pas, si le contact n'a aucune conversation régulière ou si la page demandée dépasse le nombre total de pages, HTTP 200 est renvoyé. Dans ces trois cas, payload est un tableau vide ; meta.count conserve toujours le nombre total réel de résultats.
La réponse contient uniquement les champs listés ci-dessus et ne renvoie ni messages, ni pièces jointes, ni informations personnelles du contact.
Réponse d'erreur
Les réponses d'erreur utilisent la structure suivante. Les descriptions d'erreur ne répètent pas la valeur de recherche :
{
"error": "Description de l'erreur"
}
| HTTP Status Code | Scenario |
|---|---|
401 |
Les identifiants sont invalides, désactivés ou expirés, ou account_id dans la requête ne correspond pas au projet associé aux identifiants. |
409 |
Des données historiques ont entraîné la présence de plusieurs contacts correspondants dans le même projet. L'API n'en sélectionne pas un arbitrairement ; utilisez plutôt l'identifier unique pour la recherche. |
422 |
type est manquant ou non pris en charge ; value est manquant, vide, n'est pas une chaîne ou est mal formaté ; ou un paramètre de pagination n'est pas un entier positif. |
Notes d'utilisation
- Cette API ajoute uniquement une fonctionnalité de recherche et ne modifie pas les données de contact ou de conversation.
- L'API ne prend pas en charge la recherche de contacts via une correspondance approximative. Assurez-vous que l'
identifier, l'adresse e-mail ou le numéro de téléphone stocké par le système externe correspond bien à l'attribut de contact correspondant dans LiveDesk. - Pour traiter les conversations dans les résultats de recherche, utilisez
payload[].idde la réponse comme ID de conversation externe lors de l'appel des API V2 correspondantes.










