API Version 2:无法使用'INVALID_ARGUMENT'错误解析JSON响应字符串:\“:找不到字段。\”

时间:2017-07-29 22:58:27

标签: json google-assist-api

我收到' API版本2:无法使用'INVALID_ARGUMENT'错误解析JSON响应字符串错误:\“:找不到简单语音webhook响应的字段。\”。'错误。

------------ ERROR --------------

y2(51)=NaN

我尝试按照https://api.ai/docs/reference/agent/query#response文档发送以下json响应。

------------ RESPONSE --------------

"debugInfo": {
        "agentToAssistantDebug": {
            "agentToAssistantJson": {
                "message": "Unexpected apiai response format: Empty speech response",
                "apiResponse": {
                    "id": "31f9c31d-3861-4262-8518-bd1f1e895f86",
                    "timestamp": "2017-07-29T22:09:23.971Z",
                    "lang": "en",
                    "result": {},
                    "status": {
                        "code": 200,
                        "errorType": "success"
                    },
                    "sessionId": "1501366152335"
                }
            }
        },
        "sharedDebugInfo": [
            {
                "name": "ResponseValidation",
                "subDebugEntry": [
                    {
                        "name": "UnparseableJsonResponse",
                        "debugInfo": "API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: \": Cannot find field.\"."
                    }
                ]
            }
        ]
    },
    "visualResponse": {}
}

我错过了什么?

6 个答案:

答案 0 :(得分:2)

我有这个问题,因为我没有给出任何动作名称。给我的行动名称解决了这个问题。

答案 1 :(得分:2)

在我的情况下,我忘记在Fulfillment中启用“使用webhook”并在Google智能助理中启用“结束对话”。

答案 2 :(得分:0)

这似乎是端点上的错误(heroku或您托管服务器端代码的任何地方)。你确定它设置正确并且服务器已开启吗?

这使用python字典查找函数并将其映射到操作名称。之后,它会运行相关的函数,返回语音响应。

@app.route('/google_webhook', methods=['POST'])
def google_webhook():   
    # Get JSON request 
    jsonRequest = request.get_json(silent=True, force=True, cache=False)

    print("Google Request:")
    print(json.dumps(jsonRequest, indent=4))

    # Get result 
    appResult = google_process_request(jsonRequest)
    appResult = json.dumps(appResult, indent=4)

    print("Google Request finished")

    # Make a JSON response 
    jsonResponse = make_response(appResult)
    jsonResponse.headers['Content-Type'] = 'application/json'
    return jsonResponse, jsonRequest


def google_process_request(req):
    action = req.get('result').get('action')  
    session = req.get('sessionId')
    if not action in dict(dispatch_table):
         return {}   

    func = dispatch_table[action]
    speech = func(req)

    print("Google Response:")
    print(speech)
    print("session id is " + session)

    return {
        "speech": speech,
        "displayText": speech,
        "source": "Cloud"
    }

答案 3 :(得分:0)

有点晚了,但我最近在连接到Google智能助理时遇到了同样的问题。经过一番头疼后,我意识到我的欢迎意图没有正确配置语音响应。请注意,我还没有使用webhooks。但错误表明语音响应缺失。

在我的情况下,我通过检查所有意图来解决它,并在每个意图的底部,在"默认"中编写文本响应。选项卡,然后转到Google智能助理选项卡,并启用"使用DEFAULT选项卡中的响应作为第一个响应。"之后,我的语音应用程序开始工作。

答案 4 :(得分:0)

对我而言,默认欢迎意图中的动作有所改变。我有一个动作去获取用户的欢迎信息的名称,但那已经消失了。我把它重新放入并重新开始工作

答案 5 :(得分:0)

在我的情况下,我在部署了“构建您的第一个代理/应用程序”后遇到了此错误。 Dialogflow和AoG的示例。我选择使用Dialogflow v2 Beta,而第一个app / agent'目前的履行示例都使用v1 API。对于v2,webhook格式发生了重大变化。

在v2文档赶上之前,我建议使用详细但有效的内联编辑器实现webhook示例作为模板,可通过Dialogflow UI在Fulfillment下访问,或者从https://github.com/dialogflow/fulfillment-webhook-nodejs使用。