api.aiからjsonレスポンスを取得するチャットボットを作成しようとしています。私は、jsonの応答の下からメッセージの一部を表示する必要があります。api.aiからjsonレスポンス配列からテキストを抽出する
{
"id": "ae66f8e4-a047-478a-8108-8b0147610f18",
"timestamp": "2017-09-28T05:02:03.552Z",
"lang": "en",
"result": {
"source": "agent",
"resolvedQuery": "hi",
"action": "",
"actionIncomplete": false,
"parameters": {},
"contexts": [],
"metadata": {
"intentId": "d2f3c8bd-fc1b-4b6b-9d3d-08b6be93364e",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "greetings"
},
"fulfillment": {
"speech": "Hi.Please enter your query.",
"messages": [
{
"type": 0,
"speech": "Hi.Please enter your query."
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success"
},
"sessionId": "saurabh"
}
は、以下のコードのサンプル片であり、spokenResponse変数にメッセージ部から音声を取得することができません。
function prepareResponse(val) {
var debugJSON = JSON.stringify(val,undefined, 2);
var spokenResponse = val.messages.speech;
respond(spokenResponse);
debugRespond(debugJSON);
}
私はエラーの下に取得する:しかし
script.js:33 Uncaught TypeError: Cannot read property 'speech' of undefined
at prepareResponse (script.js:33)
at Object.success (script.js:21)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
、私はそれが正しくフェッチ結果部からソースを取得しようとします。
var spokenResponse = val.result.source;
私はAjaxとJsonを初めて使っています。親切に助けてください。
「メッセージ」は、「フルフィルメント」のサブジェクトです。 val.fulfillment.message [0] .speechは値を受け入れるために正しいはずです。 – Auskennfuchs
'.messages'はあなたが探しているオブジェクトではない配列です.messages [0] .speech' maybe? –
私はvar spokenResponse = val.fulfillment.messages [0] .speech;を使ってみました。まだ同じエラー script.js:33キャッチされていないTypeError:未定義のプロパティ 'messages'を読み取ることができません –