Бөлісу құралы:


Работа с переменными

Вы можете использовать переменные для сохранения ответов клиентов и повторного использования этого контента позже в разговоре.

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

Переменные также могут быть переданы в другие темы и потоки Power Automate и возвращены из них.

Переменные могут существовать на четырех уровнях или областях действия:

  • тема переменные можно использовать только в тех темах, в которых они созданы. Это область действия по умолчанию для создаваемых вами переменных.
  • Глобальные переменные можно использовать во всех темах. Вы можете изменить область действия переменной темы, чтобы сделать ее глобальной.
  • Системные переменные создаются автоматически вашим вторым пилотом. Они предоставляют больше контекстной информации о разговоре или пользователе. Они доступны во всех темах.
  • Переменные среды создаются в и доступны только для чтения в Power Platform . Copilot Studio Они хранят ключи и значения параметров, которые затем служат входными данными для различных других объектов приложения, включая Copilot Studio. Отделение параметров от объектов-потребителей позволяет изменять значения в той же среде или при переносе решений в другие среды. Альтернативный вариант — оставить жестко запрограммированные значения параметров в компонентах, которые их используют.

Типы переменных

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

Type Описание:
String Последовательность символов, используемая для представления текста
Логический Логическое значение, которое может быть только true или false
Число Любое вещественное число
Таблицу Список значений, но все значения должны быть одного типа
Запись Коллекция пар имя-значение, где значения могут быть любого типа
Дата/время Дата, время, день недели или месяц относительно момента времени
Выбранный вариант Список строковых значений с соответствующими синонимами
Чистого листа Заполнитель для «нет значения» или «неизвестное значение»; дополнительную информацию см. в разделе Пустые значения в Power Fx

Тип переменной устанавливается при первом присвоении ей значения. После этого тип этой переменной фиксируется, и ей не могут быть присвоены значения любого другого типа. Например, переменной с заданным начальным значением 1 присваивается тип Число. Попытка присвоить его значению String со значением "apples" приводит к ошибке.

При тестировании второго пилота переменная может временно отображаться как тип неизвестно. Неизвестная переменная пока не имеет значения.

Порядок переменных определяется сверху вниз на холсте разработки. То есть узлы в верхней части холста разработки считаются находящимися перед узлами в нижней части. При создании ветвей с узлами Условие ветви упорядочиваются слева направо. То есть узлы в самой левой ветви считаются находящимися перед узлами в самой правой ветви.

Сущности

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

Объект Переменный базовый тип
Параметры с несколькими вариантами выбора Выбранный вариант
Весь ответ пользователя String
Возраст Число
Логический Логический
City String
Color String
Континент String
Страна или регион String
Дата и время Дата/время
Электронное письмо String
Мероприятие String
Целое Целое
Язык String
Money Число
Число Число
Порядковое число Число
Организация String
Процент Число
Имя человека String
Номер телефона. String
Точка интереса String
Скорость Число
State String
Улица, дом String
Температура Число
URL String
Толщина Число
Почтовый индекс String
Настраиваемый объект Выбранный вариант

Создание переменной

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

Снимок экрана узла «Вопрос» с выделенным именем и типом переменной по умолчанию.

Совет

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

Невозможно переименовать узлы Trigger и Go to шаг .

Имена узлов могут иметь длину до 500 символов.

Выбор сущности для использования

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

Снимок экрана узла «Вопрос» с открытым меню «Выберите информацию для идентификации» и выделенной сущностью «Имя лица».

Изменение имени переменной

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

  1. Выберите переменную, чтобы открыть ее на панели свойств переменных.

  2. В поле Имя переменной введите новое имя для переменной.

