首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Watson Assistant在嵌套节点内获取消息

Watson Assistant在嵌套节点内获取消息
EN

Stack Overflow用户
提问于 2020-09-17 10:18:16
回答 1查看 234关注 0票数 0

我希望从Watson获得嵌套在对话中的响应

我可以从欢迎节点获得响应,当它们不理解文本输入时,因为它们是全局的

这是我的代码

代码语言:javascript
复制
const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require ('ibm-watson/auth');
const { rejects } = require('assert');

const assistant = new AssistantV1({
    authenticator: new IamAuthenticator({ apikey: '<>' }),
    serviceUrl: 'https://gateway.watsonplatform.net/assistant/api/',
    version: '2020-04-01'
  });

let context = {} //I don't know what to put in context
assistant.message(
  {
    input: { text: '2' },//the answer "2" the nested node "Tramo Emision"
    workspaceId: '<>',
    context: context
  }, function (err, response) {
    if (err) {
      rejects(err)
    } else {
      context = response.context;
    }
  })
  .then(response => {
    console.log(JSON.stringify(response.result, null, 2));
  })
  .catch(err => {
    console.log(err);
  });

但是这段代码只允许我获得全局响应,而不是嵌套响应

我得到的答案是:

在上一轮对话中没有与true匹配的对话节点条件- context.nodes_visited为空。在下一轮回退到根节点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-29 22:31:37

在您的代码中,每个周期都会将上下文重置为一个空对象。这具有将对话重置回开头的效果。上下文用于管理会话状态。即。对话流中对话的位置,以及任何已设置的变量。这允许对话继续进行。

在V1应用编程接口中,每次打开message都会返回上下文对象,您的应用程序可以查看和修改该对象,但它必须返回完整的上下文对象。因此,您的应用程序需要在获取上下文对象时以某种方式缓存它,然后在下一次调用message时将其返回。您的应用程序需要在文件全局级别启动缓存,而不是在任何函数之外,因此它将只启动一次,而不是在每次会话时启动。

在V2应用编程接口中,上下文管理是由应用编程接口在会话级别代表您执行的。为了维护上下文,您需要创建一个会话,并在每次会话时使用该会话id。可以选择将上下文返回给您的应用程序,允许您的应用程序查看/修改已设置的任何上下文变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63930338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档