2

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

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

无论我尝试什么(我什至完全复制了韦斯利的例子,但没有成功)

也许我做错了什么,但在这一点上我不知道是什么。任何帮助将非常感激!

省略有关从电子邮件线程获取详细信息的所有额外内容,因为我什至无法让 GScript 发布“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."
          }
        ]
      }
    ]
  }
}
4

1 回答 1

1

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

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

更改参数后的hello bot

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

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

参考

于 2020-02-17T12:29:50.633 回答