#javascript #twilio #urlencode #node-red #twilio-api
# #javascript #twilio #urlencode #узел -красный #twilio-api
Вопрос:
Я отправляю сообщения в Twilio API для Whatsapp, с ['Content-Type'] = 'application/x-www-form-urlencoded'
которым все работает отлично, за исключением того факта, что я, похоже, не могу экранировать большинство специальных символов в теле сообщения.
Cat amp; Dog: http://catdog.io
становится
Cat amp;amp; Dog: http:amp;#x2F;amp;#x2F;catdog.io
Ни encodeURIComponent, ни encodeURI не справляются с задачей, и в доставленном сообщении отображается как
Cat%20%26 Dog: http://catdog.io
и
Cat%20amp;amp; Dog: http:amp;#x2F;amp;#x2F;catdog.io
соответственно.
Что-нибудь, чего мне не хватает / что здесь совершенно неправильно?
Спасибо!
Комментарии:
1. Как вы на самом деле делаете запрос здесь? Можете ли вы поделиться кодом или своим узловым узлом?
2. Конечно! Добавил их к вопросу.
3. Я вижу, что вы передаете JSON, но запрос API ожидает
application/x-www-form-urlencoded
(вы уже правильно настроили заголовок content-type для этого). Интересно, если из-за того, что вы передаете данные через JSON, они каким-то образом экранируются дважды. Для справки, ваши амперсанды должны быть закодированы как&
, а ваши пробелы должны быть.
Ответ №1:
Если вы работаете с node.js , вы можете использовать npm querystring нажмите, чтобы увидеть
Комментарии:
1. Спасибо, Мариус, попробую это. В настоящее время я нахожусь на Node-Red, но попытаюсь установить там строку запроса с помощью npm. Чего я пока не понимаю, так это того, как, например, должен выглядеть экранированный amp; . Кстати, я передаю соответствующие строки внутри объекта JSON, но это также не вопрос экранирования JSON.
Ответ №2:
РЕШЕНО: в узле шаблона Node-Red необходимо поместить полезную нагрузку в тройные скобки, а не в двойные, как это:
{ "To": "whatsapp: 4567890123", "From": "whatsapp: 1234567890", "Body":"{{{payload}}}"}