首页 > 解决方案 > IBM Watson Conversation 和 IBM Cloud Functions:参数的用户输入

问题描述

我已经在IBM Cloud Functions中创建了一个函数,但是如何实现来自用户输入的参数?

我想做的是


IBM 的示例布局:

{
    "context": {
      "variable_name" : "variable_value"
    },
    "actions": [
      {
        "name":"getProducts",
        "type":"client | server",
        "parameters": {
          "<parameter_name>":"<parameter_value>"
        },
        "result_variable": "<result_variable_name>",
        "credentials": "<reference_to_credentials>"
      }
    ],
    "output": {
      "text": "response text"
    }
  }

标签: ibm-cloudwatson-conversationibm-cloud-functions

解决方案


IBM Cloud 文档中提供了我编写的完整教程,其中包含 IBM Cloud Functions 和后端数据库。代码在 GitHub 上的以下存储库中提供:https ://github.com/IBM-Cloud/slack-chatbot-database-watson/ 。

以下是工作区文件中的相关部分,显示了如何将参数传递给函数:

{
      "type": "response_condition",
      "title": null,
      "output": {
        "text": {
          "values": []
        }
      },
      "actions": [
        {
          "name": "_/slackdemo/fetchEventByShortname",
          "type": "server",
          "parameters": {
            "eventname": [
              "<? $eventName.substring(1,$eventName.length()-1) ?>"
            ]
          },
          "credentials": "$private.icfcreds",
          "result_variable": "events"
        }
      ],
      "context": {
        "private": {}
      },

稍后,结果会以这种方式呈现,例如:

"output": {
        "text": {
          "values": [
            "ok. Here is what I got:\n ```<? $events['result'] ?>```",
            "Data:\n ``` <? $events['data'] ?> ```"
          ],
          "selection_policy": "sequential"
        },
        "deleted": "<? context.remove('eventDateBegin') ?><? context.remove('eventDateEnd') ?> <? context.remove('queryPredicate') ?>"
      },

当然,可以通过迭代结果来完成一些更高级的格式化。这里有一些技巧。该代码还显示了如何使用子节点来处理结果并清除上下文变量。

要获取参数,在您的情况下是产品名称或类型,您需要访问输入字符串并找到“产品”之后的部分。另一种方法是使用专为此类情况设计的 beta 功能“上下文实体”。


推荐阅读