Задание переменной

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

  1. Выберите Добавить узел (+), чтобы добавить узел, затем выберите Управление переменными>Задать значение переменной.

  2. Выберите поле под Задать переменную, затем выберите Создать новую переменную.

    Снимок экрана с кнопкой «Создать новую переменную».

    Новая переменная создана. Ее тип неизвестен, пока вы не присвоите ей значение.

    Снимок экрана узла «Задать значение переменной» с новой переменной неизвестного типа.

  3. Для До значения назначьте значение, используя один из следующих вариантов:

    • Введите литеральное значение.
    • Выберите существующую переменную того же типа. Это действие задает вашей переменной такое же значение, что и у выбранной переменной.
    • Используйте формулу Power Fx. Формулы Power Fx полезны для более сложных типов, где нельзя использовать литеральные значения, например для типов "Таблица" и "Запись".

Использование литеральных значений

Вместо выбора значения переменной можно ввести литеральное значение в любую переменную.

Снимок экрана, на котором показано использование литерального значения для переменной с именем productName.

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

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

В некоторых сценариях или при использовании более сложных типов используйте формулу Power Fx для установки определенного типа.

Панель "Переменные"

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

Чтобы открыть панель Переменные, в строке меню темы, выберите Переменные.

Снимок экрана области «Переменные» на холсте разработки Copilot Studio с выделенной кнопкой «Переменные».

Панель свойств переменной

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

Чтобы открыть панель Свойства переменной, выберите переменную на панели Переменные. Вы также можете открыть панель Свойства переменной, выбрав переменную в любом узле.

Снимок экрана области «Свойства переменной».

Переменные среды

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

Используйте переменные среды таким же образом, как переменные темы, глобальные переменные и системные переменные. Одно заметное отличие заключается в том, что переменные среды можно использовать только в режиме только для чтения. Авторы Copilot не могут изменять переменную среды в Copilot Studio. Однако администраторы могут изменять значения переменных среды на портале Power Apps .

Снимок экрана страницы «Темы», устанавливающей значение var для переменной среды.

Типы переменных среды в Copilot Studio сопоставляются с Power Apps типами данных следующим образом:

Тип в Copilot Studio Введите Power Apps
Десятичное число Число
JSON Тип определяется по значению. Если не Json => Не указано (ошибка проверки)
Текст string
Да/нет Логический
Источник данных string
Секрет String

Заметка

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

Вы не можете создавать или редактировать переменные среды в Copilot Studio. Для изменения или установки переменных среды необходимо использовать Power Apps портал. Из Copilot Studio вы можете использовать панель Переменные для просмотра информации о переменной среды. На панели Переменные также имеется ссылка на собственный интерфейс создания.

Использование переменных среды для секретов Azure Key Vault

Переменная среды может ссылаться на секрет в хранилище ключей Key Vault. Это особый случай переменных среды с уникальными особенностями.

Чтобы создать секретную переменную среды на Power Apps портале, необходимо настроить его хранилище ключей.

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

  1. Назначьте роль Key Vault Secrets User для приложения Microsoft Virtual Agents Service.

  2. Чтобы разрешить всем помощникам из среды доступ к секрету, создайте тег AllowedEnvironments в секрете и добавьте разрешенные идентификаторы среды, разделенные запятой.

  3. Чтобы разрешить использовать это хранилище ключей Key Vault только определенным помощникам из среды, создайте тег AllowedCopilots и поместите идентификатор помощника в формате {envId}/{schemaName}. В случае нескольких значений разделяйте их запятыми.

Если вы достигли максимального количества символов, но вам все еще нужно добавить дополнительные помощники, добавьте еще один тег с описательным, но уникальным именем (например: AllowedCopilots2).

Значение секрета кэшируется в среде выполнения диалога в течение пяти минут. Неудачные чтения кэшируются на 30 секунд.

Предупреждение

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

Системные переменные

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

Снимок экрана системных переменных в теме помощника.

Заметка

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

В списке показаны не все системные переменные. Вы должны получить доступ к этим скрытым системным переменным с помощью формулы Power Fx.

Чтобы использовать системные переменные в формуле Power Fx, вы должны добавить System. перед именем переменной. Например, чтобы включить системную переменную User.DisplayName в формулу, ссылайтесь на нее как System.User.DisplayName.

