ibm-cloud - IBM Watson Conversation 和 IBM Cloud Functions:参数的用户输入
问题描述
我已经在IBM Cloud Functions中创建了一个函数,但是如何实现来自用户输入的参数?
我想做的是
- 例如:当用户输入“我需要产品”/“立即购买产品”/向我展示产品时。产品输入作为参数实现到我的云函数中,它显示了所有使用产品作为关键字的产品。
- 响应文本将从 Cloud Function 返回输出(这是一个 JSON 数组)中获取信息
- (res.body.items[?].name)
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 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 功能“上下文实体”。
推荐阅读
- django - Django 模型中的类型和子类型
- rx-java - 如何使用 RxJava 实现大小取决于消费者和生产者速度的缓冲区?
- django - Nuxt 应用程序无法访问一个 REST API,但其他所有 API 都可以使用
- macos - 无法在 Mac 上从 Intellij 复制和粘贴文件
- css - 如何利用 justify-content: space-between 的自动间距与偶数个元素?
- c++ - 再次运行布尔控制循环
- javascript - 如何在 Chrome Mobile 中从全屏模式返回
- python - 如何通过传递用户名和密码登录共享点?
- android - 什么是 Zygote 写时复制堆?
- c# - Entity Framework Core 的 MySQL 排序规则问题