不使用SDK版本2的Google模拟器上的操作

时间:2017-08-02 21:34:09

标签: actions-on-google

我目前正在使用一个动作包,声明它将处理以下意图:

  • actions.intent.MAIN
  • actions.intent.TEXT
  • actions.intent.OPTION

我从前两个开始,并将其代理到我自己的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定义中明确声明我想要使用的版本。

有没有人碰到这个?这只是模拟器的限制,还是我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:0)

好像在conversationsfulfillmentApiVersion中有一个未记录的(至少我找不到)字段,必须在您的操作包中设置为2 。来自此处的答案:askWithList on Actions on Google

答案 1 :(得分:0)

你错过了一些不那么明显的东西。 {:此文档为somewhat hiddenpublic 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”参数。