Опубликовать в Google Hangouts с помощью Webhook и GScript - PullRequest
2 голосов
/ 14 февраля 2020

Сейчас мы используем веб-крючок Slack для отправки важных данных из учетной записи электронной почты на наш канал Slack. Руководство хочет, чтобы мы переключились на Hangouts и сохранили аналогичные функции с помощью автоматических оповещений. Я попытался адаптировать мой слабый gscript безуспешно. Я даже пытался максимально приблизить сценарий, чтобы исключить возможные ошибки. Я хочу использовать webhook, а не API, потому что должно быть проще. Мне нужен только asyn c обмен сообщениями без ответа бота.

Я использовал их python quickstart (который работает хорошо!), Но мой скрипт получает контент из электронной почты а затем отправив его на веб-крючок. 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."
          }
        ]
      }
    ]
  }
}

1 Ответ

1 голос
/ 17 февраля 2020

Для правильной отправки options необходимо использовать contentType вместо ContentType.

После изменения параметра вы можете видеть, что сообщение отправляется соответствующим образом.

hello bot after changing the parameter

Вы также можете проверить этот пример, чтобы увидеть точные имена для параметров options, которые вы отправляете для запроса.

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

Ссылка

...