Microsoft Bot Framework - Использование переменной в нескольких диалоговых окнах (node.js) - PullRequest
1 голос
/ 24 сентября 2019

Я уже некоторое время работаю с Microsoft Bot Framework (V.4 - node.js) и начинаю разбираться в вещах.Тем не менее, в настоящее время я пытаюсь найти способ использовать переменную в нескольких диалогах.В одном из этих диалогов я делаю JSON-запрос к REST API для получения некоторых данных.Я могу использовать эти данные в любом месте диалога, но я хочу использовать эти данные в другом диалоге.Легко ли это сделать?

Я также знаю, что можно отправлять данные при завершении диалога, например так:

 return await step.endDialog(#YourDataHere);

Но не нашел возможности отправить данные при запускеновый диалог.

Я рассмотрел пример: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/05.multi-turn-prompt Но он использует только 1 диалог.

Я также изучил код, приведенный в V3: https://docs.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-dialog-manage-conversation-flow?view=azure-bot-service-3.0 This error message. Переход по этой ссылке дает пустую страницу без какой-либо справочной документации для V 4.

Любые предложения о том, как сделать так, чтобы я мог использовать свои данные ввсе диалоги?

1 Ответ

1 голос
/ 24 сентября 2019

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

await dc.beginDialog(DIALOG_NAME, your_data);

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

Затем вы можете получить доступ к этому в диалоговом окне как к части контекста.Я использую «шаг» в качестве имени переменной контекста, так что вы можете найти это значение в step._info.options (не уверен, требуется ли подчеркивание).

Если вы передаете простое значение, оно доступно напрямую(т.е. yourData = step._info.options).Если это объект JSON, вы просто ссылаетесь на искомое значение как обычно.Например, чтобы получить сущность, которую я использую myEntity = step._info.options.entities.myEntityName[0].

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

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