Autobot Instructions: Difference between revisions
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов. | Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов. | ||
ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора. Точку доступа и валидность ответа обеспечивает программа на языке Python. | ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора. | ||
Точку доступа и валидность ответа обеспечивает программа на языке Python. | |||
При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору». | При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору». | ||
Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так: | Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так: | ||
(Информация для разработчиков | # При создании нового чата пользователем сайта, или при написании им сообщения основной фреймворк LHC должен отправить на входной эндпойнт Автобота сообщение, несущее исчерпывающую информацию о создании сообщения или изменении состояния чата. | ||
# Автобот при получении сообщения помещает его во входную очередь(1) для последующей обработки. Причины применения очереди — надо вынести обработку в асинхронный поток для сокращения до минимума времени ответа основному чату | |||
# Обработчик (консьюмер) очереди(1) анализирует сообщение (валидация, проверка классов). При необходимости создает объект для помещения в сокет (нужды фронтенда). По окончании предварительной обработки проверяется наличие динамической очереди(2) (топика). При отсутствии очередь создается и в нее помещается валидное сообщение. Динамическая очередь(2) имеет префикс, совпадающий с id чата. Разбивка на динамические очереди очень важна, так как сообщения должны обрабатываться чатботом строго последовательно в пределах чата, но сообщения из разных чатов не должны блокировать друг друга. (Информация для разработчиков — при удалении чата оператором реализовано удаление динамической очереди. Риск неправильного удаления ничтожен и компенсируется возможностью повторного создания очереди). | |||
# Для каждой динамической очереди(2) создается свой консьюмер, связанный с ней именной точкой обмена (эксчейндж). Данные сущности являются связью брокера rabbitMQ и Автобота. Собственно брокер с версии 4 является неотъемлемой частью Автобота. Консьюмер ожидает посылки сообщения из очереди (push). При получении сообщения формирует запрос в ИИ Watson и ожидает ответа. При получении ответа или истечению времени ожидания консьюмер закрывает соединение с именованной очередью(2) и вызывает валидатор контракта (существует контракт между Автоботом и Чатботом — наличие и содержание необходимых полей, наличие дополнительных полей, расшифровка значений информационных флагов). При отрицательной валидации вызывается «Dummy Bot» — класс Автобота, формирующий один стандартный ответ типа «Оставайтесь в чате, мы вызываем оператора» или что-то подобное и устанавливающий флаг статуса ответа «alarm» для скорейшего вызова оператора. | |||
# При положительной валидации консьюмер динамической очереди(2) отправляет на внутренний эндпойнт запрос, фактически содержащий ответ ИИ. При отрицательной — заглушку от Dummy Bot. Таком образом, на эндпойнт всегда приходит валидный ответ. Класс обработки запроса помещает ответ в общую очередь(3) ответов бота. Это необходимо для освобождения консьюмера, который «держит» эндпойнт ИИ. В момент удержания ИИ не может принимать новые сообщения (для строго последовательной обработки сообщений). | |||
# Обработчик общей очереди(3) ответов бота либо помещает сообщения в базу LHC и обновляет окно чата (принудительно) или дополнительно вызывает оператора или вызывает оператора без помещения сообщения. Дополнительно отправляет уведомления в сокет (нужды фронта) и помещает дословный ответ бота в любом случае в специальную таблицу, недоступную для LHC, которая позволит увидеть история ответов бота даже пр принудительном удалении чата оператором. | |||
# Сваггер имеет кроме указанных эндпойнотов еще те, которые потребны для нужд фронта (общим счетом около 10-ти). Работа фронта не рассматривается. |
Revision as of 12:45, 20 May 2024
Описание
Для обратной связи пользователей сайтов группы Blooxex©K применяется свободный фреймворк LivehelperChat (далее LHC). Он по умолчанию интегрирован в заглавную страницу сайта продаж и опционально в остальные страницы
Операторы должны быть онлайн 24/7 и почти всегда отвечают на однотипные вопросы. Поэтому было принято решение создать комплекс ПО, позволяющий перехватывать из чатов поддержки вопросы и перенаправлять их в простейший ИИ для генерации ответов.
ИИ создан на базе IBM Watson и в данном документе не описывается. Необходимым и достаточным условием для его интеграции в комплекс ПО является наличие точки доступа (эндпойнта), при отравлении на которую сообщения определенного формата ИИ формирует и отправляет в ответ сообщение, пригодное для помещения в чат, как ответа оператора.
Точку доступа и валидность ответа обеспечивает программа на языке Python.
При невозможности ответа (трудный вопрос, нецензурная лексика, ключевые слова типа «возврат денег», просьба вызвать оператора) ИИ создает и отправляет ответ со специальным признаком «отдать чат оператору».
Таким образом, алгоритм работы связующей части ПО, реализующей объединение всех фреймворков (связующее ПО получило название «Автобот» в отличие от «Чатбота» - бот действует автоматически), выглядит так:
- При создании нового чата пользователем сайта, или при написании им сообщения основной фреймворк LHC должен отправить на входной эндпойнт Автобота сообщение, несущее исчерпывающую информацию о создании сообщения или изменении состояния чата.
- Автобот при получении сообщения помещает его во входную очередь(1) для последующей обработки. Причины применения очереди — надо вынести обработку в асинхронный поток для сокращения до минимума времени ответа основному чату
- Обработчик (консьюмер) очереди(1) анализирует сообщение (валидация, проверка классов). При необходимости создает объект для помещения в сокет (нужды фронтенда). По окончании предварительной обработки проверяется наличие динамической очереди(2) (топика). При отсутствии очередь создается и в нее помещается валидное сообщение. Динамическая очередь(2) имеет префикс, совпадающий с id чата. Разбивка на динамические очереди очень важна, так как сообщения должны обрабатываться чатботом строго последовательно в пределах чата, но сообщения из разных чатов не должны блокировать друг друга. (Информация для разработчиков — при удалении чата оператором реализовано удаление динамической очереди. Риск неправильного удаления ничтожен и компенсируется возможностью повторного создания очереди).
- Для каждой динамической очереди(2) создается свой консьюмер, связанный с ней именной точкой обмена (эксчейндж). Данные сущности являются связью брокера rabbitMQ и Автобота. Собственно брокер с версии 4 является неотъемлемой частью Автобота. Консьюмер ожидает посылки сообщения из очереди (push). При получении сообщения формирует запрос в ИИ Watson и ожидает ответа. При получении ответа или истечению времени ожидания консьюмер закрывает соединение с именованной очередью(2) и вызывает валидатор контракта (существует контракт между Автоботом и Чатботом — наличие и содержание необходимых полей, наличие дополнительных полей, расшифровка значений информационных флагов). При отрицательной валидации вызывается «Dummy Bot» — класс Автобота, формирующий один стандартный ответ типа «Оставайтесь в чате, мы вызываем оператора» или что-то подобное и устанавливающий флаг статуса ответа «alarm» для скорейшего вызова оператора.
- При положительной валидации консьюмер динамической очереди(2) отправляет на внутренний эндпойнт запрос, фактически содержащий ответ ИИ. При отрицательной — заглушку от Dummy Bot. Таком образом, на эндпойнт всегда приходит валидный ответ. Класс обработки запроса помещает ответ в общую очередь(3) ответов бота. Это необходимо для освобождения консьюмера, который «держит» эндпойнт ИИ. В момент удержания ИИ не может принимать новые сообщения (для строго последовательной обработки сообщений).
- Обработчик общей очереди(3) ответов бота либо помещает сообщения в базу LHC и обновляет окно чата (принудительно) или дополнительно вызывает оператора или вызывает оператора без помещения сообщения. Дополнительно отправляет уведомления в сокет (нужды фронта) и помещает дословный ответ бота в любом случае в специальную таблицу, недоступную для LHC, которая позволит увидеть история ответов бота даже пр принудительном удалении чата оператором.
- Сваггер имеет кроме указанных эндпойнотов еще те, которые потребны для нужд фронта (общим счетом около 10-ти). Работа фронта не рассматривается.