我收到' 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": {}
}
我错过了什么?
答案 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使用。