在 Watson Assistant 中处理来自 IBM Cloud Function 的多个答案
Handle multiple answers from IBM Cloud Function in Watson Assistant
我需要在 Watson Assistant 对话节点中显示未知数量的按钮。按钮的数据来自 IBM Cloud Functions。
如果我在节点中手动设置响应类型 "option" 答案,JSON-对象如下所示:
{
"output": {
"generic": [
{
"title": "Välj mötestyp",
"options": [
{
"label": "Rådgivning familjerätt 30 min",
"value": {
"input": {
"text": "447472"
}
}
},
{
"label": "Rådgivning familjerätt 60 min",
"value": {
"input": {
"text": "448032"
}
}
}
],
"description": "Välj typ av möte du vill boka",
"response_type": "option",
"preference": "dropdown"
}
]
}
}
我的云函数可以创建这个 JSON,没有 x 个选项。但是如何在 Google 助理中使用这些数据?
最简单的方法是让云函数生成完整的 JSON,然后像这样输出返回的 JSON:
{
$context.output"
}
..但这是不允许的。
从我的函数生成的输出对象:
[{"serviceId":447472,"serviceName":"Rådgivning Familjerätt 30 min"},{"serviceId":448032,"serviceName":"Rådgivning Familjerätt 60 min"}]
关于如何做到这一点有什么建议吗?
我没有看到生成整个输出和选项的简单方法。你可以做的是:
- 生成选项标签和值
- 将它们传递到具有 1、2、3 等选项的预定义结构的通用输出节点。根据要填充的预定义响应结构的上下文变量的数组大小进行检查。
我测试了以下内容:
{
"context": {"my": [ {
"label": "First option",
"value": "one"
},
{
"label": "Second",
"value": "two" }]},
"output": {
"generic": [
{
"title": "This is a test",
"options": [{"label": "<? $my[0].label ?>",
"value": {
"input": {
"text": "my[0].value"
}
}
},{"label": "<? $my[1].label ?>", "value": {
"input": {
"text": "<? $my[1].value ?>"
}
}
}],
"response_type": "option"
}
]
}
}
它用选项定义了一个上下文变量,类似于选项结构。在输出中访问标签和值,稍后修改以证明它们已被使用并且可以修改。
我需要在 Watson Assistant 对话节点中显示未知数量的按钮。按钮的数据来自 IBM Cloud Functions。
如果我在节点中手动设置响应类型 "option" 答案,JSON-对象如下所示:
{
"output": {
"generic": [
{
"title": "Välj mötestyp",
"options": [
{
"label": "Rådgivning familjerätt 30 min",
"value": {
"input": {
"text": "447472"
}
}
},
{
"label": "Rådgivning familjerätt 60 min",
"value": {
"input": {
"text": "448032"
}
}
}
],
"description": "Välj typ av möte du vill boka",
"response_type": "option",
"preference": "dropdown"
}
]
}
}
我的云函数可以创建这个 JSON,没有 x 个选项。但是如何在 Google 助理中使用这些数据?
最简单的方法是让云函数生成完整的 JSON,然后像这样输出返回的 JSON:
{
$context.output"
}
..但这是不允许的。
从我的函数生成的输出对象:
[{"serviceId":447472,"serviceName":"Rådgivning Familjerätt 30 min"},{"serviceId":448032,"serviceName":"Rådgivning Familjerätt 60 min"}]
关于如何做到这一点有什么建议吗?
我没有看到生成整个输出和选项的简单方法。你可以做的是:
- 生成选项标签和值
- 将它们传递到具有 1、2、3 等选项的预定义结构的通用输出节点。根据要填充的预定义响应结构的上下文变量的数组大小进行检查。
我测试了以下内容:
{
"context": {"my": [ {
"label": "First option",
"value": "one"
},
{
"label": "Second",
"value": "two" }]},
"output": {
"generic": [
{
"title": "This is a test",
"options": [{"label": "<? $my[0].label ?>",
"value": {
"input": {
"text": "my[0].value"
}
}
},{"label": "<? $my[1].label ?>", "value": {
"input": {
"text": "<? $my[1].value ?>"
}
}
}],
"response_type": "option"
}
]
}
}
它用选项定义了一个上下文变量,类似于选项结构。在输出中访问标签和值,稍后修改以证明它们已被使用并且可以修改。