如何在 IBM Watson Assistant 客户端中实现“客户端”类型的操作?

Posted

技术标签:

【中文标题】如何在 IBM Watson Assistant 客户端中实现“客户端”类型的操作?【英文标题】:How to implement "client" type action in IBM Watson Assistant client? 【发布时间】:2019-08-26 01:21:23 【问题描述】:

我正在开发 IBM Watson Assistant 服务来构建 AI 聊天机器人,目前我正在为此构建客户端 UI,因此根据 IBM 的文档,它们支持各种操作来使用函数触发外部业务逻辑。我认为“客户端”类型的操作可以帮助我触发一些 javascript 函数,但我在 google 上看不到任何工作示例。所以请帮助我在我的 html/javascript 客户端中实现“客户端”类型的操作。

【问题讨论】:

【参考方案1】:

检查此帖子中的问题 - https://developer.ibm.com/answers/questions/477020/help-with-custom-actions-for-ibm-watson-assistant/

客户端操作有两个部分。第一个是在对话框中,它表示需要执行操作,以及操作结果应该放置在哪里。客户端操作要求您有一个编排层。这意味着您可以控制对话流和做出反应的编排层。如何让他们进行协调取决于您。您没有义务遵循任何模式。最简单的方法是使用上下文。该对话框设置一个上下文变量,例如。 'PleaseDoSomething',应用程序看到它并执行一些操作。

记录在案的客户端操作构造是一个规范,它为这个过程提供了一个结构;允许其他编排层理解操作;让您相对轻松地切换到 Cloud Functions。

如果使用客户端操作构造。

那么对话框 json 将如下所示:


  "output": 
    "text": 
      "values": [
        "Hang on I need to look that up."
      ],
      "selection_policy": "sequential"
    ,
    "actions": [
     
       "name": "fetchBalance",
       "type": "client",
       "result_variable": "balance"
     
   ]
  

您的编排层查找“Actions”,运行“fetchBalance”并将结果放入上下文字段“balance”中。

【讨论】:

我理解 fetchBalance 是在客户端定义的函数,但它是如何自动执行的? 因为你的编排层会执行它。助理服务或对话框中没有任何内容会自动执行客户端操作。 好的,知道了,所以我需要触发该功能。我需要遵循任何 json 结构来获取该函数的返回值吗? 这并不取决于你如何做,但惯例规定你将上下文中的结果作为值返回给result_variable。 IE。在上下文字段balance 的示例中,可以是您想要的任何类型 - 字符串、数字、数组、对象...

以上是关于如何在 IBM Watson Assistant 客户端中实现“客户端”类型的操作?的主要内容,如果未能解决你的问题,请参考以下文章

从 IBM Watson Assistant 获取我的聊天机器人中的选项列表

将 IBM Db2 连接到 Watson Assistant

IBM Watson Assistant 响应来自机器人的延迟

尝试通过 Axios (React Native) 访问 IBM Watson Assistant 消息时出现错误 500

Watson Assistant 使用 Twilio 与电话集成

找不到Watson Assistant登录名