繁体   English   中英

AWS SNS 如何在消息中添加换行符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM