Отправка сообщения в Slack с помощью лямбда-функции NodeJS - переменная данных не отображается - PullRequest
0 голосов
/ 08 апреля 2019

В Node реализована лямбда-функция AWS, которая отправляет сообщение на канал Slack. Я создал SlackApp, с включенной функцией входящего webhook. Я отправляю сообщение на крючок через https. Лямбда вызывает следующую функцию, которая форматирует сообщение:

function slackConvertFromSNSMessage(sns_event) {
    let slack_message;
    let slack_message_text;
    const slack_message_user = 'foo';
    const slack_use_markdown = true;
    const sns_message_raw = sns_event.Records[0].Sns.Message;
    const sns_message_date_epoc = new Date(sns_message_raw.StateChangeTime).getTime();

    slack_message_text = `
*Alert:* One or more errors were report by ${sns_message_raw.AlarmName}
*Date:* <!date^${sns_message_date_epoc}^{date_num} at {time_secs}^|${sns_message_raw.StateChangeTime}>
*Region:* ${sns_message_raw.Region}
*Queue:* ${sns_message_raw.Trigger.Dimensions[0].value}
`
// "*bold* `code` _italic_ ~strike~"

    slack_message = {
        text: slack_message_text,
        username: slack_message_user,
        mrkdwn: slack_use_markdown,
    }

    return JSON.stringify(slack_message);
}

Сообщение в слабом виде выглядит следующим образом:

enter image description here

Переменная не отображается. Я просто вижу утверждение, которое передаю слабому API. Я ожидаю увидеть указанную дату в формате местного часового пояса пользователя.

ОБНОВЛЕНИЕ: Был хороший комментарий, заметивший морковку перед трубкой в ​​декларации. Я удалил это. Я все еще получаю проблему, но эта строка в коде теперь выглядит следующим образом:

*Date:* <!date^${sns_message_date_epoc}^{date_num} at {time_secs}^|${sns_message_raw.StateChangeTime}>

1 Ответ

1 голос
/ 08 апреля 2019

Если вы не укажете optional_link, вы должны удалить последний разделитель ^, то есть ^ прямо перед |. Их документация, кажется, не указывает это, но я могу воспроизвести проблему в Message Builder .

Редактировать: И Slack ожидает эпоху в секундах, в то время как getTime() возвращает эпоху в миллисекундах.

...