Ibm cloud 使用Watson Assistant中的插槽和红色节点

Ibm cloud 使用Watson Assistant中的插槽和红色节点,ibm-cloud,telegram-bot,node-red,watson-assistant,slots,Ibm Cloud,Telegram Bot,Node Red,Watson Assistant,Slots,我正在和Watson助手和Node RED在电报上建立聊天机器人。我需要从用户那里获取预约的日期和时间,因此我使用了一个插槽,需要插入这两个信息。使用沃森提供的试用聊天机器人,我对插槽没有问题;但是使用节点红色,我只能输入日期。通过调试,我看到在输入日期之后,然后在运行第一个插槽之后,返回这个错误“msg.payload.content is empty”。此外,要查看助手返回的输出消息主体,msg.payload.output.generic字段为空。另一方面,它应该包含助理的回复,在输入日期

我正在和Watson助手和Node RED在电报上建立聊天机器人。我需要从用户那里获取预约的日期和时间,因此我使用了一个插槽,需要插入这两个信息。使用沃森提供的试用聊天机器人,我对插槽没有问题;但是使用节点红色,我只能输入日期。通过调试,我看到在输入日期之后,然后在运行第一个插槽之后,返回这个错误“msg.payload.content is empty”。此外,要查看助手返回的输出消息主体,msg.payload.output.generic字段为空。另一方面,它应该包含助理的回复,在输入日期后,助理还要求插入时间。看起来机器人在输入日期时被卡住了,但实际上我不这么认为,因为在试用聊天机器人中,它工作得非常完美


有什么问题吗?

助手V1和V2都没有设置或查看
msg.payload.content
。在输入时,他们查看
msg.payload
,在退出时,他们将来自Watson Assistant的响应分配给
msg.payload

如果您得到的“msg.payload.content”是空错误,那么这将发生在您的流中的某个地方。最有可能是在您试图处理响应的最后。如果msg.payload.content为空,则助手对话框不会返回任何输出。这很奇怪,因为它应该返回当前空插槽的提示

msg.payload
看起来像什么

您使用的是V1还是V2节点,以及您使用的是哪个版本的节点red node watson节点?你可以通过进入调色板来判断


然而,V1和V2节点都已使用插槽进行了测试,响应最终出现在
msg.payload.content
上。node red node watson当前发布的版本是0.9.0。

好的,现在我找到了问题的原因,但我不知道如何修复它。问题是机器人在每个用户的消息中设置了一个随机会话id,因此每次调用时我都会丢失上下文。我想在用户与bot交互开始时生成一个随机会话id,并将其保存到msg.params[“session_id”]中,以便在会话期间使用它。当用户插入“退出助手”的意图时,系统将生成一个新的会话id。您认为这是正确的策略吗?或者有更好的实现方法吗?以防万一,您知道如何生成随机会话id吗@Chughts如果关闭节点配置中的
多个会话
选项,则节点将为您管理会话,您无需将其传入。如果您确实需要多个会话,那么您确实需要反馈节点在
msg.payload.session\u id
上输出的会话id,因为我需要多个会话,所以我认为像您这样的解决方案,但是我不知道如何从Watson Assistant节点获取msg.payload.session_id,并将结果传递给在该节点之前创建的块函数,以设置助手。我尝试使用另一个block函数,该函数使用msg.sessionId=msg.payload.session\u id从助手获取会话id;返回味精;但是,当我将此msg.sessionId传递给msg.params[“session_id”]时,系统会循环,返回此错误“msg.payload.chatId为空”。我正在进行修复,以允许您提供
msg.params.session_id
上的任何字符串,然后节点将其映射到实际会话。我将允许一个新字段
msg.params.reset_session
清除节点的映射,然后开始清理。我希望在今天晚些时候发布0.9.1版本并进行修复。在发布之前,我需要在本地和云中测试运行。