我目前正在使用一个动作包,声明它将处理以下意图:
我从前两个开始,并将其代理到我自己的NLP /响应收集中,我能够获得基本功能。我现在正试图继续使用askWithList显示用户列表。我的行动包定义如下:
{
"actions": [
{
"name": "MAIN",
"fulfillment": {
"conversationName": "JamesTest"
},
"intent": {
"name": "actions.intent.MAIN"
}
},
{
"name": "TEXT",
"fulfillment": {
"conversationName": "JamesTest"
},
"intent": {
"name": "actions.intent.TEXT"
}
},
{
"name": "OPTION",
"fulfillment": {
"conversationName": "JamesTest"
},
"intent": {
"name": "actions.intent.OPTION"
}
}
],
"conversations": {
"JamesTest": {
"name": "JamesTest",
"url": "myngrok"
}
}
}
当我尝试用askWithList
回复并在模拟器中测试时,我收到以下错误:
{
"name": "ResponseValidation",
"subDebugEntry": [{
"name": "MalformedResponse",
"debugInfo": "expected_inputs[0].possible_intents[0]: intent 'actions.intent.OPTION' is only supported for version 2 and above."
}]
}
根据文档,我的理解是2017年5月17日之后创建的所有项目默认使用版本2 SDK。我似乎也无法找到任何迹象表明我能够在Action Package定义中明确声明我想要使用的版本。
有没有人碰到这个?这只是模拟器的限制,还是我错过了一些明显的东西?
答案 0 :(得分:0)
好像在conversations
块fulfillmentApiVersion
中有一个未记录的(至少我找不到)字段,必须在您的操作包中设置为2
。来自此处的答案:askWithList on Actions on Google
答案 1 :(得分:0)
你错过了一些不那么明显的东西。 {:此文档为somewhat hidden,public boolean posNeg(int a, int b, boolean negative) {
if (negative) {
if (a < 0 && b < 0) {
return true;
}
}
else {
if (a > 0) {
if (b < 0) {
return true;
}
}
else if (a < 0) {
if (b > 0) {
return true;
}
}
}
return false;
}
命令仍生成版本1 json文件。
操作包必须明确指出它正在使用的版本,否则将假定它使用的是版本1.
要指定版本2,您的“对话”部分应如下所示:
gactions
请注意“fulfillmentApiVersion”参数。