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

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

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

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

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

Совет

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

Состояние в Dialog

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

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

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

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

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

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

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

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

Тип Описание
диалоговое окно Базовый класс для всех диалоговых окон.
Диалоговое окно контейнера Базовый класс для всех диалогов контейнеров , таких как компоненты и адаптивные диалоги. Он поддерживает внутренний набор диалогов и позволяет рассматривать коллекцию диалогов как единицу.
Диалоговое окно компонента Тип диалогового окна общего назначения контейнера, который инкапсулирует набор диалогов, что позволяет повторно использовать набор в целом. При запуске диалогового окна компонента начинается с указанного диалогового окна в коллекции. Когда внутренний процесс завершится, диалоговое окно компонента заканчивается.
каскадный диалог Определяет последовательность шагов, позволяя боту направлять пользователя через линейный процесс. Обычно они предназначены для работы в контексте диалогового окна компонента.
Диалоговые окна запроса Попросите пользователя ввести данные и верните результат. Запрос будет повторяться, пока он не получит допустимые входные данные или отменяется. Они предназначены для работы с каскадными диалогами.
адаптивное диалоговое окно Тип диалогового окна контейнера, используемого 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 и используйте метод расширения запуска корневого диалогового окна. Сведения об использовании метода выполнения с диалоговым окном компонента см . в разделе о компонентах и каскадных диалогах , а также о том, как реализовать последовательный поток беседы.

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

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

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

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

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

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

  • В настоящее время пакет 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 и активные функции обучения.

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

Дополнительные сведения см. в разделе:

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

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

Дополнительные сведения см. в разделе:

Следующие шаги