gpt4 book ai didi

node.js - step.prompt(OAUTH_PROMPT) 如何在 Node js 中的 botbuilder 版本 4 中自动移动到 waterfall 对话框中的下一个函数?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:58 27 4
gpt4 key购买 nike

目前,我正在使用 Microsfot BotBuilder V4 NodeJs SDK 中的 OAuthPrompt。 OAuthPrompt 主要用于 Azure 机器人身份验证,但通过机器人登录到 azure 后,我无法移动到 waterfall 对话框中的下一个功能,直到我向机器人发送另一条消息。如果我在登录后发送消息,则会调用 continueDialog(),从而调用 waterfall 对话框中的下一个函数。

如何自动移至 waterfall 对话框中的下一个功能而不向机器人发送另一条消息?

/**
* Waterfall step that prompts the user to login if they have not already or their token has expired.
* @param {WaterfallStepContext} step
*/
async oauthPrompt(step: any) {
await step.prompt(OAUTH_PROMPT);
}

/**
* Waterfall step that informs the user that they are logged in and asks
* the user if they would like to see their token via a prompt
* @param {WaterfallStepContext} step
*/
async loginResults(step: any) {
let tokenResponse = step.result;
if (tokenResponse != null) {
await step.context.sendActivity('You are now logged in.');
return await step.prompt(CONFIRM_PROMPT, 'Do you want to view your token?', ['yes', 'no']);
}

// Something went wrong, inform the user they were not logged in
await step.context.sendActivity('Login was not sucessful please try again');
return await step.endDialog();
}

调用oauthPrompt()后,登录卡会显示在bot中。但此后,在我发送另一条消息之前,不会自动调用 loginResults() 函数。这两个函数都在同一个 waterfall 对话框中吗?

谁能告诉我如何调用loginResults而不向机器人发送另一条消息?

最佳答案

这实际上是模拟器的正常(也是预期)行为。关于“为什么”,有很多我不会触及的内容。

简而言之,模拟器正在寻找一种特定类型的回调,但由于模拟器相对于 OAuth 的工作方式,它永远不会收到这种回调。因为它从未收到此回调,所以登录步骤不知道前进到下一步,并且随后等待某些内容提示它(即用户输入)。

这只是模拟器中的一个“问题”。当您在其他 channel 中运行它时,这应该不是问题。

希望得到帮助!

关于node.js - step.prompt(OAUTH_PROMPT) 如何在 Node js 中的 botbuilder 版本 4 中自动移动到 waterfall 对话框中的下一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55468771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com