Google Apps 脚本 - 无法从 JSON 数据中查询 属性
Google Apps Script - Unable to query property from JSON data
dialogflow 发送以下内容:
{
"responseId": "XXX-YYY-ZZZ",
"queryResult": {
"queryText": "random text",
"parameters": {
"command": "do it"
},
"allRequiredParamsPresent": true,
"fulfillmentText": "Sorry, can't understand it.",
"fulfillmentMessages": [
{
"text": {
"text": [
"Sorry, can't understand it."
]
}
}
],
"outputContexts": [
{
"name": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz/contexts/__system_counters__",
"parameters": {
"no-input": 0,
"no-match": 0,
"command": "do it",
"command.original": "do it"
}
}
],
"intent": {
"name": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz",
"displayName": "testCommands"
},
"intentDetectionConfidence": 1,
"languageCode": "en"
},
"originalDetectIntentRequest": {
"payload": {}
},
"session": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz"
}
TypeError: Cannot read property 'parameters' of undefined (line 5, file "this-file")
目标是查询command
字段。这是当前代码:
function doPost(e) {
//EXTRACTION
var dialogflow = e.postData.contents;
var desiredField = dialogflow.queryResult.parameters.command;
}
但随后抛出此错误:
TypeError: Cannot read property 'parameters' of undefined (line 4, file "this-file")
我尝试了 JSON.stringify(e)
和 e.postData.contents
,但仍然无法正常工作。
关于 doPost()
https://developers.google.com/apps-script/guides/web 的文档
WebhookRequest
由 dialogflow https://cloud.google.com/dialogflow/docs/fulfillment-webhook#webhook_request
发送
提前致谢!
在 doPost(e)
处,e.postData.contents
未被解析为 JSON 对象。我认为您的错误消息是由于此造成的。那么使用 JSON.parse()
进行以下修改怎么样?
修改后的脚本:
function doPost(e) {
//EXTRACTION
var dialogflow = JSON.parse(e.postData.contents); // Modified
var desiredField = dialogflow.queryResult.parameters.command;
}
参考:
dialogflow 发送以下内容:
{
"responseId": "XXX-YYY-ZZZ",
"queryResult": {
"queryText": "random text",
"parameters": {
"command": "do it"
},
"allRequiredParamsPresent": true,
"fulfillmentText": "Sorry, can't understand it.",
"fulfillmentMessages": [
{
"text": {
"text": [
"Sorry, can't understand it."
]
}
}
],
"outputContexts": [
{
"name": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz/contexts/__system_counters__",
"parameters": {
"no-input": 0,
"no-match": 0,
"command": "do it",
"command.original": "do it"
}
}
],
"intent": {
"name": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz",
"displayName": "testCommands"
},
"intentDetectionConfidence": 1,
"languageCode": "en"
},
"originalDetectIntentRequest": {
"payload": {}
},
"session": "projects/xxx-vyyy/agent/sessions/xxx-yyy-zzz"
}
TypeError: Cannot read property 'parameters' of undefined (line 5, file "this-file")
目标是查询command
字段。这是当前代码:
function doPost(e) {
//EXTRACTION
var dialogflow = e.postData.contents;
var desiredField = dialogflow.queryResult.parameters.command;
}
但随后抛出此错误:
TypeError: Cannot read property 'parameters' of undefined (line 4, file "this-file")
我尝试了 JSON.stringify(e)
和 e.postData.contents
,但仍然无法正常工作。
关于 doPost()
https://developers.google.com/apps-script/guides/web 的文档
WebhookRequest
由 dialogflow https://cloud.google.com/dialogflow/docs/fulfillment-webhook#webhook_request
提前致谢!
在 doPost(e)
处,e.postData.contents
未被解析为 JSON 对象。我认为您的错误消息是由于此造成的。那么使用 JSON.parse()
进行以下修改怎么样?
修改后的脚本:
function doPost(e) {
//EXTRACTION
var dialogflow = JSON.parse(e.postData.contents); // Modified
var desiredField = dialogflow.queryResult.parameters.command;
}