Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переменные хранят ответы ваших клиентов на вопросы агента. Например, вы можете сохранить имя клиента в переменной с именем UserName
. Затем агент может обратиться к клиенту по имени, поскольку разговор продолжается.
По умолчанию значение переменной может использоваться только в теме, в которой эта переменная создана. Однако можно повторно использовать одно и то же значение в разных темах. Например, в теме "Добро пожаловать" запрашивается имя клиента и адрес электронной почты. В теме «Резервирование встречи» нужно, чтобы агент запомнил, что ввел клиент, и не переспрашивал.
Одним из способов повторного использования переменной является передача переменной из одной темы в другую. Другой способ — сделать переменную глобальной в области действия, и это то, что рассматривается в этой статье. Глобальные переменные называются так, потому что они доступны во всех темах всего агента. Они также могут быть установлены из внешних источников.
Глобальные переменные применяются во время одного сеанса пользователя. Вы указываете, какие переменные являются глобальными, чтобы отличать их от переменных уровня темы.
Создание глобальной переменной
Вы создаете глобальную переменную, изменяя область действия переменной темы.
Заметка
Имя глобальной переменной должно быть уникальным во всех темах.
Создайте переменную или используйте панель «Переменные», чтобы открыть существующую переменную.
На панели Свойства переменной выберите Глобальная (любая тема может получить доступ).
Имя переменной получает префикс
Global.
, чтобы отличить ее от переменных уровня темы. Например, переменнаяUserName
отображается какGlobal.UserName
.Сохраните тему.
Использование глобальных переменных
Когда вы создаете сообщение в узле Сообщение или Вопрос, выберите значок {x} для просмотра переменных, доступных для темы. Глобальные переменные отображаются на вкладке Пользовательские вместе с любыми переменными темы. Переменные перечислены в алфавитном порядке.
Поиск всех тем, использующих глобальную переменную
Вы можете найти, где глобальная переменная определена и какие другие темы ее используют. Эта функция может быть полезна, если вы работаете над новым агентом или если у вас есть несколько переменных и сложное ветвление тем.
Выберите нужную глобальную переменную на холсте разработки или на панели Переменные.
На панели Свойства переменной в разделе Ссылка выберите Просмотреть все ссылки.
Переключитесь на вкладку Прочее и выберите любую тему, в которой используется переменная, чтобы перейти непосредственно к этой теме и узлу.
Удаление глобальных переменных
Если удалить глобальную переменную, используемую в других темах, ссылки на эту переменную в темах помечаются как Unknown
. Вы получите предупреждение об удалении глобальной переменной, прежде чем сможете подтвердить операцию.
Узлы, которые содержат ссылки на удаленную глобальную переменную, указывают, что они содержат неизвестную переменную.
Темы с узлами, которые содержат ссылки на удаленные глобальные переменные, могут перестать работать. Перед публикацией агента убедитесь, что вы удалили или исправили все темы, которые использовали удаленную переменную.
Жизненный цикл глобальных переменных
По умолчанию значение глобальной переменной сохраняется до тех пор, пока сеанс не завершится. Узел Очистить значения переменных сбрасывает значения глобальных переменных и используется в системной теме Сброс разговора. Когда перенаправление активирует эту тему (или когда пользователь вводит фразу, например "Начать сначала"), все глобальные переменные сбрасываются.
Установка глобальных переменных из внешних источников
Чтобы убедиться, что агент начинает разговор с каким-либо контекстом, вы можете использовать глобальную переменную и задать ее значение из внешнего источника. Допустим, ваш сайт требует от пользователей входа в систему. Если вы сохраните имя пользователя в глобальной переменной и передадите его своему агенту, агент сможет приветствовать клиентов по имени до того, как они начнут вводить свой первый вопрос. Другим примером сценария является передача контекста из Dynamics 365 Customer Service агенту, чтобы он мог начать разговор со знанием того, чего хочет достичь клиент.
Чтобы предотвратить нежелательную задержку, можно указать, как долго агент может ожидать значения. Вы также можете задать значение по умолчанию, которое будет использоваться, когда внешний источник не отвечает своевременно.
Заметка
Агенты, опубликованные в канале Dynamics 365 Contact Center для сценариев использования IVR, не поддерживают значения времени ожидания, настроенные для глобальных переменных, заданных внешними источниками.
Создайте специальную тему для хранения конфигурации для всех переменных, которые должны быть установлены из внешних источников. Например, вы можете назвать эту тему "Установка переменных контекста". Этот раздел не служит никаким другим целям, поэтому в нем не нужно задавать фразы-триггеры.
Добавьте узел Задать значение переменной в специальную тему.
В разделе Задать переменную откройте средство выбора переменных и выберите Создать новую переменную.
Выберите имя новой переменной по умолчанию. Появится панель Свойства переменной.
Замените имя по умолчанию на то, которое точно соответствует имени переменной, передаваемой из внешней системы.
В разделе Использование выберите Глобальная (доступна из любой темы) и Внешние источники могут задавать значения.
В разделе Ссылка выберите три точки (⋮) в правом верхнем углу и выберите Получить значение из этого узла, если пусто.
(Дополнительный) Задайте задержку тайм-аута в миллисекундах. Это значение определяет, как долго агент может ожидать установки переменной внешним источником, прежде чем истечет время ожидания и он продолжит со значением по умолчанию, заданным в узле Задать значение переменной. Этот параметр актуален в сценариях, где переменная зависит от длительного или асинхронного процесса, но агент должен соблюдать максимальную задержку для обеспечения хорошего взаимодействия с пользователем.
Для переменных, поступающих из Многоканального взаимодействия для Customer Service, мы предлагаем значение 10 секунд (10 000 мс) в качестве максимального времени ожидания.
В узле Задать значение переменной введите значение по умолчанию, которое будет использоваться по истечении времени ожидания. Во время выполнения агент будет ожидать значения с тем же типом данных. Если вы хотите, чтобы это значение по умолчанию было пустой строкой, используйте
Text("")
в качестве формулы.Для любых других значений, которые, как вы ожидаете, будут получены из внешней системы, добавьте дополнительные узлы Задать значение переменной в специальную тему и настройте необходимые глобальные переменные таким же образом.
Настроив таким образом, ваш агент готов к тестированию. При вызове агента вместо бесконечного ожидания заполнения всех переменных агент может немедленно начать отправку любых сообщений, не зависящих от передаваемых переменных. Когда агент пытается получить доступ к переменной, задаваемой извне, он приостанавливается до тех пор, пока не поступит значение или не истечет время ожидания. Узнайте больше об оптимизации агентов для минимизации задержек.
Внимание!
Во время нормального хода диалога, если ваш агент задает переменную, которая в противном случае была бы внешним значением, значение, установленное внутри вашего агента, имеет преимущественную силу. Любое значение, переданное в контексте, игнорируется. Это правило не позволяет агенту перезаписывать значения, намеренно заданные в темах.
Установите глобальные переменные во встроенном агенте
Если вы встраиваете свой агент в простую веб-страницу, вы можете добавить переменные и их определения к URL-адресу агента. Или, если вы хотите немного больше контроля, вы можете использовать блок кода <script>
для программного вызова и использования переменных.
Имя переменной в строке запроса URL-адреса должно совпадать с именем глобальной переменной, без префикса Global.
. Например, глобальная переменная Global.UserName
в запросе будет указываться как UserName
.
В приведенных ниже примерах используется базовое объявление переменных. В производственном сценарии вы можете передать в качестве параметра запроса или определения переменной другую переменную, в которой уже хранится имя пользователя (например, если у вас есть имя пользователя из сценария входа).
Добавьте переменные и их определения в URL-адрес агента как параметры строки запроса в формате botURL?variableName1=variableDefinition1&variableName2=variableDefinition2
.
Например:
- У вас есть глобальная переменная с именем
Global.UserName
. - URL-адрес вашего агента https://web.powerva.microsoft.com/webchat/bots/12345.
- Чтобы передать имя пользователя при запуске разговора агента на веб-сайте, прикрепите строку запроса
UserName=
как: https://web.powerva.microsoft.com/webchat/bots/12345?UserName=Ana.
Имя параметра не зависит от регистра.
username=Ana
будет работать и в этом примере.
Добавление глобальных переменных на пользовательский холст
Вы также можете добавить переменную на пользовательский холст.
В разделе
<script>
на странице, где у вас есть агент, определите переменные следующим образом, подставивvariableName1
для имени переменной без префиксаGlobal.
иvariableDefinition1
для определения. Разделите несколько переменных запятыми (,
).const store = WebChat.createStore({}, ({ dispatch }) => next => action => { if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') { dispatch({ type: "WEB_CHAT/SEND_EVENT", payload: { name: "pvaSetContext", value: { "variableName1": "variableDefinition1", "variableName2": "variableDefinition2" } }, }); } return next(action); });
В разделе
<script>
вызовитеstore
, когда вы встраиваете свой агент, как в следующем примере, гдеstore
вызывается непосредственно перед вызовомstyleOptions
(вы должны заменитьBOT_ID
идентификатором вашего агента):const BOT_ID = "12345-5678"; const theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID; fetch(theURL) .then(response => response.json()) .then(conversationInfo => { window.WebChat.renderWebChat( { directLine: window.WebChat.createDirectLine({ token: conversationInfo.token, }), store, styleOptions }, document.getElementById('webchat') ); }) .catch(err => console.error("An error occurred: " + err));
Глобальные переменные, связанные с аутентификацией
В зависимости от настроек аутентификации агента вам доступен набор глобальных переменных, связанных с выбранным поставщиком аутентификации. Подробнее о том, какой набор переменных доступен и как их использовать, см. в теме Добавление аутентификации пользователя в темы.