Полное имя Type Определение
Activity.Attachments таблица Файловые вложения, предоставленные пользователем
Activity.Channel вариант ИД канала текущего разговора
Activity.ChannelData любое Объект, содержащий содержимое, относящееся к каналу
Activity.ChannelId string ИД канала текущего разговора, в виде строки
Activity.From.Id string Уникальный ИД конкретного канала отправителя
Activity.From.Name string Понятное имя отправителя для конкретного канала
Activity.Name string Имя события
Activity.Recipient.Id string Свойство типа входящего действия.
Activity.Recipient.Name string Представляет отображаемое имя для помощника внутри канала. В контексте канала телефонии значением этой переменной является номер телефона, к которому прикреплен второй пилот.
Activity.Text string Последнее сообщение, отправленное пользователем
Activity.Type вариант Тип действия
Activity.TypeId string Тип действия, в виде строки
Activity.Value любое Открытое значение
Bot.EnvironmentId string Идентификатор среды помощника
Bot.Id string Идентификатор помощника
Bot.Name string Имя вашего помощника
Bot.SchemaName string Имя схемы помощника
Bot.TenantId string Идентификатор клиента помощника
ClientPluginActions вариант Коллекция динамических действий подключаемого модуля клиента для рассмотрения для генеративных действий
Conversation.Id string Уникальный ИД текущей беседы
Conversation.InTestMode Логический Логический флаг, указывающий, происходит ли разговор в тестовом холсте
Conversation.LocalTimeZone string Название часового пояса, которое будет использоваться пользователем в формате базы данных часовых поясов IANA
Conversation.LocalTimeZoneOffset datetime Смещение времени относительно UTC для текущего местного часового пояса
Error.Code string

Код ошибки для текущей ошибки.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Error.

Error.Message string

Сообщение об ошибке для текущей ошибки.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Error.

FallbackCount Номер

Эта переменная подсчитывает количество раз, когда тему не удалось сопоставить с пользовательским вводом.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Unknown Intent.

InactivityTimer.Continue Логический

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

Примечание: эта переменная поддерживается только в том случае, если триггером является Inactivity.

InactivityTimer.Count Номер

Количество срабатываний таймера OnInactivity из-за бездействия пользователя после заданного времени.

Примечание: эта переменная поддерживается только в том случае, если триггером является Inactivity.

LastMessage.Id string ИД предыдущего сообщения, отправленного пользователем
LastMessage.Text string Предыдущее сообщение, отправленное пользователем
Recognizer.ExtractedEntities вариант

Представляет извлеченные сущности из инициирующего сообщения.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Select Intent.

Recognizer.IntentOptions вариант

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

Примечание: эта переменная поддерживается только в том случае, если триггером является On Select Intent.

Recognizer.SelectedIntent вариант

Представляет намерение, выбранное из распознавателя.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Select Intent.

Recognizer.TriggeringMessage.Id string Идентификатор пользовательского сообщения, инициировавшего текущую тему
Recognizer.TriggeringMessage.Text string Пользовательское сообщение, инициировавшее текущую тему
Recognizer.MultipleTopicsMatchedReason string

Используется для определения причин сопоставления нескольких тем.

Примечание: эта переменная поддерживается только в том случае, если триггером является On Select Intent.

User.Language вариант Эта переменная используется для установки языкового стандарта пользователя для каждого разговора.
SignInReason вариант

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

Примечание: эта переменная поддерживается только в том случае, если триггером является On Sign In.

Переменные для интегрированной аутентификации (по умолчанию)

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

Для получения дополнительной информации см. Переменные аутентификации.

Полное имя Type Определение
User.DisplayName string Отображаемое имя пользователя, который в данный момент общается с помощником.
User.Email string Адрес электронной почты пользователя, который в данный момент общается с помощником.
User.FirstName string Имя пользователя, который в данный момент общается с помощником.
User.Id string Уникальный идентификатор пользователя, который в данный момент общается с помощником.
User.IsLoggedIn Логический Логический флаг, который указывает, аутентифицирован ли пользователь, который в данный момент общается с помощником, или нет.
User.LastName string Фамилия пользователя, который в данный момент разговаривает со вторым пилотом.
User.PrincipalName string Имя участника-пользователя, который в данный момент общается с помощником.

