Поделиться через


Библиотека диалогов

ПРИМЕНИМО К: пакет SDK версии 4

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

В этой статье описываются основные классы и функции библиотеки диалогов.

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

Подсказка

Если вы не знакомы с разработкой ботов с помощью Bot Framework или созданием нового диалога, начните с Bot Framework Composer. Для существующих ботов SDK-first, не созданных в Composer, рассмотрите возможность предоставления вашего бота в качестве навыка и использования Composer для разработки ботов в будущем.

Состояние диалогового окна

Диалоги могут реализовать многоэтапную беседу и, таким образом, они полагаются на сохраняемое состояние на протяжении ходов. Без состояния в диалогах ваш бот не знал бы, где он находится в разговоре или какие сведения уже были собраны.

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

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

Инфраструктура диалогов

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

Класс Описание
Набор диалоговых окон Определяет коллекцию диалогов, ссылающихся друг на друга и работающих согласованно.
Контекст диалогового окна Содержит сведения обо всех активных диалоговых окнах.
Экземпляр диалогового окна Содержит сведения об одном активном диалоговом окне.
Результат поворота диалогового окна Содержит сведения о состоянии из активного или недавно активного диалогового окна. Если активное диалоговое окно завершено, оно содержит его возвращаемое значение.

Типы диалогов

Библиотека диалогов предоставляет несколько типов диалогов, чтобы упростить управление беседами бота. Некоторые из этих типов подробно описаны далее в этой статье.

Тип Описание
диалог Базовый класс для всех диалоговых окон.
Диалоговое окно контейнера Базовый класс для всех диалогов контейнеров , таких как компоненты и адаптивные диалоги. Он поддерживает внутренний набор диалогов и позволяет рассматривать коллекцию диалогов как единицу.
Диалоговое окно компонента Тип диалогового окна общего назначения контейнера, который инкапсулирует набор диалогов, что позволяет повторно использовать набор в целом. Когда запускается диалоговый компонент, он начинается с указанного диалога из коллекции. Когда внутренний процесс завершится, диалоговое окно компонента заканчивается.
каскадный диалог Определяет последовательность шагов, позволяя боту направлять пользователя через линейный процесс. Обычно они предназначены для работы в контексте диалогового окна компонента.
Диалоговые окна подсказки Попросите пользователя ввести данные и верните результат. Запрос будет повторяться, пока он не получит допустимые данные или не будет отменен. Они разработаны для взаимодействия с каскадными диалогами.
адаптивное диалоговое окно Тип диалогового окна контейнера, используемого Composer для предоставления более естественных потоков общения. Не предназначено для использования непосредственно в боте, основанном на SDK.
Диалоги действий Тип диалогового окна, поддерживающего реализацию действий в Composer. Не предназначено для непосредственного использования в боте, построенном на платформе SDK.
диалоговые окна ввода Тип диалогового окна, поддерживающего реализацию входных действий в Composer. Не подходит для использования непосредственно в боте с упором на SDK.
Диалоговое окно навыка Автоматизирует управление одним или несколькими ботами для навыков в зависимости от потребителя навыков. Композитор напрямую поддерживает использование навыков в виде действий.
Диалоговое окно QnA Maker Автоматизирует доступ к базе знаний QnA Maker. Это диалоговое окно предназначено для работы в качестве действия в Composer.

Это важно

Адаптивные диалоги были добавлены в версии 4.9 пакета SDK для C#. Адаптивные диалоги поддерживают Bot Framework Composer и не предназначены для использования в боте, основанном преимущественно на SDK.

Шаблоны диалогов

Существует два основных шаблона запуска диалогов и управления ими из бота.

  1. Мы рекомендуем использовать Bot Framework Composer для создания диалогов, чтобы воспользоваться более естественными и свободными возможностями общения. Дополнительные сведения см. в разделе "Введение в Bot Framework Composer". Такие боты по-прежнему могут быть расширены с помощью кода, если это необходимо.
  2. Разрабатывайте вашего бота на одном из языков пакета SDK и используйте метод run вашего корневого диалога. Сведения об использовании метода выполнения с диалоговым окном компонента см. в разделе о компонентах и каскадных диалогах , а также о том, как реализовать последовательный поток беседы.

Стек диалогов

Контекст диалогового окна содержит сведения обо всех активных диалогах и содержит стек диалогов, который выступает в качестве стека вызовов для всех активных диалогов. Каждый диалог контейнера содержит внутренний набор диалоговых окон, контролируемых им, поэтому каждый активный диалог контейнера представляет внутренний контекст диалогового окна и стек диалогов в составе его состояния.

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

Диалоги контейнеров

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

  • Каждый набор диалогов создает область для разрешения идентификаторов диалогов.

  • В настоящее время пакет SDK реализует два типа диалогов контейнеров: диалоги компонентов и адаптивные диалоги.

    Концептуальная структура этих двух совершенно отличается. Однако бот Composer может использовать оба.

Идентификаторы диалоговых окон

При добавлении одного диалога в набор диалогов ему присваивается уникальный идентификатор внутри этого набора. В пределах набора диалоги ссылаются друг на друга по своим идентификаторам.

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

Диалоговые окна компонентов

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

Рассмотрите возможность использования компонентов и каскадных диалогов, если бот имеет относительно простой поток управления, который не требует более динамического потока беседы.

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

Другие диалоги

Диалоги QnA Maker и диалоги навыков можно использовать как автономные диалоги или как часть коллекции диалогов в контейнере.

Диалоговое окно QnA Maker

Замечание

Azure AI QnA Maker прекратит свою работу 31 марта 2025 года. С 1 октября 2022 г. вы не сможете создавать новые ресурсы или базы знаний QnA Maker. Новая версия вопроса и возможности ответа теперь доступна как часть языка искусственного интеллекта Azure.

Пользовательский ответ на вопросы, компонент языка искусственного интеллекта Azure, — это обновленная версия службы QnA Maker. Дополнительные сведения о поддержке вопросов и ответов в пакете SDK Bot Framework см. в разделе "Распознавание естественного языка".

Диалог QnA Maker обращается к базе знаний QnA Maker и поддерживает подсказки для продолжения и активное обучение.

  • Последующие запросы, также известные как многоэтапные запросы, позволяют базе знаний запрашивать дополнительные сведения перед ответом на свой вопрос.
  • Рекомендации по активному обучению позволяют базе знаний улучшаться с течением времени. Диалоговое окно QnA Maker поддерживает явные отзывы о активной функции обучения.

Дополнительные сведения можно найти здесь

Диалог навыков

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

Дополнительные сведения можно найти здесь

Дальнейшие шаги