Подтвердить что ты не робот

API Version 2: Не удалось проанализировать строку ответа JSON с ошибкой INVALID_ARGUMENT:\ ": Не удается найти поле. \"

Я получаю ' API версии 2: не удалось проанализировать строку ответа JSON с ошибкой "INVALID_ARGUMENT":\ ": Не удается найти поле. \".' для простого ответа на веб-хост.

------------ ОШИБКА --------------

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

Я попытался отправить следующий json-ответ в соответствии с https://api.ai/docs/reference/agent/query#response.

------------ РЕАКЦИЯ --------------

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

Что мне не хватает?

4b9b3361

Ответ 1

У меня была эта проблема, потому что я не дал никакого имени действия. Предоставление имени действия разрешило это для меня.

Ответ 2

В моем случае я забываю включить "Использовать webhook" в разделе "Выполнение" и включить "Завершить разговор" в Google Assistant.

Ответ 3

Кажется, что ошибка на конечной точке (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"
    }

Ответ 4

Немного поздно, но у меня недавно была такая же проблема, когда я подключался к Google Assistant. После некоторой царапины на голове я понял, что у моего приветственного намерения нет должным образом настроенного голосового ответа. Обратите внимание, что я пока не использую веб-хосты. Но ошибка указывает на отсутствие голосового ответа.

В моем случае я решил это, проверив все свои намерения и в нижней части каждого намерения, нарисуя текстовый ответ на вкладке "По умолчанию", а затем перейдя на вкладку "Помощник Google" и включив "Использовать ответ с вкладки DEFAULT в качестве первого ответа." После этого мое голосовое приложение начало работать.

Ответ 5

Для меня это действие было каким-то образом изменено в приветственном намерении по умолчанию. У меня было какое-то действие, чтобы получить имя пользователя для приветственного сообщения, но оно исчезло. Я вернул его и снова начал работать.

Ответ 6

В моем случае я получил эту ошибку после развертывания примеров "Создайте свой первый агент/приложение" для Dialogflow и AoG. Я решил использовать Dialogflow v2 Beta, тогда как в примерах выполнения "первого приложения/агента" в настоящее время используется API v1. Формат webhook значительно изменился для v2.

До тех пор, пока документы v2 не догонят, я бы рекомендовал использовать подробный, но рабочий пример выполнения веб-хостинга Inline Editor в качестве шаблона, доступный в разделе "Выполнение через интерфейс диалогового окна", или https://github.com/dialogflow/fulfillment-webhook-nodejs.