Переменные для ручной аутентификации с помощью Generic OAuth 2

Следующие переменные доступны для вторых пилотов, настроенных на использование поставщика услуг Generic OAuth 2.

Полное имя Type Определение
User.AccessToken string Токен доступа для пользователя, прошедшего аутентификацию с помощником.
User.DisplayName string Отображаемое имя пользователя, который в данный момент общается с помощником.
User.Id string Уникальный идентификатор пользователя, который в данный момент общается с помощником.
User.IsLoggedIn Логический Логический флаг, который указывает, аутентифицирован ли пользователь, который в данный момент общается с помощником, или нет.

Переменные для ручной аутентификации с помощью Microsoft Entra ID

Следующие переменные доступны для вторых пилотов, настроенных на использование поставщиков услуг Microsoft Entra ID (ранее Azure Active Directory).

Полное имя Type Определение
User.AccessToken string Токен доступа для пользователя, прошедшего аутентификацию с помощником.
User.DisplayName string Отображаемое имя пользователя, который в данный момент общается с помощником.
User.Email string Адрес электронной почты пользователя, который в данный момент общается с помощником.
User.FirstName string Имя пользователя, который в данный момент общается с помощником.
User.Id string Уникальный идентификатор пользователя, который в данный момент общается с помощником.
User.IsLoggedIn Логический Логический флаг, который указывает, аутентифицирован ли пользователь, который в данный момент общается с помощником, или нет.
User.LastName string Фамилия пользователя, который в данный момент разговаривает со вторым пилотом.
User.PrincipalName string Имя участника-пользователя, который в данный момент общается с помощником.

Переменные для голосовых помощников

Следующие переменные доступны только в голосовых помощниках.

Заметка

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

Полное имя Type Определение
Activity.InputDTMFKeys string Необработанное значение ключа DTMF, полученное от телефонии.
Activity.SpeechRecognition.Confidence Номер Степень уверенности для всего результата гипотезы ASR, от 0 до 1.
Activity.SpeechRecognition.MinimallyFormattedText string Слегка отформатированный текст результата гипотезы ASR. Например, Пятьсот долларов. Слова пишутся прописью, но основные заглавные буквы и знаки препинания сохранены.
Activity.UserInputType вариант Тип входных данных из последних входных данных конечного пользователя. Значение может быть тест, речь или DTMF.
Conversation.OnlyAllowDTMF Логический Логический флаг, указывающий, следует ли перевести IVR в режим «только DTMF» во время выполнения.
Conversation.SipUuiHeaderValue string Строка заголовка UUI, используемая для передачи контекста в IVR при начале вызова.

Передача переменных между темами

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

Получение значений из других тем

Когда тема определяет переменную (например, с помощью узла «Вопрос»), помощник задает вопрос пользователю для заполнения значения переменной. Если значение уже получено помощником в предыдущей теме, нет причин снова задавать вопрос. Для этих случаев эту переменную можно задать как Получение значений из других тем. Когда другая тема перенаправляет на эту тему, она может передать значение переменной (или литеральное значение) в эту переменную и пропустить этот вопрос. Это приводит к беспроблемному общению пользователя с помощником.

В этом примере мы будем использовать две темы: "Приветствие" и "Разговор с клиентом". Обе темы запрашивают имя клиента. Однако, если тема "Приветствие" запускается первой, тема "Разговор с клиентом" пропускает свой вопрос. Вместо этого она использует значение переменной, переданной из темы "Приветствие".

Вот поток темы "Разговор с клиентом":

Снимок экрана с потоком разговора темы «Разговор с клиентом».

Как показано на панели «Тестирование помощника», если эта тема срабатывает первой, система спрашивает пользователя: «Как мне вас называть?» и сохраняет значение в строковой переменной с именем userName. Переменная userName также настроена на получение значения из других тем. Тема завершается сообщением: «Желаю вам хорошего дня, {userName}!»

