通过Slack Webhook的Google Scripts发送电子邮件

时间:2016-02-11 22:01:58

标签: javascript email google-apps-script slack

使用Slack,并尝试设置外发Webhook,以便在用户输入特定关键字时发送电子邮件。 Slack以下列格式发送POST:

token=XXXXXXXXXXXXXXXXXX
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
timestamp=1355517523.000005
user_id=U2147483697
user_name=Steve
text=atsk: ticket#; ticket details
trigger_word=atsk:

它将此POST发送到使用此Google脚本设置的网址:

function autoMail(sendmail) {
  var params = sendmail.parameters;

  if (params.token == "XXXXXXXXXXXXXXXXXX") {
    var textRaw = String(params.text).replace(/^\s*atsk\s*:*\s*/gi,'');
    var text = textRaw.split(/\s*;\s*/g);
    var email = "example@gmail.com";
    var subject = text[0];
    var message = text + "Ticket created by Autoslack Bot";
    MailApp.sendEmail(email, subject, message);

  } else {
    return;
  }
}

哪个版本是作为Web应用程序发布的,并且设置为'任何人,甚至是匿名的'并被授予使用我的Google电子邮件的权限。

所以,如果有人输入' atsk:T12345678;用户有问题。'它应该发送电子邮件给' example@gmail.com'与主题' T12345678'和消息' T12345678;用户有问题。车票由Autoslack Bot'

创建

我认为这是正确设置的,但我无法收到要发送到指定地址的电子邮件。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我建议创建一个测试函数来自行检查Apps脚本部分:

function testAutoMail() {
  var parameters={};
  parameters['text']='atsk: T12345678; User has an issue.';
  parameters['token']="XXXXXXXXXXXXXXXXXX";
  var arg = {};
  arg['parameters']=parameters;
  autoMail(arg);
}

function autoMail(sendmail) {
  var params = sendmail.parameters;

  if (params.token == "XXXXXXXXXXXXXXXXXX") {
    var textRaw = String(params.text).replace(/^\s*atsk\s*:*\s*/gi,'');
    var text = textRaw.split(/\s*;\s*/g);
    var email = "example@gmail.com";
    var subject = text[0];
    var message = text + "Ticket created by Autoslack Bot";
    Logger.log('MailApp.sendEmail('+email+', '+subject+', '+message+')');

  } else {
    return;
  }
}

查看Logger以查看它是否有效。