Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
languagepy
themeConfluence
firstline1
titleФункция старта чат-сессии
linenumberstrue
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

...

Блок кода
linenumbers
languagepy
themeConfluence
firstline1
titleФункция отправки сообщения в чат-сессию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

...

Блок кода
languagepy
themeConfluence
firstline1
titleФункция отправки сообщения в чат-сессию
linenumberstrue
import socketio

# Создаем экземпляр клиента
socket_session = socketio.Client()

...

Блок кода
languagepy
themeConfluence
firstline1
titleФункция отправки сообщения в чат-сессиюlinenumberstrueРегистрация события 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

Блок кода
languagepy
themeConfluence
firstline1
titleПодключение к серверу
socket_session.connect(url=f"https://tcl.twin24.ai/operator/socket.io/?key={session_id}",
                       transports=["polling", "websocket"],
                       socketio_path="operator/socket.io")


Ниже представлена кодовая база всей программы:

Блок кода
languagepy
themeConfluence
firstline1
titleCode example
linenumberstrue
# Импортируем все необходимые библиотеки
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 в кодовую базу приложения клиента.