Вопросы и ответы
Как реализовать временное изменение логики ответов с возможностью отката к предыдущей версии?
Для реализации A/B-тестирования или временного изменения логики рекомендуется использовать следующий подход:
Клонировать существующий сценарий.
Внести необходимые изменения в клонированную версию.
Архивировать оригинальный сценарий, чтобы исключить его из логики распознавания.
Опубликовать проект для применения изменений.
Для отката к предыдущей версии достаточно архивировать измененный сценарий и разархивировать оригинальный с последующей публикацией.
Почему изменения в сценарии не применяются в production-среде после сохранения?
Все изменения, вносимые в сценарии, сохраняются в черновой (draft) версии проекта. Эта версия доступна для тестирования только во внутреннем чате платформы. Для того чтобы изменения вступили в силу для конечных пользователей (в production-среде, виджете и других каналах), необходимо опубликовать проект. Публикация переносит изменения из черновой версии в рабочую.
Каков механизм настройки перевода диалога на оператора при повторном определении одного и того же намерения?
Данная логика реализуется с помощью сниппета (scriptlet). В сниппете необходимо анализировать историю намерений из объекта context
. Сравнивая последнее и предпоследнее определенные намерения, можно инициировать условный переход на оператора. Если идентификаторы намерений совпадают, сниппет может сгенерировать событие ошибки, которое в свою очередь активирует ветку сценария, ответственную за перевод диалога.
Как система обрабатывает множественные намерения в одном сообщении пользователя?
Платформа способна распознавать несколько намерений в одном пользовательском запросе. По умолчанию они обрабатываются последовательно. Для управления этим процессом доступен механизм приоритизации намерений, который позволяет:
Выделить наиболее релевантное намерение и обработать только его.
Сохранить информацию об отфильтрованных (менее приоритетных) намерениях в контексте диалога для дальнейшего использования в сценариях или аналитике.
Дополнительно можно применять фильтры, например, по длине сообщения, для предварительной классификации сложных запросов и их последующей декомпозиции с помощью уточняющих вопросов.
Существуют ли технические ограничения на количество сценариев в проекте?
Технически количество сценариев не ограничено. Существует программный лимит в 1000 сценариев на проект, который может быть увеличен по запросу.
Каковы best practices по доработке сценариев для увеличения покрытия и снижения количества переводов на оператора?
Для повышения эффективности автоматизации рекомендуется:
Максимизировать покрытие: Создавать уникальные сценарии для всех предполагаемых запросов.
Использовать вспомогательные намерения: В рамках одного сценария предусматривать обработку сопутствующих или уточняющих намерений. Например, в сценарии оформления заказа, помимо основного намерения, следует добавить обработку вопросов о доставке или оплате.
Обрабатывать граничные случаи (edge cases): Предусматривать реакцию на нетипичные, но вероятные ответы пользователя.
Поддерживает ли платформа определение сценария на основе контекста из нескольких сообщений пользователя?
Согласно архитектурной концепции платформы, каждое сообщение пользователя должно получать явную реакцию (ответ или перевод на оператора) для обеспечения положительного пользовательского опыта. Поэтому распознавание намерения происходит на основе каждого отдельного сообщения. Проблемы, связанные с необходимостью анализа контекста нескольких сообщений, как правило, решаются путем дообучения модели и более детальной проработки логики сценариев.
Каким образом реализуется динамическое изменение ответов в зависимости от внешних факторов (время, дата)?
Динамическое ветвление логики сценария на основе внешних условий (например, время суток, дата, праздничные дни) реализуется с помощью сниппетов на JavaScript. В сниппете можно получить текущую дату и время и, в зависимости от заданных условий, инициировать различные ветки сценария.
Как настроить бота так, чтобы он отвечал только на предопределенные намерения, а в остальных случаях переводил на оператора?
Это стандартное поведение платформы. Если NLU-модель распознает намерение, для которого существует активный сценарий, он будет выполнен. Во всех остальных случаях, включая нераспознанные запросы, диалог будет переведен на оператора.
Можно настроить "тихий" перевод, при котором бот не отправляет пользователю сообщение о переводе. С точки зрения пользователя, ему сразу отвечает оператор.
Возможно ли предлагать пользователю несколько вариантов ответа в виде кнопок?
Да, платформа поддерживает интерактивные элементы, такие как кнопки (buttons) и быстрые ответы (quick replies), для предоставления пользователю выбора из нескольких вариантов.
Как реализовать ветвление сценария в зависимости от наличия определенной информации в сообщении пользователя?
Для этого используется механизм извлечения сущностей (entity extraction). Сначала настраивается сущность для извлечения нужной информации (например, номера заказа). Затем в сценарии добавляется сниппет, который проверяет наличие этой сущности в контексте диалога. В зависимости от того, была ли сущность извлечена, сценарий может пойти по разным веткам.
Возможна ли реакция на ключевые слова?
Да, для этого предназначен функционал ключевых слов, который позволяет триггерить сценарий при точном совпадении.
Может ли бот проставлять теги или тематики для обращений?
Да, тегирование обращений можно реализовать с помощью сниппета. Для этого необходимо вызвать событие core.send(‘event_name’, params)
, где params
— это объект, содержащий необходимую информацию, например, ID определившегося намерения, который можно извлечь из context.events
.
Может ли бот использовать информацию о пользователе для принятия решений в сценарии?
Да. При отправке запроса к API платформы в поле facts
можно передавать произвольные данные о пользователе. Эти данные попадают в объект context
и становятся доступными в сниппетах. На основе этой информации можно реализовывать кастомную логику ветвления сценария.
Как отменить изменения в сохраненном сценарии?
Прямой отмены изменений (undo) после сохранения не предусмотрено. Рекомендуется использовать клонирование сценариев в качестве механизма версионирования. Перед внесением значительных изменений создайте клон сценария. Это позволит сохранить предыдущую версию и при необходимости быстро к ней вернуться, архивировав измененную версию и активировав клон.
Как настроить сценарий для автоматического получения данных (например, номера заказа) через интеграцию?
Такой сценарий реализуется с помощью сниппета, который выполняет API-запрос к внешней системе для получения необходимых данных. Сниппет размещается в начале сценария. Далее логика ветвится: если данные успешно получены, выполняется основной сценарий; если нет — бот запрашивает информацию у пользователя.
Почему нельзя ставить два блока с намерением подряд без текстового ответа между ними?
Размещение двух блоков «Намерение» подряд без промежуточной реакции от бота приведет к зависанию диалога. После распознавания первого намерения система перейдет ко второму шагу и будет ожидать от пользователя новое сообщение, соответствующее второму намерению. Пользователь же, не получив ответа, также будет ожидать реакции. Между двумя шагами, ожидающими ввод от пользователя, всегда должен быть хотя бы один блок с реакцией бота.
Как добавить в реакцию изображение с локального компьютера?
Добавление изображений в реакции поддерживается только по прямой URL-ссылке. Загрузка файлов с локального компьютера не предусмотрена.
Почему текстовый ответ от бота отображается не полностью?
Если в сценарии и тестовом чате текст отображается корректно, но у конечного пользователя обрезается, следует проверить ограничения на количество символов на стороне операторского ПО или канала коммуникации.
Может ли бот инициировать диалог первым?
Да, существует два основных механизма для этого:
Реакция на первое сообщение: Стандартный режим, когда диалог начинается после первого сообщения пользователя.
Событие "Start": Когда пользователь открывает чат, можно отправить в платформу системное событие типа
start
. Для его обработки необходимо создать сценарий, который начинается с реакции «Старт». Это позволяет боту отправить приветственное сообщение первым.
Последнее обновление