...
Ниже детально описаны все перечисленные этапы с примерами кода на языке python 3.11.
...
Старт новой новой чат-сессии
Метод: POST
Authorization: No Auth
...
| Информация | ||
|---|---|---|
| ||
Socket.IO - это библиотека для создания приложений, работающих в режиме реального времени, имеющих двунаправленный канал связи и основанных на событиях. Более подробно ознакомиться с библиотекой можно на сайте официальной документации. |
| Информация | ||
|---|---|---|
| ||
Для взаимодействия с socket.io взята библиотека python-socketio версии 4.6.1 |
Справочная информация о событиях socket.io для виджета чат-платформы TWIN
Процесс набора текста
| Блок кода | ||
|---|---|---|
| ||
[
"showTypingIndicatorEmit",
{
"authorType": "BOT"
}
] |
Создание сообщения
| Блок кода | ||
|---|---|---|
| ||
[
"chatMessageCreatedEmit",
{
"id": "d0f10a74-53fe-4a83-ac1f-ce55c0939df2",
"authorId": "4f8151ed-8e7a-4a12-a6a5-c94f99c58019",
"authorType": "BOT",
"authorName": "МетроБот",
"type": "REGULAR",
"body": "Переключаю на оператора",
"answers": [],
"createdAt": "2021-03-10T08:37:53+00:00",
"sessionId": "4d32dc5a-73d3-457e-9b30-5f7ff4c5fa24",
"attachments": [],
"actions": [],
"avatar": null
}
] |
| Блок кода | ||
|---|---|---|
| ||
[
"chatMessageCreatedEmit",
{
"id": "25d27d8f-f633-42ef-b359-aeff3ce05001",
"authorId": "389",
"authorType": "OPERATOR",
"authorName": "Первый Оператор V",
"type": "REGULAR",
"body": "\nHi",
"answers": [],
"createdAt": "2021-03-10T08:49:41+00:00",
"sessionId": "b1a69f04-a759-4376-b8e5-ee82a7e0d247",
"attachments": [],
"actions": [],
"avatar": {
"id": "ed661c07-2d50-4b1f-b2c8-32f09a83065e",
"isPrivate": false,
"createdAt": "2021-02-05T12:58:33+00:00",
"contentType": "image/jpeg",
"name": "мяч.jpg",
"baseName": "мяч",
"extension": "jpg",
"suggestedExtension": "jpg",
"path": "",
"size": 310723,
"url": "https://minio.twin24.ai/twin-iam-dev/public/2021-02-05/ed661c07-2d50-4b1f-b2c8-32f09a83065e?response-content-type=image%2Fjpeg&response-content-disposition=inline%3B%20filename%3Dmyac.jpg%3B%20filename%2A%3Dutf-8%27%27%25D0%25BC%25D1%258F%25D1%2587.jpg",
"downloadLink": "https://minio.twin24.ai/twin-iam-dev/public/2021-02-05/ed661c07-2d50-4b1f-b2c8-32f09a83065e?response-content-type=image%2Fjpeg&response-content-disposition=attachment%3B%20filename%3Dmyac.jpg%3B%20filename%2A%3Dutf-8%27%27%25D0%25BC%25D1%258F%25D1%2587.jpg&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minio%2F20210310%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210310T084942Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604799&X-Amz-Signature=8810cdb3f30b4ccff3c521e7db6ece5d4dfe5814fbecd36b9eed4ae65e99c6fb",
"ownerId": null
}
}
] |
Подтверждение о прочтении сообщения
| Блок кода | ||||||
|---|---|---|---|---|---|---|
| ||||||
[
"chatMessageReadEmit",
{
"messageId": "23280e7d-8d2f-409b-9480-82c805fcbb95"
}
] |
Описание параметров события chatMessageReadEmit
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
messageId | string | Да | Идентификатор сообщения |
ОПЕРАТОРЫ
Назначение оператора после бота (первичное назначение)
| Блок кода | ||
|---|---|---|
| ||
[
"operatorChangedEmit",
{
"operatorId": "494",
"operatorName": "III Operator",
"avatar": null,
"previousOperatorId": "4f8151ed-8e7a-4a12-a6a5-c94f99c58019",
"previousOperatorName": "МетроБот",
"previousOperatorAvatar": null
}
] |
Назначение другого оператора (смена операторов)
| Блок кода | ||
|---|---|---|
| ||
[
"operatorChangedEmit",
{
"operatorId": "472",
"operatorName": "II Dev",
"avatar": null,
"previousOperatorId": "389",
"previousOperatorName": "Первый Оператор V",
"previousOperatorAvatar": {
"id": "ed661c07-2d50-4b1f-b2c8-32f09a83065e",
"isPrivate": false,
"createdAt": "2021-02-05T12:58:33+00:00",
"contentType": "image/jpeg",
"name": "мяч.jpg",
"baseName": "мяч",
"extension": "jpg",
"suggestedExtension": "jpg",
"path": "",
"size": 310723,
"url": "https://minio.twin24.ai/twin-iam-dev/public/2021-02-05/ed661c07-2d50-4b1f-b2c8-32f09a83065e?response-content-type=image%2Fjpeg&response-content-disposition=inline%3B%20filename%3Dmyac.jpg%3B%20filename%2A%3Dutf-8%27%27%25D0%25BC%25D1%258F%25D1%2587.jpg",
"downloadLink": "https://minio.twin24.ai/twin-iam-dev/public/2021-02-05/ed661c07-2d50-4b1f-b2c8-32f09a83065e?response-content-type=image%2Fjpeg&response-content-disposition=attachment%3B%20filename%3Dmyac.jpg%3B%20filename%2A%3Dutf-8%27%27%25D0%25BC%25D1%258F%25D1%2587.jpg&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minio%2F20210310%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210310T090557Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604799&X-Amz-Signature=6156df5e15d5ab535fdcf80204de440a3cfb8b8fa4d8e3a92b93cc6796f539a3",
"ownerId": null
}
}
] |
Описание параметров события
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
messageId | string | Да | Идентификатор сообщения |
Статус оператора
| Блок кода | ||
|---|---|---|
| ||
[
"operatorStatusChangedEmit",
{
"operatorId": "389",
"previousStatus": "ACTIVE",
"currentStatus": "PAUSED"
}
] |
Описание параметров события operatorStatusChangedEmit
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
messageId | string | Да | Идентификатор сообщения |
Выход оператора из системы
| Блок кода | ||
|---|---|---|
| ||
[
"operatorLoggedOutEmit",
{
"operatorId": "389"
}
] |
Описание параметров события operatorStatusChangedEmit
Поле | Тип | Обязательно | Описание |
|---|---|---|---|
operatorId | string | Да | Идентификатор оператора |
Создание клиентского экземпляра
| Блок кода | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
import socketio
# Создаем экземпляр клиента
socket_session = socketio.Client() |
Определение обработчиков событий
Протокол Socket.IO основан на событиях. Когда сервер хочет установить связь с клиентом, он создает событие. Каждое событие имеет имя и список аргументов. Клиент регистрирует функции обработчика событий с помощью декоратора socketio.Client.on() указывая имя события:
| Блок кода | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
@socket_session.on("chatMessageCreatedEmit")
def on_message(data):
print('I received a message!') |