...
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Функция старта чат-сессии |
|---|
| linenumbers | true |
|---|
|
def start_chat_session(chat_id: str, name: str = "integration_example"):
url = f"https://tcl.twin24.ai/api/chats/v1/chats/{chat_id}/sessions?x_widget=1"
headers = {"Content-Type": "application/json"}
payload = json.dumps({"name": name})
response = requests.request("POST", url, headers=headers, data=payload)
return response |
...
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Функция отправки сообщения в чат-сессию | linenumbers | true |
|---|
|
def send_msg_to_chat_session(session_id: str, msg: str):
url = f"https://chats-api.twin24.ai/api/v1/sessions/{session_id}/messages"
headers = {'Content-Type': 'application/json'}
payload = json.dumps({
"body": msg,
"attachments": []
})
response = requests.request("POST", url, headers=headers, data=payload)
return response |
...
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Функция отправки сообщения в чат-сессию |
|---|
| linenumbers | true |
|---|
|
import socketio
# Создаем экземпляр клиента
socket_session = socketio.Client() |
...
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Функция отправки сообщения в чат-сессию | linenumbers | trueРегистрация события chatMessageCreatedEmit |
|---|
|
@socket_session.on("chatMessageCreatedEmit")
def on_message(data):
print('I received a message!') |
Подключаемся к серверу используя TLS/SSL подключение.
URL для подключения к серверу: https://tcl.twin24.ai/operator/socket.io/?key={session_id}
Параметр session_id предварительно был получен при вызове функции start_chat_session
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Подключение к серверу |
|---|
|
socket_session.connect(url=f"https://tcl.twin24.ai/operator/socket.io/?key={session_id}",
transports=["polling", "websocket"],
socketio_path="operator/socket.io") |
Ниже представлена кодовая база всей программы:
| Блок кода |
|---|
| language | py |
|---|
| theme | Confluence |
|---|
| firstline | 1 |
|---|
| title | Code example |
|---|
| linenumbers | true |
|---|
|
# Импортируем все необходимые библиотеки
import json
import requests
import socketio
from datetime import datetime
# Указываем идентификатор чата (получить идентификатор необходимо в личном кабинете)
# Важно: необходимо указывать свои параметры идентификатора чата! Это пример!
CHAT_ID = "15249602-609a-40bb-9887-83c20efd76a4"
# Создаем экземпляр клиента socketio
socket_session = socketio.Client()
# Определяем функции, необходимые для работы программы
def start_chat_session(chat_id: str, name: str = "integration_example") -> dict:
"""
Создаёт чат-сессию и озвращает коллекцию данных о ней.
:param chat_id: Идентификатор чата.
:param name: Имя чат-сессии. Задается для облегчения поиска в личном кабинете. Можно убрать этот параметр из функции)
:return: Коллекция данных о созданной чат-сессии.
"""
url = f"https://tcl.twin24.ai/api/chats/v1/chats/{chat_id}/sessions?x_widget=1"
headers = {"Content-Type": "application/json"}
payload = json.dumps({"name": name})
response = requests.request("POST", url, headers=headers, data=payload)
return response.json()
def send_msg_to_chat_session(session_id: str, msg: str) -> dict:
"""
Отправляет сообщение
:param chat_session_id: Идентификатор чат-сессии.
:param msg: Текст сообщения.
:return: Коллекция данных об отправленном сообщении.
"""
url = f"https://chats-api.twin24.ai/api/v1/sessions/{session_id}/messages"
headers = {'Content-Type': 'application/json'}
payload = json.dumps({
"body": msg,
"attachments": []
})
response = requests.request("POST", url, headers=headers, data=payload)
return response.json()
# Создаём чат сессию и получаем данные о ней
chat_session_data = start_chat_session(chat_id=CHAT_ID,
name=f"ws test {datetime.now()}")
# Из данных о чат-сессии получаем её id
session_id = chat_session_data['id']
print(chat_session_data, session_id, sep="\n\n")
# Подключаемся к серверу и "слушаем" события в созданной чат-сессии
socket_session.connect(url=f"https://tcl.twin24.ai/operator/socket.io/?key={session_id}",
transports=["polling", "websocket"],
socketio_path="operator/socket.io")
# Отправляем сообщение в чат-сессию
send_msg_to_chat_session(session_id=session_id,
msg="Тестовое сообщение, отправленное программой!")
# Закрываем соединение
socket_session.disconnect()
|
Это минимальная программа, отображающая все шаги, необходимые для интеграции чат-платформы TWIN в кодовую базу приложения клиента.