Les points de terminaison de l'API de la plate-forme de chat permettent d'accéder aux objets de chat. Un objet de chat est créé pour chaque discussion envoyée à et depuis Contact Center AI Platform (CCAI Platform).
Voici les points de terminaison de l'API de la plate-forme de chat :
Modifier les attributs de données réservés pendant une discussion
Mettre à jour l'utilisateur final pendant une session de chat en cours
Objet Chat
Un objet de chat est créé pour chaque session de chat mobile et Web sur la plate-forme CCAI. Voici l'objet de chat :
{
"id": "integer",
"status": "string",
"status_text": "string",
"features": [
"string",
"string"
],
"created_at": "string",
"ends_at": "string",
"timeout_at": "string",
"agent": {
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
"virtual_agent": {
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
"all_agents": [
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
}
],
"all_virtual_agents": [
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
}
],
"lang": "string",
"menus": [
{
"id": "integer",
"name": "string"
},
{
"id": "integer",
"name": "string"
}
],
"end_user": {
"id": "integer",
"identifier": "string"
}
}
Modifier une discussion
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| id | TRUE | Integer | ID du chat à modifier |
Point de terminaison :
Method: PATCH
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:id
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Corps :
{
"finished_by_user_id": "integer",
"chat": {
"deflection_channel": "string",
"status": "string",
"escalation_id": "integer"
}
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Modifier une discussion
Cet exemple montre comment mettre à jour une discussion existante.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| id | Integer | (obligatoire) |
Corps :
{
"finished_by_user_id": "integer",
"chat": {
"deflection_channel": "string",
"status": "finished",
"escalation_id": "integer"
}
}
Réponse
{
"id": "integer",
"status": "string",
"status_text": "string",
"features": [
"string",
"string"
],
"created_at": "string",
"ends_at": "string",
"timeout_at": "string",
"agent": {
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
"virtual_agent": {
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
"all_agents": [
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
}
],
"all_virtual_agents": [
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
}
],
"lang": "string",
"menus": [
{
"id": "integer",
"name": "string"
},
{
"id": "integer",
"name": "string"
}
],
"end_user": {
"id": "integer",
"identifier": "string"
}
}
Code d'état : 200
Envoyer un message dans un chat
Cette méthode permet d'envoyer un message dans une session de chat existante.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| id | TRUE | Integer | ID de la discussion dans laquelle le message doit être envoyé. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:id/message
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Corps :
{
"from_user_id": integer,
"message": {
"type": "string",
"content": "string"
}
}
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Message envoyé
Cet exemple montre comment envoyer un message à une session de chat existante.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| id | Integer | (obligatoire) |
Corps :
{
"from_user_id": integer,
"message": {
"type": "string",
"content": : "string"
}
}
}
Réponse
{
}
Code d'état : 200
Escalader une discussion avec un agent virtuel
Transférer une discussion depuis un agent virtuel vers un agent humain
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de discussion requis pour l'escalade. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/escalations
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Corps :
{
"reason": "string",
"force_escalate": "boolean"
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Passage au niveau supérieur d'un chat réussi
Cet exemple montre comment demander à transférer une discussion existante à un agent humain.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Corps :
{
"reason": "by_end_user_ask",
"force_escalate": true
}
Réponse
{
"id": "integer",
"chat_id": "integer",
"status": "string"
}
Code d'état : 200
Mettre à jour l'escalade
Utilisé uniquement pour sélectionner le canal de déviation.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de chat requis pour mettre à jour l'ID du menu de déviation. |
| id | TRUE | Integer | ID de menu requis. |
Point de terminaison :
Method: PATCH
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/escalations/:id
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Corps :
{
"deflection_channel": "string"
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Escalade mise à jour
Cet exemple montre comment mettre à jour le canal d'escalade.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
| id | Integer | (obligatoire) |
Corps :
{
"deflection_channel": "string"
}
Réponse
{
"id": "integer",
"chat_id": "integer",
"status": "string"
}
Code d'état : 200
Ajouter une photo importée à la discussion
Ajouter à une discussion une photo importée dans l'espace de stockage multimédia
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de la discussion requise à laquelle ajouter la photo. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/photos
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Corps :
{
"photo": [
{
"s3_path": "string",
"photo_type": "string"
},
{
"s3_path": "string",
"photo_type": "string"
}
]
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Photo ajoutée à la discussion
L'exemple suivant montre comment ajouter une photo importée dans un espace de stockage de contenus multimédias à une conversation existante.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Corps :
{
"photo": [
{
"s3_path": "string",
"photo_type": "string"
},
{
"s3_path": "string",
"photo_type": "string"
}
]
}
Réponse
{
"url": "string",
"media_id": "integer"
}
Code d'état : 200
Récupérer toutes les photos de la discussion
Obtient l'ID et l'URL de stockage de tous les éléments multimédias associés au chat.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID du chat requis pour obtenir les informations sur le contenu multimédia. |
Point de terminaison :
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/photos
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Récupération réussie des informations sur la photo de profil d'une discussion
Cet exemple montre un appel réussi à l'API pour obtenir les informations sur la photo d'une session de chat existante.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Réponse
[
{
"url": "string",
"media_id": "integer"
},
{
"url": "string",
"media_id": "integer"
}
]
Code d'état : 200
Obtenir une URL d'importation de photos pré-signée
Permet d'obtenir une URL d'importation pré-signée pour les photos.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de chat requis qui sera associé à l'URL de la photo pré-signée. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/photos/upload
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Récupération réussie de l'URL signée pour l'importation
Voici un exemple de requête réussie avec récupération d'une URL signée pour l'importation de photos.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Réponse
{
"url": "string",
"fields": {
"key": "string",
"success_action_status": "string",
"Content-Type": "string",
"Cache-Control": "string",
"acl": "string",
"policy": "string",
"x-amz-credential": "string",
"x-amz-algorithm": "string",
"x-amz-date": "string",
"x-amz-security-token": "string",
"x-amz-signature": "string",
"x-goog-algorithm": "string",
"x-goog-credential": "string",
"x-goog-date": "string",
"x-goog-signature": "string"
}
}
Code d'état : 200
Ajouter une vidéo importée à la discussion
Ajoutez à une discussion une vidéo importée dans l'espace de stockage multimédia.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de chat requis auquel la vidéo doit être associée. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/videos
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Corps :
{
"video": {
"s3_path": "string",
"gcs_path": "string"
}
}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Vidéo importée dans une session de chat
Cet exemple montre comment importer une vidéo dans une session de chat.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Corps :
{
"photo": [
{
"s3_path": "string",
"photo_type": "string"
},
{
"s3_path": "string",
"photo_type": "string"
}
]
}
Réponse
Body
{
"url": "string",
"media_id": "integer"
}
Code d'état : 200
Récupérer toutes les vidéos de la discussion
Obtient l'ID multimédia et l'URL de stockage de toutes les vidéos jointes à la discussion.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de chat requis pour lequel les URL des vidéos seront récupérées. |
Point de terminaison :
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/videos
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Récupérer toutes les URL de vidéos d'une discussion
Cet exemple montre comment récupérer toutes les URL de vidéos d'une discussion existante.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Réponse
[
{
"url": "string",
"media_id": "integer"
},
{
"url": "string",
"media_id": "integer"
}
]
Code d'état : 200
Obtenir une URL d'importation de vidéo pré-signée
Permet d'obtenir une URL de mise en ligne pré-signée pour les vidéos.
| Paramètre | Obligatoire | Type de données | Définition |
|---|---|---|---|
| chat_id | TRUE | Integer | ID de chat requis qui sera associé à l'URL vidéo pré-signée. |
Point de terminaison :
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:chat_id/videos/upload
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Récupération réussie de l'URL signée pour l'importation de la vidéo
Voici un exemple de requête réussie avec récupération d'une URL signée pour l'importation de vidéos.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Réponse
{
"url": "string",
"fields": {
"key": "string",
"success_action_status": "string",
"Content-Type": "string",
"Cache-Control": "string",
"acl": "string",
"policy": "string",
"x-amz-credential": "string",
"x-amz-algorithm": "string",
"x-amz-date": "string",
"x-amz-security-token": "string",
"x-amz-signature": "string",
"x-goog-algorithm": "string",
"x-goog-credential": "string",
"x-goog-date": "string",
"x-goog-signature": "string"
}
}
Code d'état : 200
Créer un chat
Démarrez une nouvelle session de chat.
Exemple de requête
Méthode : POST
URL : https://{subdomain}.{domain}/apps/api/v1/chats
Headers
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Body
{
"chat": {
"menu_id": "integer",
"end_user_id": "integer",
"lang": "string",
"email": "string",
"context": "object",
"transcript": "object"
},
"end_user": {
"phone": "string"
}
}
Contexte :
L'objet context inclut l'objet value, qui transmet les métadonnées à la conversation par chat. Vous pouvez transmettre l'objet context aux agents virtuels en tant que paramètre de données non signé. Consultez l'exemple ci-dessous :
{
"context": {
{"value":
{"foo": "bar",
"key": "value"}
}
}
}
Dans cet exemple, la valeur du paramètre de données non signées pour le champ entrant est context et le champ de destination peut être défini sur context. Vous pourrez ainsi utiliser $session.params.context.foo ou $session.params.context.key.
Exemple de réponse
{
"id": "integer",
"status": "string",
"status_text": "string",
"features": [
"string",
"string"
],
"created_at": "string",
"ends_at": "string",
"timeout_at": "string",
"agent": {
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
"virtual_agent": {
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
"all_agents": [
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
}
],
"all_virtual_agents": [
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
}
],
"lang": "string",
"menus": [
{
"id": "integer",
"name": "string"
},
{
"id": "integer",
"name": "string"
}
],
"end_user": {
"id": "integer",
"identifier": "string"
}
}
Renvoie une discussion par ID
Cette méthode renvoie l'objet de chat pour un ID de chat donné.
Point de terminaison :
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:id
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Récupérer une discussion
L'exemple suivant montre une requête réussie pour un ID de chat existant.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-type | application/json | |
| Accepter | application/json |
Requête
| Clé | Valeur | Description |
|---|---|---|
| chat_id | Integer | (obligatoire) |
Réponse
{
"id": "integer",
"status": "string",
"status_text": "string",
"features": [
"string",
"string"
],
"created_at": "string",
"ends_at": "string",
"timeout_at": "string",
"agent": {
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
"virtual_agent": {
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
"all_agents": [
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"first_name": "string",
"avatar_url": "string",
"status": "string"
}
],
"all_virtual_agents": [
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
},
{
"id": "integer",
"name": "string",
"avatar_url": "string",
"status": "string"
}
],
"lang": "string",
"menus": [
{
"id": "integer",
"name": "string"
},
{
"id": "integer",
"name": "string"
}
],
"end_user": {
"id": "integer",
"identifier": "string"
}
}
Code d'état : 200
Obtenir des attributs de données réservés lors d'une discussion
Point de terminaison
Method: GET
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:id/customer_flag
Exemple de requête et de réponses
Cette section contient un exemple de requête et de réponse pour le point de terminaison.
Opération réussie
Cet exemple montre un appel réussi.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Accepter | application/json |
Variables d'URL
| Clé | Valeur | Description |
|---|---|---|
| id | entier | (obligatoire) |
Réponse
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customer": "boolean"
}
Code d'état 0
Mettre à jour les attributs de données réservés lors d'une discussion
Point de terminaison
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/chats/:id/customer_flag
Variables d'URL
| Clé | Valeur | Description |
|---|---|---|
| id | entier | (obligatoire) |
Body
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customers": "boolean"
}
Envoyer des données personnalisées dans le chat
Envoyez des données personnalisées dans un chat.
Exemple de requête
Méthode : POST
URL : https//{subdomain}.{domain}/apps/api/v1/chats/:id/custom_data
Headers
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Variables d'URL
| Clé | Valeur | Description |
|---|---|---|
| id | (obligatoire) |
Exemple de réponse
// Use unsecured parameter
{
"signed": false,
"data": {
// Start customer_flag fields
"reserved_verified_customer": {
"label": "LABEL 1",
"value": true
},
"reserved_bad_actor": {
"label": "LABEL 2",
"value": false
},
"reserved_repeat_customer": {
"label": "LABEL 3",
"value": true
},
// End customer_flag fields
"field1": {
"label": "LABEL 4",
"value": "dummy1"
},
"field2": {
"label": "LABEL 5",
"value": "dummy2"
}
}
}
// Use secured parameter
// {
// "signed": true,
// "signed_data": "eyJhbGciOiJIUzI1NiJ9.eyJjdXN0b21fZGF0YSI6eyJyZXNlcnZlZF92ZXJpZmllZF9jdXN0b21lciI6eyJ2YWx1ZSI6ZmFsc2V9LCJyZXNlcnZlZF9iYWRfYWN0b3IiOnsidmFsdWUiOnRydWV9LCJyZXNlcnZlZF9yZXBlYXRfY3VzdG9tZXIiOnsidmFsdWUiOmZhbHNlfSwiZmllbGQxIjp7InZhbHVlIjoiZHVtbXkxMTEifSwiZmllbGQyIjp7InZhbHVlIjoiZHVtbXkyMjIifX0sImV4cCI6MTcyOTY4MzU5MywiaWF0IjoxNzI5Njc5OTkzfQ.BMskgKTM3DbgrMLWjI46ZJ1K73H25JRd16SgHK0A1Ts"
// }
// ======================= How to create <signed_data> =======================
// payload = {
// "custom_data": {
// // Start customer_flag fields
// "reserved_verified_customer": {
// "label": "LABEL 1",
// "value": true
// },
// "reserved_bad_actor": {
// "label": "LABEL 2",
// "value": false
// },
// "reserved_repeat_customer": {
// "label": "LABEL 3",
// "value": true
// },
// // End customer_flag fields
// "field1": {
// "label": "LABEL 4",
// "value": "dummy1"
// },
// "field2": {
// "label": "LABEL 5",
// "value": "dummy2"
// }
// },
// "exp": 1734567890, // expiration timestamp
// "iat": 1734560000 // issue timestamp
// }
// signed_data = JWT.encode(payload, 'Company secret', 'HS256')
// ======================= End how to create <signed_data> =======================
Informer l'utilisateur final pendant une session de chat en cours
Mettez à jour l'utilisateur final associé à la session de chat active actuelle.
Il met également à jour les coordonnées associées à la demande CRM.
_Identifier est obligatoire, tandis que name, email et phone sont facultatifs.
Exemple de requête
Méthode : POST
URL : https//{subdomain}.{domain}/apps/api/v1/chats/:chat_id/end-user
Headers
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Variables d'URL
| Clé | Valeur | Description |
|---|---|---|
| chat_id |
Body
{
"identifier": "string",
"name": "string",
"email": "string",
"phone": "string"
}
Exemple de réponse
{
"message": "accepted"
}