如何在Bot Framework v4中实施触发动作?

时间:2019-08-11 03:03:46

标签: javascript node.js botframework bots chatbot

在v3中,我们提供了触发操作按钮。

在v4中,如何实现触发操作按钮。另外,如何提供建议的 操作 按钮。

简单来说,我想在v4中使用以下v3代码功能。请提出建议。

bot.dialog('help', function (session, args, next) {
    session.endDialog("message");
}).triggerAction({ matches: /^help$/i, });

1 个答案:

答案 0 :(得分:0)

您要执行的操作称为中断。无论堆栈上有什么对话框,您都希望机器人能够响应全局关键字。您可以按照this guide进行操作,以获取详细说明。该指南使用Core Bot示例。

基本上,任何从示例扩展urls = ["https://stackoverflow.com/questions/tagged/javascript", "https://stackoverflow.com/questions/tagged/python"]; for (var reqNr = 0; reqNr < urls.length; reqNr++) { reqUrl = urls[reqNr]; var AjaxPromise = fetch(reqUrl); console.log("reqUrl"); console.log(reqUrl); AjaxPromise.then(r => r.text()).then(result => { if(result.includes("javascript")){ console.log(result); // This is the wrong Url now, because of the asynchronity getUrl = reqUrl; console.log("reqUrl2"); console.log(reqUrl); // will only show the last url in loop because of the asynchronity. // I could take r.url, but i am not sure i can also pass it together with result: https://stackoverflow.com/questions/28703625/how-do-you-properly-return-multiple-values-from-a-promise. console.log("Found match for url: ", reqUrl); // not the "correct" reqUrl // console.log("Found match for url: ", r.url); DOESNT WORK } }); } 类的对话框类都将使用覆盖的CancelAndHelpDialog函数,该函数调用此onContinueDialog函数:

interrupt

该功能检查用户输入的是“帮助”还是“?”或“取消”或“退出”并做出相应的响应。如果您不想遵循该示例,则仍然可以在有权访问对话框上下文的任何地方调用该函数。