2017-07-29 21 views
10

Otrzymuję komunikat "API Version 2: Nie można przeanalizować łańcucha odpowiedzi JSON z błędem" INVALID_ARGUMENT ": \ ": Nie można znaleźć pola. \". "błąd dla prostej odpowiedzi webhook mowy.Wersja API 2: Nie można przeanalizować łańcucha odpowiedzi JSON z błędem "INVALID_ARGUMENT": ": Nie można znaleźć pola. "

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

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

Próbowałem wysyłając następującą odpowiedź json jak na https://api.ai/docs/reference/agent/query#response dokumentu.

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

Co to jest, że brakuje mi ??

+0

Czy udało Ci się rozwiązać ten problem? Występuje ten sam błąd –

Odpowiedz

0

Wygląda na błąd w punkcie końcowym (heroku lub gdziekolwiek się znajduje kod serwera). Czy jesteś pewien, że jest poprawnie skonfigurowany i czy serwer jest włączony?

Używa słownika Pythona, aby wyszukać funkcję i zamapować ją na nazwę akcji. Następnie przechodzi przez powiązaną funkcję, która zwraca odpowiedź mowy.

@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" 
    } 
+0

Mam przychodzące usługi REST na wystąpienie ServiceNow. Przetestowałem to z innym API i jego działaniem. https://xxxxxxxx.service-now.com/api/now/google_assistance_api/post_city – Nilin

+0

Może to być twój kod serwera; Zaktualizowałem swoją oryginalną odpowiedź, aby opisać, co robię, aby zwrócić odpowiedź na mowę. –

0

Trochę się spóźniłem, ale ostatnio miałem ten sam problem podczas łączenia się z Asystentem Google. Po kilku drapaniach głowy zdałem sobie sprawę, że moje intencje powitania nie mają poprawnie skonfigurowanej odpowiedzi głosowej. Zauważ, że jeszcze nie używam webhooków. Ale błąd wskazuje, że brakuje odpowiedzi głosowej.

W moim przypadku rozwiązałem go, sprawdzając wszystkie moje zamiary i na dole każdego zamiaru, pisząc odpowiedź tekstową na karcie "Domyślne", a następnie przechodząc do karty Asystent Google i włączając opcję "Użyj odpowiedź z karty DEFAULT jako pierwszej odpowiedzi. " Potem moja aplikacja głosowa zaczęła działać.

0

Dla mnie to była jakoś zmiana w domyślnym Powitaniu. Miałem działanie, aby przejść i uzyskać nazwę użytkownika wiadomości powitalnej, ale to już minęło. Wstawiłem to ponownie i zaczęło działać ponownie

2

Miałem ten problem, ponieważ nie podałem żadnej nazwy akcji. Nadanie nazwy akcji rozwiązało to dla mnie.

2

W moim przypadku zapomnij włączyć "Użyj webhooka" w Spełnianiu i włącz "Zakończ rozmowę" w Asystencie Google.

0

W moim przypadku dostałem ten błąd po wdrożeniu przykładów "Zbuduj swój pierwszy agent/aplikację" zarówno dla Dialogflow, jak i AoG. Wybrałem opcję korzystania z Dialogflow v2 Beta, podczas gdy przykłady "pierwszej aplikacji/agenta" obecnie wszystkie wykorzystują interfejs API w wersji 1. Format webhook znacznie się zmienił w wersji 2.

Do czasu nadrobienia zaległości w dokumentach v2 polecam użyć przykładowego, ale działającego przykładu edytora Inline edytora Inline Editor jako szablonu, dostępnego pod Spełnieniem przez interfejs Dialogflow lub od https://github.com/dialogflow/fulfillment-webhook-nodejs.