Post 到 Google 使用 Webhook 和 GScript 的视频群聊

Post to Google Hangouts with Webhook and GScript

现在我们使用 Slack webhook 将重要数据从电子邮件帐户发送到我们的 Slack 频道。管理层希望我们切换到 Hangouts 并保留类似的自动提醒功能。我尝试调整我的 slack gscript 但没有成功。我什至尝试尽可能简化脚本以消除潜在的错误。我想使用 webhook 而不是 API,因为它 应该 更容易。我只需要异步消息而不需要机器人回复。

我已经使用了他们的 python quickstart(效果很好!),但我的脚本从电子邮件中获取内容,然后将其发送到 webhook。 GScript 使这很容易(至少使用 Slack 很容易)。

无论我怎么尝试(我什至完全复制了 Wesley's example 但没有成功)

也许我做错了什么,但此时我无法弄清楚是什么。任何帮助将不胜感激!

省略所有关于从电子邮件线程获取详细信息的额外内容,因为我什至无法将 GScript 获取到 post a "Hello World"(仅 python)

var data = {
  text: "hello"
};

var payload = JSON.stringify(data);

var options = {
  method: "POST",
  ContentType: "application/json; charset=UTF-8",
  payload: payload,
  muteHttpExceptions: true
};

var webhook = 'https://chat.googleapis.com/v1/spaces/{space}/messages?key={key}&token={token}';
var response = UrlFetchApp.fetch(webhook, options);
Logger.log(response.getContentText());
[20-02-14 12:15:10:615 CST] {
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"{\"text\":\"hello\"}\": Cannot bind query parameter. Field '{\"text\":\"hello\"}' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"{\"text\":\"hello\"}\": Cannot bind query parameter. Field '{\"text\":\"hello\"}' could not be found in request message."
          }
        ]
      }
    ]
  }
}

为了能够正确发送 options,您应该使用 contentType 而不是 ContentType

更改参数后,您可以看到消息已相应发送。

您还可以检查此示例以查看您为请求发送的options参数的确切名称

UrlFetchApp.fetch(url, {
    method: 'post',
    headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
    contentType: 'application/json',
    payload: JSON.stringify(message),
  });

参考