私は得ています」APIバージョン2:「INVALID_ARGUMENT」エラーでJSON応答文字列の解析に失敗しました:「:フィールドが見つかりません。」.'単純な音声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
}
}
私が行方不明になっているのは何ですか?
アクション名を付けていなかったため、この問題が発生しました。アクション名を付けることで、これは解決しました。
私の場合、Fulfillmentで「Usewebhook」を有効にし、Googleアシスタントで「Endconversation」を有効にするのを忘れています。
エンドポイント(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"
}
私の場合、DialogflowとAoGの両方に「Buildyour first agent/app」の例をデプロイした後、このエラーが発生しました。私はDialogflowv2 Betaを使用することを選択しましたが、「最初のアプリ/エージェント」のフルフィルメントの例は現在すべてv1APIを使用しています。 Webhook形式はv2で大幅に変更されました。
V2のドキュメントが追いつくまで、詳細で機能するインラインエディターフルフィルメントWebhookの例をテンプレートとして使用することをお勧めします。これは、FulfillmentからDialogflow UIを介して、または https://github.com/dialogflow/fulfillment)からアクセスできます。 -webhook-nodejs 。
少し遅れましたが、最近Googleアシスタントに接続しているときに同じ問題が発生しました。頭をかいた後、ウェルカムインテントに適切に構成された音声応答がないことに気づきました。私はまだWebhookを使用していないことに注意してください。ただし、このエラーは、音声応答が欠落していることを示しています。
私の場合、すべてのインテントを確認し、各インテントの下部で[デフォルト]タブにテキスト応答を書き込んでから、[Googleアシスタント]タブに移動し、[デフォルトからの応答を使用する]を有効にすることで解決しました。最初の応答としてタブ。」その後、私の音声アプリが動作し始めました。
私にとっては、デフォルトのウェルカムインテントで何らかの形で変更されたアクションでした。ウェルカムメッセージのユーザー名を取得するためのアクションがありましたが、それはなくなりました。私はそれを元に戻しました、そしてそれは再び働き始めました