【问题标题】:Wit.ai seems to be jumping randomly between storiesWit.ai 似乎在故事之间随机跳跃
【发布时间】:2017-04-20 06:19:10
【问题描述】:

我的 Wit.ai 机器人有两个独立的简单故事,

第一个接受单词“Debug”,发送“test”,然后运行一个将上下文内容输出到控制台的函数,称为 test_context()

第二个接收地址,运行一个名为 new_session() 的函数来更改上下文,然后向用户发送更改确认,其结构类似于“您的位置已更改为 {address}”

当我直接在 wit.ai 测试控制台中输入时,它似乎可以正确检测故事并运行相应的功能,但当我尝试通过 Node.js API 使用它时,它似乎完全随机运行。

有时在输入地址时,它会运行 test_context(),然后是 new_session(),然后不输出任何文本,有时它只会输出测试文本,然后是地址文本并且不运行任何函数,有时它会正确运行。

在输入“Debug”时也会发生同样的行为。

后端设置正确,因为其他 2 个故事似乎运行良好。

这两个故事今天早些时候都运行良好,我没有对机智故事本身进行任何更改,后端的任何更改甚至都没有触及调试功能。

这是一个已知问题吗?

【问题讨论】:

    标签: wit.ai


    【解决方案1】:

    我也遇到过这个问题。

    在我看来,当您没有正确处理来自 wit.ai 的故事中的上下文变量设置时(例如,通过将它们设置为 null),它会使故事变得混乱。作为开发人员,正确处理“客户端”的故事是您自己的责任,所以我可以理解 wit.ai 会让奇怪的事情发生,当您不这样做时。也许 wit.ai 决定跳过故事以防止他们的机器人崩溃,对我来说仍然有点神秘。也许你的问题是不同的类型,只是分享一个类似的观察和我的解决方案。

    正是出于测试的原因,我创建了三个故事;

    1. 处理问候
    2. 说说x市的天气情况
    3. 确定何时计划会议

    机器人已连接到 facebook,我在我的 nodejs express 服务器上处理操作(例如计划会议)。

    我对机器人说“我想安排一个明天的会议”,结果是一个机智的日期/时间。顺便说一句。这一切正常。然后我发送消息“我想安排今天早上的会议”。这导致了 wit.ai 上下文中的两个日期/时间变量。反过来,我的代码无法处理这个;两个时间戳导致 null (可能 json 消息变得更加复杂,我试图得到错误的字段)。这反过来又导致必须返回的上下文变量为 null。

    所以我所做的是捕获上下文变量未填充时的错误并仅填写 [wit.js 找不到日期]。这解决了问题,尽管我现在当然需要更好地处理这个错误。

    旧代码:

    'createAppointment': ({sessionId, context, text, entities}) => {
    return new Promise(function(resolve, reject) {
        const myDateTime = firstEntityValue(entities, 'datetime');
        console.log('the time trying to send ',myDateTime);
        createAppointment(context, myDateTime)
        context.appointmentText = myDateTime
        return resolve(context);
     },}
    

    新的工作代码:

    'createAppointment': ({sessionId, context, text, entities}) => {
    return new Promise(function(resolve, reject) {
        const myDateTime = firstEntityValue(entities, 'datetime');
        console.log('the time trying to send ',myDateTime);
        if(myDateTime){
          createAppointment(context, myDateTime)
          context.appointmentText = myDateTime
          return resolve(context);
        } else {
          context.appointmentText = '[wit.js could not find date]'
          return resolve(context);
        }
      });
    },
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2016-02-25
      相关资源
      最近更新 更多