我们正在使用lambda函数(节点js)将消息发送到有效的松弛通道中。但是,当aws获得新行时,其格式为\n
。 JSON.stringify然后将其编码为\\n
-松弛的消息类似于"this is \n a new line"
。我已经尝试将\\n
替换为\n
,但这将无法正常工作(没有msg发布到松弛状态)。如果我正在检查控制台输出,则:
{"text":"\"This is a \
new line\""}
因此它实际上用新行替换。但是我真正需要的是将"This is a \\n new line"
替换为"This is a \n newline"
,其中\n
被视为文本,因此slack的API知道了... ??
req.write( JSON.stringify({text: JSON.stringify(rec.Sns.Message, null, ' ')}).replace('\\n', '\n') );
您未说,所以我假设您正在将消息发送到传入的Webhook。
发送到Slack的正确JSON是这样:
{"text": "\"Hi there\nWhat is going on here?\""}
您从AWS那里获得的文本字符串应该包含EOL字符\n
(一个字符),而不是字符\
n
(两个字符)。如果您获取的时间晚于您想要首先将其解码为普通文本字符串的时间。
我需要再次猜测,但是来自AWS的字符串可能已经被JSON编码了。在这种情况下,您想先对来自AWS的字符串进行JSON解码,然后构造对Slack的请求,然后对整个字符串进行JSON编码,然后再将其发送到Slack。
顺便说一句。手动替换字符串的部分应该是最后的选择,例如当您的编程语言不支持特定的编码时。在您的情况下,不需要它。