10

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

- - - - - - 错误 - - - - - - -

"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": {}
}

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

- - - - - - 回复 - - - - - - -

{
  "result": {
    "source": "agent",
    "resolvedQuery": "city",
    "action": "tell.facts",
    "actionIncomplete": false,
    "parameters": {
      "facts-category": "city"
    },
    "contexts": [],
    "metadata": {
      "intentId": "873b1895-cdfc-42a4-b61b-5a1703c72a4d",
      "webhookUsed": "true",
      "webhookForSlotFillingUsed": "false",
      "webhookResponseTime": 417,
      "intentName": "tell-facts"
    },
    "fulfillment": {
      "speech": "Amsterdam",
      "messages": [
        {
          "type": 0,
          "speech": "Amsterdam"
        }
      ]
    },
    "score": 1
  }
}

我错过了什么?

4

6 回答 6

2

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

于 2017-11-21T00:53:58.083 回答
2

就我而言,我忘记在 Fulfillment 中启用“使用 webhook”并在 Google Assistant 中启用“结束对话”。

于 2017-12-16T17:25:14.940 回答
0

对我来说,默认欢迎意图中的操作以某种方式发生了变化。我有一个动作要去获取欢迎消息的用户名,但那已经消失了。我把它放回去,它又开始工作了

于 2017-11-01T15:43:35.240 回答
0

就我而言,在为 Dialogflow 和 AoG 部署“构建您的第一个代理/应用程序”示例后出现此错误。我选择使用 Dialogflow v2 Beta,而“第一个应用程序/代理”实现示例目前都使用 v1 API。v2 的 webhook 格式发生了显着变化。

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

于 2017-12-22T09:57:33.413 回答
0

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

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

于 2017-10-23T23:49:14.037 回答
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"
    }
于 2017-07-31T14:00:11.547 回答