Вопросы и ответы

chevron-rightКак реализовать временное изменение логики ответов с возможностью отката к предыдущей версии?hashtag

Для реализации A/B-тестирования или временного изменения логики рекомендуется использовать следующий подход:

  1. Клонировать существующий сценарий.

  2. Внести необходимые изменения в клонированную версию.

  3. Архивировать оригинальный сценарий, чтобы исключить его из логики распознавания.

  4. Опубликовать проект для применения изменений.

Для отката к предыдущей версии достаточно архивировать измененный сценарий и разархивировать оригинальный с последующей публикацией.

chevron-rightПочему изменения в сценарии не применяются в production-среде после сохранения?hashtag

Все изменения, вносимые в сценарии, сохраняются в черновой (draft) версии проекта. Эта версия доступна для тестирования только во внутреннем чате платформы. Для того чтобы изменения вступили в силу для конечных пользователей (в production-среде, виджете и других каналах), необходимо опубликовать проект. Публикация переносит изменения из черновой версии в рабочую.

chevron-rightКаков механизм настройки перевода диалога на оператора при повторном определении одного и того же намерения?hashtag

Данная логика реализуется с помощью сниппета (scriptlet). В сниппете необходимо анализировать историю намерений из объекта context. Сравнивая последнее и предпоследнее определенные намерения, можно инициировать условный переход на оператора. Если идентификаторы намерений совпадают, сниппет может сгенерировать событие ошибки, которое в свою очередь активирует ветку сценария, ответственную за перевод диалога.

chevron-rightКак система обрабатывает множественные намерения в одном сообщении пользователя?hashtag

Платформа способна распознавать несколько намерений в одном пользовательском запросе. По умолчанию они обрабатываются последовательно. Для управления этим процессом доступен механизм приоритизации намерений, который позволяет:

  • Выделить наиболее релевантное намерение и обработать только его.

  • Сохранить информацию об отфильтрованных (менее приоритетных) намерениях в контексте диалога для дальнейшего использования в сценариях или аналитике.

Дополнительно можно применять фильтры, например, по длине сообщения, для предварительной классификации сложных запросов и их последующей декомпозиции с помощью уточняющих вопросов.

chevron-rightСуществуют ли технические ограничения на количество сценариев в проекте?hashtag

Технически количество сценариев не ограничено. Существует программный лимит в 1000 сценариев на проект, который может быть увеличен по запросу.

chevron-rightКаковы best practices по доработке сценариев для увеличения покрытия и снижения количества переводов на оператора?hashtag

Для повышения эффективности автоматизации рекомендуется:

  • Максимизировать покрытие: Создавать уникальные сценарии для всех предполагаемых запросов.

  • Использовать вспомогательные намерения: В рамках одного сценария предусматривать обработку сопутствующих или уточняющих намерений. Например, в сценарии оформления заказа, помимо основного намерения, следует добавить обработку вопросов о доставке или оплате.

  • Обрабатывать граничные случаи (edge cases): Предусматривать реакцию на нетипичные, но вероятные ответы пользователя.

chevron-rightПоддерживает ли платформа определение сценария на основе контекста из нескольких сообщений пользователя?hashtag

Согласно архитектурной концепции платформы, каждое сообщение пользователя должно получать явную реакцию (ответ или перевод на оператора) для обеспечения положительного пользовательского опыта. Поэтому распознавание намерения происходит на основе каждого отдельного сообщения. Проблемы, связанные с необходимостью анализа контекста нескольких сообщений, как правило, решаются путем дообучения модели и более детальной проработки логики сценариев.

chevron-rightКаким образом реализуется динамическое изменение ответов в зависимости от внешних факторов (время, дата)?hashtag

Динамическое ветвление логики сценария на основе внешних условий (например, время суток, дата, праздничные дни) реализуется с помощью сниппетов на JavaScript. В сниппете можно получить текущую дату и время и, в зависимости от заданных условий, инициировать различные ветки сценария.

chevron-rightКак настроить бота так, чтобы он отвечал только на предопределенные намерения, а в остальных случаях переводил на оператора?hashtag

