Прерывание строки в AWS SNS через Api Gateway и Java

#java #amazon-web-services #amazon-sns

#java #amazon-веб-сервисы #amazon-sns

Вопрос:

Я запускаю AWS SNS через шлюз API.

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

Этот JSONObject отправляется на шлюз api в виде ByteArrayInputStream через AWS SDK для Java v1.
В тексте есть «n» для создания разрывов строк. Однако в sms нет новой строки, оно просто печатает n.

В шлюзе Api сообщение извлекается следующим образом: method.request.body.message_text

Как мне настроить переменную MessageText для печати новых строк в SMS? Я попытался заменить его на n или \n или \\n.. Также пробовал ASCII, не сработало.

Призыв

Поскольку это довольно сложная программа, я не могу показать все это. Он запускается через Insomnia с помощью строки в формате Json, подобной этой: Бессонница

Это должно быть двойное отклонение n, потому что именно так и нужно коду. Интеграция с aws является дополнительным поставщиком, поэтому она должна соответствовать уже существующим фреймам. Объект json выглядит следующим образом перед выполнением. Объект Json

Итак, мне нужно найти способ манипулировать строкой, которая входит в объект. Но я не знаю как.

ПРАВКА 3: удаление предыдущих правок, поскольку они не были полезными и не были нацелены на проблему, как я теперь знаю.

Наконец-то проблема решена. Это проблема в API-шлюзе. Объект достигает шлюза просто отлично, с помощью n. Который будет работать в службе SNS. Но для запуска службы SNS все это собирается в один URL, который преобразует n в n

Перед преобразованием: введите описание изображения здесь

URL: введите описание изображения здесь

Итак, проблема в кодировке URL..

Комментарии:

1. Вы уверены, что у вас есть настоящие новые строки в тексте, а не косые черты, за которыми следует n? Можете ли вы показать пример того, как вы заполняете messageText (код, о котором идет речь, пожалуйста, не комментируйте).

2. Конечно, вы правы. «символы новой строки n» вводит в заблуждение. Это просто n

3. Опять же, я спрашиваю: какие там фактические символы? Как вы оцениваете это значение? За символом u000a или u005C следует u006E ?

4. Отредактировал ответ для вас. Надеюсь, это поможет прояснить ситуацию.

5. Не слишком ли много просить вас напечатать отдельные символы переменной messageText в вашей программе и показать нам, что это такое? Не объект JSON, не сообщение, которое вы отправляете в Insomnia, а фактическую переменную, которую вы используете в этой программе для заполнения сообщения? Каковы значения символов в Юникоде?

Ответ №1:

Благодаря поддержке AWS я теперь могу отправлять SMS с разрывами строк через API gateway. Неправильно использовать параметры запроса URL. Я удалил их все

Мне нужен был один HTTP-заголовок: Content-Type: ‘application /x-www-form-urlencoded’

Затем я использовал шаблон обмена сообщениями, подобный этому, с проходом: никогда:

 #set($message = $input.path('$.message_text'))
#set($phoneNumber = $input.path('$.phone_number'))
Action=Publishamp;PhoneNumber=$util.urlEncode($phoneNumber)amp;Message=$util.urlEncode($message)amp;MessageAttributes.entry.1.Name=AWS.SNS.SMS.SenderIDamp;MessageAttributes.entry.1.Value.DataType=Stringamp;MessageAttributes.entry.1.Value.StringValue=Alias
  

Наличие моего объекта JSON в запросе, подобном этому:

 {
"phone_number": " 4912345678",
"message_text": "BreaknHere",
"sender_id":"Alias"
}
  

Отлично работает с разрывом строки в SMS