Мы используем лямбда-функцию (узел js) для отправки сообщения в наш слабый канал, который работает. Однако, когда aws получает новую строку в формате \n
. Затем JSON.stringify кодирует это в \\n
- и сообщение в slack похоже на "this is \n a new line"
. Я уже пытался заменить \\n
на \n
, но это не сработает (нет сообщений в Slack). Если я проверяю вывод консоли, то он:
{"text":"\"This is a \
new line\""}
Так что он действительно заменяет его новой строкой. Но на самом деле мне нужна замена с "This is a \\n new line"
на "This is a \n newline"
, где \n
рассматривается как текст, поэтому API slack знает об этом ... ??
req.write( JSON.stringify({text: JSON.stringify(rec.Sns.Message, null, ' ')}).replace('\\n', '\n') );
По запросуинформация - это веб-крючок в Slack, да:)
Если честно, я немного растерялся, так как понятия не имею, как отлаживать напрямую в AWS. Я просто предполагаю, что у меня есть что-то вроде этого:
console.log( JSON.stringify({text: JSON.stringify("Thats a new \n line", null, ' ')}) );
Так что я получаю \\n
в консоли. Затем я попытался
console.log( JSON.stringify({text: JSON.stringify("Thats a new \n line", null, ' ')}).replace("\\n", "\n") );
, который на самом деле работает, но затем вывод консоли
Thats a new
line
, что имеет смысл, но нарушает мой вызов API. Поэтому я понятия не имею, как в итоге получить кодировку This is a new \n line
.
Может быть, имеет смысл опубликовать полную лямбда-функцию:
console.log('Loading function');
const https = require('https');
const url = require('url');
const slack_url = 'https://hooks.slack.cosm/etc';
const slack_req_opts = url.parse(slack_url);
slack_req_opts.method = 'POST';
slack_req_opts.headers = {'Content-Type': 'application/json'};
exports.handler = function(event, context) {
(event.Records || []).forEach(function (rec) {
if (rec.Sns) {
var req = https.request(slack_req_opts, function (res) {
if (res.statusCode === 200) {
context.succeed('sns posted to slack');
} else {
context.fail('status code: ' + res.statusCode);
}
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
context.fail(e.message);
});
req.write( JSON.stringify({text: JSON.stringify(rec.Sns.Message, null, ' ')}) );
req.end();
}
});
};