【问题标题】:Serverless Watson Deployment? (Questions about integrations with other RESTful services)无服务器 Watson 部署? (关于与其他 RESTful 服务集成的问题)
【发布时间】:2019-01-15 13:19:55
【问题描述】:

简介: 我觉得我在架构级别应该如何设计 Watson Assistant 时遗漏了一些非常明显的东西,但也许我没有。

我遇到的具体问题是,我似乎无法让 API 调用以获取信息回到对话中。

更大的问题是,我不确定我是否正确设置了这一切,以实现我想要完成的长期目标。

目的: 我正在为我们的托管网络构建 24/7 客户服务 1 级帮助台。我们其中一个网络的用户应该能够通过短信、网络聊天、Facebook Messenger 以及最终的电话呼叫:

  1. 有关如何连接特定设备(PC、Mac、Chromebook、Xbox、Apple TV 等)的说明
  2. 如果说明无法成功连接,请寻求帮助进行故障排除。 (删除已保存网络、重启无线网卡等分步说明)
  3. 帮助创建案例 - 此时对话变成 Watson 询问一堆信息,例如他们第一次遇到问题的时间和日期、他们遇到问题的任何其他时间/日期、他们的 MAC 地址等.

问题: 我已经构建了大部分对话框并且运行良好。通过实体获取信息,保存到上下文变量,将它们吐出来以使对话正常进行,题外话等都正常工作。

我终其一生都无法弄清楚我在尝试从外部 API 获取信息时做错了什么。

我们的访客网络有一个“每日密码”,我们希望要求提供每日密码的用户接收它。这涉及对可公开访问的服务器的非常简单的 GET 请求。

我构建了一个运行良好的 BlueMix/IBM Cloud 函数,但我似乎无法成功调用或接收来自它的信息。

沃森错误:

Error when updating output with output of dialog node id [node_66_xxxxxxxxxx]. Node output is [{"text":{"values":["Today's password for <? $guestNetwork.ssid ?> is <? $guestNetwork.password ?>"],"selection_policy":"sequential"}}] SpEL evaluation error: Expression [ $guestNetwork.ssid ] converted to [ context['guestNetwork'].ssid ] at position 0: EL1007E: Property or field 'ssid' cannot be found on null (and there is 1 more error in the log)

这个错误让我相信我没有在 Watson 中正确定义结果变量,或者尝试在对话中不正确地检索它 - 因为我知道我的代码在 BlueMix 控制台中运行它时会返回 SSID 和密码。

动作本身的 JSON(是的,我在前一个节点中设置凭据):

{
  "output": {
    "text": {
      "values": [
        "Today's password for <? $guestNetwork.ssid ?> is <? $guestNetwork.psk ?>"
      ],
      "selection_policy": "sequential"
    }
  },
  "actions": [
    {
      "name": "get-http-resource/getGuestNetworkPassword",
      "type": "server",
      "credentials": "$private.myCredentials",
      "result_variable": "$guestNetwork"
    }
  ]
}

问题:

  1. 通过使用 Watson IBM Cloud 外部服务,我对“无服务器”Watson 的想法是否可行?我们目前没有“应用程序”或服务器,它们都是现有服务之间的所有集成。

  2. 谁能帮我理解我在尝试访问该变量时做错了什么?

奖励积分:我如何知道只有在 IBM 云中成功完成操作后才能访问变量?基本上,如果通过我编写的 IBM Cloud 函数访问信息需要 1.5 秒,我是否需要将对话框暂停 1.5 秒?还是我完全忽略了如何从 Watson 获取外部信息的重点?

编辑: 看了 Mitch 的视频后,我改了几处,错误信息演变成这样:

"使用对话节点 id 的输出更新输出时出错 [node_66_1533646714776]。节点输出为 [{"text":{"values":["Today's 密码为 "],"selection_policy":"sequential"}}] SpEL 评估错误: 表达式 [ $guestNetwork['ssid'] ] 转换为 [ context['guestNetwork']['ssid'] ] 在位置 24: EL1012E: 不能 索引为空值”错误。

【问题讨论】:

    标签: rest ibm-cloud ibm-watson watson-conversation watson-dialog


    【解决方案1】:

    没有看到您的对话框,这是一个猜测,但我看到的最常见错误是您只需要在执行操作调用后跳转到子对话框节点。您不能执行操作调用并在同一对话节点中显示响应,因为对话需要有机会运行操作。

    它在我的视频中概述: https://ibm-dte.mybluemix.net/ibm-watson-assistant?refresh 请参阅有关对话框标注的视频。它长达 13 分钟,我相信您只需要其中的 2 分钟,但仍然应该有所帮助。

    您尝试做的事情绝对是可能的,特别是如果它在云功能环境中工作。

    【讨论】:

    • 嘿米奇!你的视频很有帮助。我改变了一些东西,但我仍然遇到问题。 #1,我在欢迎对话框节点中设置了凭据,就像你做的那样。 #2,看到你调用变量的方式非常有帮助。不幸的是,我仍然遇到错误,尽管现在不同了。
    • 现在的错误是什么?之前的错误让我觉得creds没问题,否则之前应该是404。
    • 感谢 Mitch,请参阅帖子底部提到的错误“...错误消息已演变为:”
    • 所以它说那个对象什么都没有...你能加入这个 slack 社区,这样我们就可以做一些屏幕共享吗? wdc-slack-inviter.mybluemix.net
    【解决方案2】:

    我们使用默认包(不在子包中)重新创建了该操作,并且它立即开始工作。

    注意事项:Watson 对话框编辑器不喜欢包名称中的破折号。

    谢谢米奇!

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 2011-01-18
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2018-06-14
      • 2018-01-01
      相关资源
      最近更新 更多