Вот поток темы "Приветствие":

Снимок экрана с потоком разговора темы «Приветствие».

Как показано на панели «Тестирование помощника», если эта тема срабатывает первой, система спрашивает пользователя: «Как вас зовут?» и сохраняет значение в строковой переменной с именем UserName. Тема отправляет сообщение: «Приятно познакомиться, {UserName}!» Затем она перенаправляется на тему «Разговор с клиентом», который отправляет сообщение: «Надеюсь, у вас замечательный день, {userName}!» Обратите внимание, однако, что тема «Разговор с клиентом» пропустила повторный запрос имени пользователя. Вместо этого она использовала значение переменной UserName, переданной из темы "Приветствие".

Наконец, вот еще раз этот второй разговор, на этот раз с точки зрения темы «Разговор с клиентом»:

Снимок экрана с потоком разговора темы «Разговор с клиентом», когда сначала запускается тема «Приветствие».

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

Настройка темы назначения

Тема назначения — это тема, на который выполняется перенаправление, которая будет получать значения из других тем. В нашем примере это «Разговор с клиентом».

  1. Создайте или перейдите к теме назначения.

  2. Добавьте узел «Вопрос» и введите What should I call you? для сообщения.

  3. В разделе Идентификация выберите предварительно созданную сущность Имя человека.

  4. Выберите эту переменную, чтобы открыть панель Свойства переменной. Назовите ее userName, затем выберите Получение значений из других тем.

    Снимок экрана с темой «Разговор с клиентом» с выделенной переменной userName и ее свойствами.

  5. Добавьте узел сообщения.

  6. В поле сообщения введите I hope you're having a wonderful day,.

  7. Выберите значок Вставить переменную ({x}), затем выберите userName.

  8. Выберите пробел после переменной и введите !.

  9. Сохраните тему.

Настройка исходной темы

Исходная тема — это тема, выполняющая перенаправление, та, которая предоставляет значение, которое будет передано теме назначения. В нашем примере это «Приветствие».

  1. Перейдите в исходную тему.

  2. Добавьте узел перенаправления и выберите пункт назначения тема.

  3. Выберите + Добавить входные данные, затем выберите переменную из темы назначения, в которую вы хотите передать значение.

    Снимок экрана с темой «Приветствие» с переменной userName, добавленной в качестве входных данных в узле перенаправления.

  4. Выберите значок >, затем выберите переменную, значение которой вы хотите передать.

    Снимок экрана с темой «Приветствие» с выбранным значением переменной userName.

    Узел перенаправления должен выглядеть следующим образом:

    Снимок экрана с темой «Приветствие» с заполненным узлом перенаправления.

  5. Сохраните тему.

Возврат значений к исходным темам

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

Давайте продолжим пример из предыдущего раздела. Мы зададим новый вопрос в теме «Разговор с клиентом», затем вернем ответ в тему «Приветствие».

Настройте исходную тему для возвращаемой переменной

Когда вы возвращаете переменную в тему, исходная тема является темой, в которую производится перенаправление, темой, которая предоставляет значение, которое будет передано обратно в исходную тему. В этом примере это «Разговор с клиентом».

  1. Перейдите в исходную тему.

  2. Добавьте узел «Вопрос» и введите What city do you live in? для сообщения.

  3. В разделе Идентификация выберите предварительно созданную сущность Город.

  4. Выберите эту переменную, чтобы открыть панель Свойства переменной. Назовите ее userCity, затем выберите Возврат значений к исходным темам.

    Снимок экрана с темой «Разговор с клиентом» с выделенной переменной userCity и ее свойствами.

  5. Сохраните тему.

Настройте тему назначения для возвращенной переменной

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

  1. Перейдите в тему назначения.

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

    Снимок экрана с потоком разговора темы «Приветствие» с возвращаемой переменной в узле перенаправления.

  3. Сохраните тему.