无服务器 Watson 部署?(关于与其他 RESTful 服务集成的问题)



简介: 我觉得我错过了一些关于 Watson Assistant 应该如何在架构级别设计的东西,但也许我不是。

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

更大的问题是,我不确定我是否正确地设置了这一切,以便长期完成我想要完成的工作。

目的: 我正在为我们的托管网络构建一个 24/7 全天候客户服务第 1 层帮助台。我们其中一个网络的用户应该通过短信、网络聊天、Facebook 信使以及最终的电话,要求:

  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的想法是否可以通过使用Watson <->IBM Cloud <->外部服务来实现?我们目前没有"应用程序"或服务器,而是现有服务之间的所有集成。

  2. 任何人都可以帮助我了解我在尝试访问该变量时做错了什么?

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

编辑: 看完米奇的视频后,我改变了一些东西,错误消息已经演变成这样:

"使用对话框节点 ID 的输出更新输出时出错 [node_66_1533646714776]。节点输出为 [{"文本":{"值":["今天的 的密码为 "],"selection_policy":"顺序"}}] SpEL 评估错误: 表达式 [ $guestNetwork['ssid'] 转换为 [ 上下文['访客网络']['ssid'] 在位置 24: EL1012E: 不能 索引为空值"错误。

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

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

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

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

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

谢谢米奇!

最新更新