gpt4 book ai didi

javascript - Bot Framework waterfall 中的命名函数?

转载 作者:行者123 更新时间:2023-11-30 20:11:51 25 4
gpt4 key购买 nike

Microsoft Bot Framework 的官方文档 here使用一系列未命名的函数显示对话的 waterfall 模型,如下所示。

bot.dialog('greetings', [
// Step 1
function (session) {
builder.Prompts.text(session, 'Hi! What is your name?');
},
// Step 2
function (session, results) {
session.endDialog(`Hello ${results.response}!`);
}
]);

但是这里可以改用命名函数吗?

bot.dialog('greetings', [
// Step 1
greetingPrompt(session),
// Step 2
greetingMessage(session, results)
]);

我正在尝试执行此操作,但在 session 变量的范围方面存在问题。在命名函数中设置的属性在外部作用域中丢失,但在使用未命名函数时,这些属性仍然存在。有没有办法解决这个问题,或者我们是否被迫使用未命名的函数?这似乎是一个更困惑的解决方案,所以我希望能够清理它并重用一些代码。

最佳答案

正如克劳斯所说,你可以使用箭头函数来清理它,即使它基本上是简写来改变这个

 function (session) {
greetingPrompt(session)
}

进入这个

(session) => greetingPrompt(session)

一个简单的示例,说明实际情况:

bot.dialog('/', [
// Step 1
(session) => choice(session),
// Step 2
(session, results) => responseResult(session, results)
]);

function choice(session){
builder.Prompts.choice(session, "Which color?", "red|green|blue", { listStyle: builder.ListStyle.button });
}

function responseResult(session,results){
session.endDialog(`Hello ${results.response.entity}!`);
}

关于javascript - Bot Framework waterfall 中的命名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319556/

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