从Node应用程序向Watson Conversation发送上下文变量时,我遇到了一个问题。
我正在尝试实施以下内容,
例如:
当用户输入他的电话号码时,下一个节点应该问候 用户名字;这是从数据库中获得的。
节点1:输入您的电话号码?
节点2:< 用户输入电话号码>
从数据库中提取与电话号码对应的数据,并将其作为上下文变量传递给Watson
节点3:嘿,$user_name
。你好吗? 节点4:< 等待用户输入>
我面临的问题是,
节点应用程序仅在需要用户输入时才返回上下文变量,因此,在此之前,Watson Conversation不会获取新的上下文变量集。所以这里它只用节点3 发送新的上下文变量集,但我想要的是,我希望Watson Conversation在输入我的电话号码后拥有一组新的上下文变量。
即用户在节点2 中输入phone_number
后,Node应用会立即获取与其对应的user_name
,并将该值设置为Node app中的上下文变量并将其发送回Watson Conversation。因此,在节点3 打印之前,Watson Conversation具有一组新的上下文变量。
但实际发生的情况是,当用户输入电话号码时,我会在我的Node App上获取与其对应的user_name
,但上下文变量为 NOT on Watson Conversation,所以现在当Watson响应时,$user_name
的值仍为undefined
,因此它返回为空字符串。
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 0 :(得分:0)
节点应用程序仅在需要用户输入时才返回上下文变量,因此,在此之前,Watson Conversation不会获取新的上下文变量集。
这是预期的行为。沃森助理是无国籍的。在您将上下文对象发回给它之前,它不了解上下文变量或您在对话中的位置。
所以你必须将值发送给它。如果您是,那么您需要发布示例JSON请求/响应以更好地了解正在发生的事情。
另一种方法是云功能。您可以在Watson Assistant中创建云功能,该功能执行查找,在对话中将其传回,您的节点应用程序将获取上下文响应对象中的值。
云功能虽然对时间敏感。因此,如果有任何可能的延迟,那么节点应用程序中的代码就是如此。