...
URL: https://tcl.twin24.ai/api/chats/v1/chats/{chat_id}/sessions?x_widget=1
Пример функции на языке python:
...
| Блок кода | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
{
"name": "string",
"botIdclientExternalId": "bce7d22e-dde6-4427-b391-ebbdfda44de6string",
"sessionIdclientMetadata": "bce7d22e-dde6-4427-b391-ebbdfda44de6",{
"sessionTtl": 3600,
"messengerTypevar1": "WHATSAPPval1",
"messengerUserIdvar2": "stringval2",
"messageBody": "string",
"messageAttachmentsvar3": [
"bce7d22e-dde6-4427-b391-ebbdfda44de6"val3"
],
"clientNameForOperator": "string",
"clientId}
} |
Описаниеполейметода:
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Имя сессии. |
clientExternalId | string | Нет | Определяемый пользователем идентификатор клиента, инициировавшего сеанс чата. |
clientMetadata | object | Нет | Любые определенные пользователем пары ключ/значение в качестве переменных бота. |
Ответы
Код 201
Description: Successful session creation
| Блок кода | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
{ "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6", "clientExternalIdclientId": "stringbce7d22e-dde6-4427-b391-ebbdfda44de6", "clientPhonestartedAt": 75555673245, "clientEmail": "string "2018-10-31T11:56:07+00:00", "clientDeviceIdttl": "string"3600, "clientTimezonemessages": 300,[ "clientMetadata": { "var1body": "val1string", "var2answers": "val2",[ "var3": "val3string" }], "returnAnswerAsyncactions": true } |
...
Поле
...
Тип
...
Обязательно
...
Описание
...
name...
string
...
Да
...
Имя сессии.
...
botId...
string
...
Нет
...
Идентификатор бота.
...
sessionId...
string
...
Нет
...
Идентификатор существующего сеанса чата.
...
sessionTtl...
integer
...
Нет
...
Время жизни чат-сессии. Указывается в секундах и не может быть больше 12 часов. По умолчанию равен 3 600 секундам.
...
messengerType...
string
...
Нет
...
Тип мессенджера. Указывает из какого мессенджера произведена отправка сообщения (WHATSAPP, TELEGRAM, FACEBOOK...).
...
messengerUserId...
string
...
Нет
...
Идентификатор пользователя в конкретном мессенджере. Например для WHATSAPP это будет номер телефона.
...
messageBody...
string
...
Нет
...
Тело сообщения.
...
messageAttachments...
array of strings
...
Нет
...
Список вложений к сообщению.
...
clientNameForOperator...
string
...
Нет
...
Имя клиента, которое будет видно оператору.
...
clientId...
string
...
Нет
...
Идентификатор клиента.
...
clientExternalId...
string
...
Нет
...
Определяемый пользователем идентификатор клиента, инициировавшего сеанс чата.
...
clientPhone...
string
...
Нет
...
Номер телефона клиента.
...
clientEmail...
string
...
Нет
...
Электронная почта клиента.
...
clientDeviceId...
string
...
Нет
...
Идентификатор клиентского устройства для отправки PUSH-уведомлений.
...
clientTimezone...
integer
...
Нет
...
Смещение часового пояса клиента в минутах.
...
clientMetadata...
object
...
Нет
...
Любые определенные пользователем пары ключ/значение в качестве переменных бота.
...
returnAnswerAsync...
boolean
...
Нет
...
Включение/отключение асинхронного режима.
Ответы
Код 201
Description: Successful session creation
| Блок кода | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
{ "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6", "clientId": "bce7d22e-dde6-4427-b391-ebbdfda44de6", "startedAt": "2018-10-31T11:56:07+00:00", "ttl": 3600, "messages": [ [ { "body": "string", "answers": [ "string" ], "actions": [ { "key1": "value1", "key2": "value2", "key3": "value3" } ], "attachments": [ { "id": "bce7d22e-dde6-4427-b391-ebbdfda44de6", "isPrivate": true, "createdAt": "2018-10-31T11:56:07+00:00", "name": "bot.png", "baseName": "bot", "extension": "png", "sugestedExtension": "png", "path": "string", "size": 12400, "url": "string", "downloadLink": "string" } ] } ] } |
...
Пример функции на языке python для отправки файла с расширением png:
| Блок кода | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
def senduploading_file_to_chat_session(session_id: str, file_name, file_path):file_name, file_path) -> dict: """ Функция загрузки файла изображения в хранилище TWIN. :param file_name: Полное имя файла с расширением. :param file_path: Путь к файлу. :return: Массив данных о загруженном файле. """ url = f"https://chats-apitcl.twin24.ai/api/chats/v1/sessions/{session_id}/messages" payloadfiles?x_widget=1" payload = {} files = [("file[]", (file_name, open(file_path, 'rb'), 'image/png'))] headers = {} headersresponse = {'Content-Type': 'multipart/form-data'} filse = [requests.request("POST", url, headers=headers, data=payload, files=files) return response.json() |
Примечание: данная функция демонстрирует загрузку изображений. Если необходимо отправить pdf-файл, необходимо указать в переменной file следующее:files = [("file[]",
...
(file_name,
...
open(file_path
...
, 'rb'), 'application/pdf'))]
Ответы
Код 201
| Блок кода | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
[
{
"id": "c419011c-a998-4189-b897-e82117e6a803",
"isPrivate": true,
"createdAt": "20232022-06-26T15:44:32+00:00",
"contentType": "image\/pngjpeg",
"name": "for_test.png",
"baseName": "for_test",
"extension": "png",
"suggestedExtension": "png",
"path": "",
"size": 18463,
"url": "string",
"downloadLink": "string",
"ownerId": null
}
] |
Описание полей ответа
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id | string |
| Да | Идентификатор файла. | ||
isPrivate | boolean | Да | Отметка о приватности. True если файл загружен пользователем или оператором, False - если ботом. |
isPrivatename | string | Да | Полное имя файла (с расширением). |
baseName | string | Да | Имя файла. |
extension | string | Да | Расширение файла. |
| suggestedExtension | string | Да | Предлагаемое расширение файла. |
| path | string | Да | Путь (расположение) во внутреннем хранилище. |
| size | int64 | Да | Размер файла в байтах. |
| url | string | Да | Ссылка на файл во внутреннем хранилище. |
| downloadLink | string | Да | Ссылка на скачивание файла. |
ownerId | string | Да | ID владельца |
Далее, для отправки сообщения используется метод отправки сообщения в чат сессию (описан в начале текущего раздела). Важно, при отправке сообщения в котором прикреплён файл, указать в параметрах запроса attachments идентификатор(ы) файла(ов).
...
Описание параметров события chatMessageCreatedEmit
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id | string | Да | Идентификатор сообщения. |
authorId | string | Идентификатор автора сообщения. | |
authorType | string | Тип автора. Определяет, кто отправил сообщение: бот или оператор. | |
authorName | string | Имя автора сообщения. | |
type | string | Тип сообщения. Может быть:REGULAR - обычное сообщение;TERMINAL - последнее (завершающее) сообщение в сессии. После этого сообщения сессия закрывается.HELP - запрос помощи оператора. | |
body | string | Текст сообщения. | |
answers | array of objects | Варианты ответов (кнопки с вариантами ответов). | |
createdAt | string | Отметка времени о созданном сообщении. | |
sessionId | string | Идентификатор чат-сессии. | |
attachments | array of objects | Список идентификаторов вложений. | |
actions | string | Информация о дополнительной функциональности в данном сообщении (например форма опроса). | |
avatar | string | Аватар бота или оператора. Массив данных. | |
| | id | string | Идентификатор файла. | |
| | isPrivate | boolean | False - бот, True - оператор | |
| | createdAt | string | Отметка времени о создании. | |
| | contentType | string | Content type. Тип контента (тип передачи файла). | |
| | name | string | Полное имя файла (с расширением). | |
| | baseName | string | Имя файла. | |
| | extension | string | Расширение файла. | |
| | suggestedExtension | string | Предлагаемое расширение файла. | |
| | path | string | Путь (расположение) во внутреннем хранилище. | |
| | size | string | Размер файла в байтах. | |
| | url | string | Ссылка на файл во внутреннем хранилище. | |
| | downloadLink | string | Ссылка на скачивание. | |
| | ownerId | string | Идентификатор владельца. |
Подтверждение о прочтении сообщения
...
Описание параметров события chatMessageCreatedEmit
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id | string | Да | Идентификатор сообщения. |
operatorId | string | Идентификатор оператора. | |
operatorName | string | Имя оператора. | |
avatar | string | Аватар оператора. | |
previousOperatorId | string | Идентификатор предыдущего оператора. | |
previousOperatorName | string | Имя предыдущего оператора. | |
previousOperatorAvatar | string | Аватар предыдущего оператора. | |
| | id | string | Идентификатор файла. | |
| | isPrivate | boolean | Отметка о приватности. | |
| | createdAt | string | Отметка времени о создании. | |
| | contentType | string | Content type. Тип контента (тип передачи файла). | |
| | name | string | Полное имя файла (с расширением). | |
| | baseName | string | Предлагаемое расширение файла. | |
| | extension | string | Расширение файла. | |
| | suggestedExtension | string | Предлагаемое расширение файла. | |
| | path | string | Путь (расположение) во внутреннем хранилище. | |
| | size | string | Размер файла в байтах. | |
| | url | string | Ссылка на файл во внутреннем хранилище. |
Статус оператора
| Блок кода | ||||||
|---|---|---|---|---|---|---|
| ||||||
[
"operatorStatusChangedEmit",
{
"operatorId": "389",
"previousStatus": "ACTIVE",
"currentStatus": "PAUSED"
}
] |
...