Это стандартное поведение платформы. Если NLU-модель распознает намерение, для которого существует активный сценарий, он будет выполнен. Во всех остальных случаях, включая нераспознанные запросы, диалог будет переведен на оператора.

Можно настроить "тихий" перевод, при котором бот не отправляет пользователю сообщение о переводе. С точки зрения пользователя, ему сразу отвечает оператор.

chevron-rightВозможно ли предлагать пользователю несколько вариантов ответа в виде кнопок?hashtag

Да, платформа поддерживает интерактивные элементы, такие как кнопки (buttons) и быстрые ответы (quick replies), для предоставления пользователю выбора из нескольких вариантов.

chevron-rightКак реализовать ветвление сценария в зависимости от наличия определенной информации в сообщении пользователя?hashtag

Для этого используется механизм извлечения сущностей (entity extraction). Сначала настраивается сущность для извлечения нужной информации (например, номера заказа). Затем в сценарии добавляется сниппет, который проверяет наличие этой сущности в контексте диалога. В зависимости от того, была ли сущность извлечена, сценарий может пойти по разным веткам.

chevron-rightВозможна ли реакция на ключевые слова?hashtag

Да, для этого предназначен функционал ключевых слов, который позволяет триггерить сценарий при точном совпадении.

chevron-rightМожет ли бот проставлять теги или тематики для обращений?hashtag

Да, тегирование обращений можно реализовать с помощью сниппета. Для этого необходимо вызвать событие core.send(‘event_name’, params), где params — это объект, содержащий необходимую информацию, например, ID определившегося намерения, который можно извлечь из context.events.

chevron-rightМожет ли бот использовать информацию о пользователе для принятия решений в сценарии?hashtag

Да. При отправке запроса к API платформы в поле facts можно передавать произвольные данные о пользователе. Эти данные попадают в объект context и становятся доступными в сниппетах. На основе этой информации можно реализовывать кастомную логику ветвления сценария.

chevron-rightКак отменить изменения в сохраненном сценарии?hashtag

Прямой отмены изменений (undo) после сохранения не предусмотрено. Рекомендуется использовать клонирование сценариев в качестве механизма версионирования. Перед внесением значительных изменений создайте клон сценария. Это позволит сохранить предыдущую версию и при необходимости быстро к ней вернуться, архивировав измененную версию и активировав клон.

chevron-rightКак настроить сценарий для автоматического получения данных (например, номера заказа) через интеграцию?hashtag

Такой сценарий реализуется с помощью сниппета, который выполняет API-запрос к внешней системе для получения необходимых данных. Сниппет размещается в начале сценария. Далее логика ветвится: если данные успешно получены, выполняется основной сценарий; если нет — бот запрашивает информацию у пользователя.

chevron-rightПочему нельзя ставить два блока с намерением подряд без текстового ответа между ними?hashtag

Размещение двух блоков «Намерение» подряд без промежуточной реакции от бота приведет к зависанию диалога. После распознавания первого намерения система перейдет ко второму шагу и будет ожидать от пользователя новое сообщение, соответствующее второму намерению. Пользователь же, не получив ответа, также будет ожидать реакции. Между двумя шагами, ожидающими ввод от пользователя, всегда должен быть хотя бы один блок с реакцией бота.

chevron-rightКак добавить в реакцию изображение с локального компьютера?hashtag

Добавление изображений в реакции поддерживается только по прямой URL-ссылке. Загрузка файлов с локального компьютера не предусмотрена.

chevron-rightПочему текстовый ответ от бота отображается не полностью?hashtag

Если в сценарии и тестовом чате текст отображается корректно, но у конечного пользователя обрезается, следует проверить ограничения на количество символов на стороне операторского ПО или канала коммуникации.

chevron-rightМожет ли бот инициировать диалог первым?hashtag

Да, существует два основных механизма для этого:

  1. Реакция на первое сообщение: Стандартный режим, когда диалог начинается после первого сообщения пользователя.

  2. Событие "Start": Когда пользователь открывает чат, можно отправить в платформу системное событие типа start. Для его обработки необходимо создать сценарий, который начинается с реакции «Старт». Это позволяет боту отправить приветственное сообщение первым.

Последнее обновление