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

参考: