[英]AWS SNS how to add line breaks in message
我正在尝试通过 CLI 以 json 格式发送 SNS 消息。
aws sns publish --cli-input-json "{\"TopicArn\":\"xxx\",\"Message\":\"first line\n second line\",\"Subject\":\"Empty subject\"}"
但是 \n 不起作用。 “\r\n”或“\n”都不是。 我认为该字符串已被 SNS 转义,因此 \n 不起作用。 有谁知道如何发送 2 行消息?(发送 2 条消息不是一种选择)感谢您的建议!
我认为\\\\n
实际上是您要查找的内容。 我刚刚通过 AWS SNS 向我的设备发送推送通知来测试它。
所以你的消息应该是这样的:
aws sns publish --cli-input-json "{\"TopicArn\":\"xxx\",\"Message\":\"first line\\nsecond line\",\"Subject\":\"Empty subject\"}"
请注意,您不应在换行符后留下空格,否则您的新行将从该空格开始。
aws sns 发布 --topic-arn "arn:aws:sns:us-west-2:0123456789012:my-topic" --message file://message.txt
message.txt 是包含要发布的消息的文本文件:
你好世界二线
将消息放在文本文件中允许您包含换行符。
这对我有用:
"first line second line"
四个反斜杠对我有用
将 Aws SNS 与 Firebase 结合使用
例如:backslashbackslashbackslashbackslash+n
我使用 NodeJs aws-sdk
使用电子邮件协议发布消息。 为了使异常正确显示,我需要同时替换\n
和\\n
,并安抚 windows 和 mac 客户端,使用\r\n
。
message.replace(/\n|\\n/g, '\r\n')
对于需要完整代码的任何人,这就是我处理打字稿错误的方式
public prepareMessage(header: string, error: any) {
const data = (error instanceof Error)
? JSON.stringify(error, Object.getOwnPropertyNames(error), 2)
: JSON.stringify(error, null, 2);
const replaceNewlines = (str: string) => str?.replace(/\n|\\n/g, '\r\n') || '';
return `${replaceNewlines(header)}\r\n${replaceNewlines(data)}`;
}
在测试了所有建议的答案之后,这就是我的案例(从 python lambda 函数运行,从 boto3 sns 客户端发布):
这创建了 2 个新行: message.replace('\n', '\r\n')
这创建了 1 个新行: message.replace('\n', '\r')
例子:
message = message.replace('\n', '\r').replace('\t', ' ')
# Sending the notification...
snsclient.publish(
TargetArn=SNS_EMAIL_ALERTS_ARN,
Subject=f'{filter_name} Alert: ({lambda_func_name[3]})',
Message=message
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.