【问题标题】:Linebreak in AWS SNS through Api Gateway and Java通过 Api Gateway 和 Java 在 AWS SNS 中进行换行
【发布时间】:2020-09-08 12:55:50
【问题描述】:

我正在通过 API Gateway 触发 AWS SNS。

JSONObject requestBody = new JSONObject();
requestBody.put("phone_number", receiverNumber);
requestBody.put("sender_id", senderAlias);
requestBody.put("message_text", messageText);

此 JSONObject 正在通过 AWS SDK for Java v1 作为 ByteArrayInputStream 发送到 api 网关。 文本中有“\n”,用于创建换行符。然而,短信在那里没有新行,它只是打印\n。

在 Api Gateway 中,消息是这样提取的:method.request.body.message_text

如何设置 messageText 变量以在 SMS 中打印新行?我尝试将其替换为 \n 或 \\n 或 \\\\n.. 也尝试了 ASCII,但不起作用。

调用

由于这是一个相当复杂的程序,我无法全部展示。它是通过 Insomnia 使用 Json 格式的字符串触发的,如下所示:

它必须是双反斜线 n,因为这正是代码需要它的方式。 aws 集成是一个额外的提供程序,因此它必须适合现有的框架。 json 对象在执行之前看起来像这样。

所以我需要找到一种方法来操作对象中的字符串。但我不知道怎么做。

编辑 3: 删除以前的编辑,因为它们没有帮助,也没有针对我现在知道的问题。

终于解决了这个问题。这是 API 网关中的一个问题。对象可以很好地到达网关,带有 \n。这将在 SNS 服务中工作。但是要触发 SNS 服务,它全部进入一个 URL,它将 \n 转换为 %5Cn

改造前:

网址:

所以问题出在 URL 编码中..

【问题讨论】:

  • 您确定文本中有实际的换行符,而不是后跟 n 的大斜杠吗?你能举例说明你如何填写messageText(有问题的代码,请不要评论)。
  • 当然,你是对的。 “换行符\n”具有误导性。只是\n
  • 再次,我问:那里的实际字符是什么?你如何把价值放进去?字符是\u000a 还是\u005C 后跟\u006E
  • 为您编辑了答案。希望这有助于澄清。
  • 要求您在程序中打印变量messageText 的各个字符并向我们展示它们是什么是不是太过分了?不是 JSON 对象,不是您在 Insomnia 中发送的消息,不是您在该程序中用于填充消息的实际变量?字符的 unicode 值是多少?

标签: java amazon-web-services amazon-sns


【解决方案1】:

感谢 AWS 支持,我现在可以通过 api 网关发送带有换行符的 SMS。 使用 URL 查询参数是错误的。我全部删除了

我需要一个 HTTP 标头: 内容类型:'application/x-www-form-urlencoded'

然后我使用了这样的消息模板,通过:从不:

#set($message = $input.path('$.message_text'))
#set($phoneNumber = $input.path('$.phone_number'))
Action=Publish&PhoneNumber=$util.urlEncode($phoneNumber)&Message=$util.urlEncode($message)&MessageAttributes.entry.1.Name=AWS.SNS.SMS.SenderID&MessageAttributes.entry.1.Value.DataType=String&MessageAttributes.entry.1.Value.StringValue=Alias

在请求中包含我的 JSON 对象,如下所示:

{
"phone_number": "+4912345678",
"message_text": "Break\nHere",
"sender_id":"Alias"
}

在 SMS 中使用换行符可以正常工作

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2018-03-21
    • 2020-08-30
    • 2016-05-18
    • 1970-01-01
    • 2021-07-24
    • 2022-01-08
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多