0

使用 Slack,并尝试设置 Outgoing 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 脚本设置的 URL:

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 创建的工单'

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

4

1 回答 1

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 以查看它是否有效。

于 2016-03-31T10:54:07.243 回答