Я хотел бы знать, как я могу отправить сообщение на разные номера. Я имею в виду, отправлять SMS в качестве уведомлений на разные номера в одном и том же массиве строк. Что-то вроде:
body: "Hello Word!"
number:["+2222", "+2222", "+2222"]
Возможно ли это сделать с помощью twilio?
Должно быть возможно, если можно с почтой, то как это делается с телефонными номерами?
Я использую nodeJs и имел что-то вроде:
обновленный код
const sendBulkMessages = async(req, res) => {
let messageBody = req.body;
let numberList = req.body;
var numbers = [];
for (i = 0; i < numberList.length; i++) {
numbers.push(JSON.stringify({
binding_type: 'sms',
address: numberList[i]
}))
}
const notificationOpts = {
toBinding: numbers,
body: messageBody,
};
const response = await client.notify
.services(SERVICE_SID)
.notifications.create(notificationOpts)
.then(notification => console.info(notification.sid))
.catch(error => console.info(error));
console.info(response);
res.json({
msg: 'Mensaje enviado correctamente'
});
}
Но мне пишет ошибку, что я не отправил тело, когда явно делаю.
Кто-нибудь может мне помочь? Пожалуйста
@Filnash Я обновил код (в запросе), теперь я передаю его в теле запроса. Я не знаю, что происходит, но он продолжает выдавать мне ту же ошибку «Требуется тело сообщения». Я уже читал документацию, я не нашел ничего, что помогло. Я настроил службу сообщений и т. д. Я действительно потерялся.
req.body
— это все тело запроса, так что это не будет текстовое сообщение. Какой запрос вы отправляете на эту конечную точку?
Я хочу сделать пост, который получает массив строк по запросу, который получает номера телефонов. И тело сообщения. Это то, что я действительно хочу сделать, отправить одно и то же сообщение на разные номера. Например: post = { number: ['+222', '+222'], body: 'Hello'} Можно ли это сделать с помощью twilio?
Это может быть интересно - twilio.com/docs/runtime/quickstart/serverless-functions-notify
Привет @Alan, я знаю, что это было давно, но у меня есть вопрос, как я могу добавить заголовок отправителю уведомления? Я имею в виду, когда появляется смс-уведомление, не говорите, что его отправляет +64xxx, а появляется имя. Как дать имя номеру, назначенному twilio для смс-уведомлений?
Похоже, вы пытаетесь отправить эти сообщения через почтовый запрос в приложение Express. Проблема в том, что вы неправильно извлекаете данные из тела запроса.
Если ваше тело запроса POST
представляет собой объект JSON, который выглядит следующим образом:
{
"toBinding": ['+222', '+222'],
"body": 'Hello'
}
Затем вам нужно будет убедиться, что вы анализируете тело запроса как JSON, обычно добавляя ПО промежуточного слоя JSON экспресс-парсера тела, а затем извлекаете данные из тела запроса следующим образом:
let messageBody = req.body.body;
let numberList = req.body.toBinding;
Вот полный скрипт:
const sendBulkMessages = async(req, res) => {
let messageBody = req.body.body;
let numberList = req.body.toBinding;
var numbers = [];
for (i = 0; i < numberList.length; i++) {
numbers.push(JSON.stringify({
binding_type: 'sms',
address: numberList[i]
}))
}
const notificationOpts = {
toBinding: numbers,
body: messageBody,
};
const response = await client.notify
.services(SERVICE_SID)
.notifications.create(notificationOpts)
.then(notification => console.info(notification.sid))
.catch(error => console.info(error));
console.info(response);
res.json({
msg: 'Mensaje enviado correctamente'
});
}
Проверив ваше репо, оказалось, что ваша функция на самом деле была правильной, но то, как вы экспортировали и запрашивали функции, было нет.
Вы не можете экспортировать такие функции:
module.exports = sendMessage, sendMessageWhatsapp, sendBulkMessages;
Это экспортирует только первую функцию, остальные игнорируются. Поэтому я обновил его до этого:
module.exports = { sendMessage, sendMessageWhatsapp, sendBulkMessages };
Это экспортирует объект, содержащий три функции. Затем, когда вам нужны функции, вы не можете этого сделать:
const sendMessage = require('./message');
const sendMessageWhatsapp = require('./message');
const sendBulkMessages = require('./message');
Для этого требуется одна и та же функция три раза. С приведенным выше обновлением теперь вы можете сделать это:
const {
sendMessage,
sendBulkMessages,
sendMessageWhatsapp,
} = require("./message");
Я не понимаю, хотя я следовал вашему ответу, и ваше объяснение продолжает давать мне ту же ошибку. И я даже пробовал другие способы и все равно то же самое. Я загрузил репозиторий, возможно вы видите что-то, чего я не вижу, потому что я действительно не могу понять, почему это не работает, github.com/IzliaB/SendSMSTwilio/blob/main/server/message.js
Я не вижу, куда вы отправляете запросы на конечную точку /sendVarios
. Это где-то?
Похоже, вы включили идентификатор учетной записи и токен аутентификации в это репо, что представляет угрозу безопасности вашей учетной записи. Вы должны следуйте этому процессу, чтобы изменить свой токен авторизации сейчас.
ой! я не заметил
Хорошая работа по удалению его из репо, но не забудьте также изменить свой токен авторизации. Теперь, что касается вашей проблемы, как вы отправляете запрос на серверную часть для отправки нескольких сообщений?
Кажется, я не понял вопроса. Но это происходит примерно так: в app.js вызовите сообщение Routes.js "app.use('/', require('./messageRoute'));" Что, в свою очередь, вызывает обработчик sendBulkMessages в файле message.js, который выполняет публикацию. В почтальоне я делаю запрос к конечной точке.
Хорошо, как выглядит ваш запрос в Postman?
Это как: { "body": "Testing", "toBinding": ["+50489854230", "+50488287591"] }
Хорошо, попробуйте const messageBody = req.body.body;
и const numberList = req.body.toBinding;
. Как бы вы ни назвали свойство в своем запросе, вы получите к нему доступ из req.body
. Вы также можете попробовать зарегистрировать req.body
, чтобы увидеть, что входит в функцию, и зарегистрировать messageBody
и numberList
, чтобы убедиться, что они установлены правильно.
Спасибо за вашего пациента. После предложенных изменений вот такой получился результат, прикрепляю ссылку со скриншотом ошибки, которую он мне выдает: github.com/IzliaB/SendSMSTwilio/blob/main/…. Это похоже на то, что я хочу сделать, на самом деле не определено в API twilio. Я взял учебник о том, как это сделать, с этой страницы: twilio.com/blog/2017/12/send-bulk-sms-twilio-node-js.html
Давайте продолжить обсуждение в чате.
Я вижу, что у вас есть аргумент
messageBody
, который передается в вашу функциюsendBulkMessages
, но где он вызывается? Возможно ли, чтоmessageBody
не заполнен правильно? В противном случае ваш код выглядит нормально.