gpt4 book ai didi

node.js - 如何从其他意图获取数据? (将意图的数据传递给其他意图)

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

我正在 Google 项目上执行一项操作,该操作将使用记住用户所说内容并将其用于其他意图的基本功能。

例如,对话可能是这样的:

1     User: Hello
2 Bot: Hey! What's your name?
3 User: Joel
4 Bot: Your name is Joel, is that correct?
5 User: Yes that is correct
6 Bot: Awesome, it's great to meet you Joel.

我知道如何最初获取信息,但我在将信息(名称“Joel”)传递给另一个纯粹用于确认的意图时遇到问题。

这是我所拥有的:

app.intent('greeting', (conv, params) => {
const context = conv.contexts.set('context'); // working good
conv.ask(`I got ${params.name}, is that right?`);
});

app.intent('greeting_1', (conv,params) => {
const context1 = conv.contexts.get('context'); //not working
conv.ask(`Awesome, it's great to meet yoy ${params.name}`);
});

如果这有帮助,特别是我收到的错误内容:

TypeError: Cannot read property 'userDecision' of undefined

我该如何让它发挥作用?我有一种感觉,我必须将数据保存在 userStorage 中,但我实际上只需要这样做,这是非常基本的情况,所以我对此不太熟悉。

感谢您的帮助!

最佳答案

首先,大家好!

您最初将数据存储在 UserStorage 中的想法可能是正确的,具体取决于您的用例。让我详细说明一下:

通过 Google Node.JS 客户端库上的操作保存数据的两种方法

在对话中存储数据

您可以使用conv.data.name = 'Joel'在 session 之间保存数据。但下次用户回来时,这些数据将不可用。

永久存储数据(只要用户允许)

这就是 userStorage 发挥作用的地方。您可以使用 conv.user.storage.name = 'Joel' 来记住用户每次回来时的姓名。请记住,这种类型的永久存储可能需要用户的同意,具体取决于他们居住的地方。

Legal note: Obtaining consent prior to accessing userStorage. Some countries have regulations that require developers to obtain consent from the user before they can access, or save certain information (e.g. personal information) in the userStorage. If you operate in one of these countries and you want to access, or save such information in userStorage, you must use the Confirmation helper to ask consent to the user and obtain the consent before you can start storing such information in userStorage.

您还需要在隐私政策中解释您保存的数据。

对于您的特定用例,在 userStorage 中存储不会更改的数据(即名称)是一种更好的方法。因为如果您只保存一次对话,则下次需要再次请求许可。

这些应该满足您在平台上保存数据的基本需求。但是,如果您确实需要更复杂的状态管理解决方案,您可能需要检查 Dialogflow Contexts .

<小时/>

编辑:我忽略了您已经在使用上下文。但答案仍然成立,如果您只想在对话期间保存数据,则不需要使用上下文。

但我认为您遇到问题的原因是您没有正确设置或获取上下文参数。看看例子herehere :

context.set() 方法获取三个参数;名称、生命周期和参数。您只需在代码中传递上下文的名称。

而且,仅使用 contexts.get() 方法不足以读取上下文的参数。您需要像这样阅读它们:

app.intent('Tell Greeting', conv => {
const context1 = conv.contexts.get('context1')
const { color, num } = context1.parameters
})
<小时/>

但是,我重复一下我原来的观点。如果你真的不需要的话,你不应该让自己的事情变得如此复杂。如果可能的话,尝试使用 conv.dataconv.user.storage

关于node.js - 如何从其他意图获取数据? (将意图的数据传递给其他意图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683680/

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