- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在 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 中的想法可能是正确的,具体取决于您的用例。让我详细说明一下:
您可以使用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 .
<小时/>编辑:我忽略了您已经在使用上下文。但答案仍然成立,如果您只想在对话期间保存数据,则不需要使用上下文。
但我认为您遇到问题的原因是您没有正确设置或获取上下文参数。看看例子here和 here :
context.set()
方法获取三个参数;名称、生命周期和参数。您只需在代码中传递上下文的名称。
而且,仅使用 contexts.get()
方法不足以读取上下文的参数。您需要像这样阅读它们:
app.intent('Tell Greeting', conv => {
const context1 = conv.contexts.get('context1')
const { color, num } = context1.parameters
})
<小时/>
但是,我重复一下我原来的观点。如果你真的不需要的话,你不应该让自己的事情变得如此复杂。如果可能的话,尝试使用 conv.data
和 conv.user.storage
。
关于node.js - 如何从其他意图获取数据? (将意图的数据传递给其他意图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683680/
作为后续问题:Laravel Redirect::intended() conditional fallbacks 我遇到了一个问题,在设置了预期的 URL session 后,即使用户决定不登录而是
我面临一个问题,即与任何意图不匹配的单词,它会假设它属于标记最多的话语的意图。 示例:如果 意图 A 由动物等话语组成 意图 B 包含“水果”等话语 意图 C 由诸如昆虫之类的话语组成 意图 D 由诸
拥有什么实际区别 subroutine fillName(person) type(PersonType), intent(inout) :: person person%name = "
我想知道 Dialogflow 中是否有任何商定的意图、事件和上下文的命名约定。 如果没有,那么如果您分享您自己的命名约定,我将不胜感激! 最佳答案 我发现“只要别人容易理解就行”这句话有点矛盾。如果
我正在尝试了解使用队列的用例。 我的理解:队列意味着一对一。唯一的用例(如果不是罕见的话,很少)是:消息仅供一次使用。 但即使在这些情况下,我也可能想使用主题(只是为了将来安全)。唯一需要额外注意的是
我的 Xcode 是 v10,我正在为 SiriKit 开发一个针对 iOS 12 的自定义 intent。 在 Xcode 10 中,自定义意图是在 .intentdefinition 文件中设计的
我有一个设置了 .intentdefinition 文件的 WidgetKit ,我可以在运行我的 WidgetKit 时从我的枚举中进行选择,但我不确定如何在代码中使用这些信息。 我希望能够根据用户
我需要为意图过滤器注册(在运行时)自定义 BroadcastReceiver 可以在 list 中描述为 并在用户通过按应用程序中的某个按钮退出应用程序时取消注册接收
根据 Fortran 标准: The INTENT (OUT) attribute for a nonpointer dummy argument specifies that the dummy a
我正在使用 Twitter Web Intents 来检查是否有人关注我。现在的问题是;我只在事件对象中获取我自己的屏幕名作为回调。 twttr.events.bind('follow', funct
编辑 很抱歉大家,这只是由于意图名称后面缺少逗号。非常抱歉x: 我最近使用 Microsoft Bot Framework (botbuilder v3.14.0)、Node.js (v8.9.4)
我正在开发的产品: RequeSTLy - Chrome 和 Firefox 扩展设置重定向、修改 header 、切换主机、插入用户脚本 ( https://www.requestly.in/ )
有什么方法可以有目的地合并对话框,这样我就不需要多余的代码片段? bot.dialog('whats-your-name', require('./dialogs/whats-your-name')
我是 Dialogflow 的新手,虽然它很容易理解,但我无法使用自定义事件触发 Intent。 我必须实现的任务是,当在后端 Node.js Webhook 中检测到警报时(例如:老板想要做某事),
在 Microsoft Bot Framework 中,我已经开始对话并运行一些意图,假设“登录”,但是当我向用户询问用户名或密码时,他可能会说“取消该”或“取消登录”,我如何获得此意图:“取消”以及
我使用 LUIS 框架构建了一个运行良好的机器人。在研究过程中遇到了以下几点 与 LUIS 意图连接后;机器人无法检查正则表达式意图喜欢 对于我正在尝试设置的对话框.matches('^helpdes
我想知道 URL 是发布到 facebook 的链接。在 Twitter 上,我可以使用“http://twitter.com/intent/tweet?text=”来发推文。虽然我试图寻找一个,但我
通读,http://www.w3schools.com/angular/angular_directives.asp我遇到了一个在评论中调用指令的例子,具体来说: 您可以在 http://www.w
我在 Stack Overflow 上的许多帖子中读到,可分配数组在传递到虚拟参数为 intent(out) 的子例程中时会被释放。 如果我考虑以下代码: program main real, di
API.ai 的预构建包可让您轻松获得长长的意图列表。目前,我正在尝试利用他们的 smalltalk 包,该包有大约 100 个意图,并对每个意图做出响应。 我正在使用api-ai-recognize
我是一名优秀的程序员,十分优秀!