IBM Watson Conversation & IBM Cloud Functions : User Input For Parameters

不打扰是莪最后的温柔 提交于 2020-01-10 06:10:09

问题


I have already created a function in IBM Cloud Functions, but how would I implement the parameters from user input?

What I'm trying to do is

  • For example: When a user types in "I need product" / "Buy product now" / Show me products. The product input is taken as a parameter and implements it into my Cloud Function, which displays all products that uses product as a keyword.
  • The response text would get info from the Cloud Function return output (which is a JSON array)
    • (res.body.items[?].name)

Example layout from 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"
    }
  }

回答1:


There is a full tutorial I wrote available in the IBM Cloud docs which features IBM Cloud Functions and a backend database. The code is provided on GitHub in this repository: https://github.com/IBM-Cloud/slack-chatbot-database-watson/.

Here is the relevant part from the workspace file that shows how a parameter could be passed into the function:

{
      "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": {}
      },

Later on, the result is presented, e.g., in this way:

"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') ?>"
      },

Some fancier formatting can be done, of course, by iterating over the result. Some tricks are here. The code also shows how to use a child node to process the result and to clear up context variables.

To obtain the parameter, in your case a product name or type, you would need to access either the input string and find the part after "product". Another way is to use the beta feature "contextual entity" which is designed for such cases.



来源:https://stackoverflow.com/questions/51357554/ibm-watson-conversation-ibm-cloud-functions-user-input-for-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!