Как отправить смс с помощью Twilio через веб-интерфейс с реагировать? - PullRequest
0 голосов
/ 05 октября 2018

Я прочитал документацию по Twilio и не могу найти способ отправить простое SMS с внешнего интерфейса с помощью JavaScript / React.

Документация по Twilio просто показывает, как это сделать с помощью Node.js.(на стороне сервера).

На самом деле, я нашел документацию немного неловкой, потому что они не объясняют, как это сделать, используя самый распространенный язык программирования в Интернете.

Я использую почтальон, и он отлично работает, но на моем коде реакции нет.Код ниже был экспортирован из Почтальона:

var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.twilio.com/2010-04-01/Accounts/AC62761f2bae5c5659cc5eb65d42e5d57e/Messages.json",
    "method": "POST",
    "headers": {
            "Content-Type": "application/x-www-form-urlencoded",
            "Authorization": "Basic hashedAuthToken",
            "Cache-Control": "no-cache",
            "Postman-Token": "0s41f5ac-2630-40c4-8041-1e5ee513f20d"
    },
    "data": {
            "To": "+353838173123",
            "From": "+18634000432",
            "MessagingServiceSid": "MG3d622e63a343e11a2032b1414560f227",
            "Body": "Test, hi"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});

PS: вышеуказанные токены были изменены.Он не будет работать, если вы не используете свои собственные учетные данные.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Евангелист разработчиков Twilio здесь.

Существует огромная проблема с тем, что вы пытаетесь предпринять здесь.

Отправка учетных данных Twilio в интерфейс (илив вопросе / ответе переполнения стека) оставляет их открытыми для всех, кто читает ваш исходный код и ворует их.Злонамеренный злоумышленник может получить эти учетные данные и использовать их для своей учетной записи.

Я рекомендую вам обновить свой токен авторизации в консоли Twilio .Вы должны считать их скомпрометированными.

Что вам нужно 1014 * сделать, это создать службу отправки SMS на вашем собственном сервере, а затем вызвать эту службу из вашего интерфейса React.Есть сообщение в блоге о отправке SMS с Twilio на React , которое стоит прочитать, и я постараюсь собрать что-то вместе, чтобы показать это тоже.

Обновление:

Я написал сообщение в блоге, объясняющее , как отправить SMS с React и Twilio .Важно, чтобы вы выполняли вызов API на своем сервере (в сообщении в блоге это сервер Node.js / Express, но вы можете использовать любую серверную технологию, какую захотите).Затем вы отправляете сообщение из вашего приложения React на сервер, используя fetch (или axios или XMLHttpRequest, если хотите).

0 голосов
/ 05 октября 2018

Вы можете использовать метод ниже, чтобы сделать это легко.

sendSMSTwilio(message) {
    const url = Config.sms.url;

    const accountSid = Config.sms.accoundId;
    const authToken = Config.sms.authToken;
    const auth = 'Basic ' + new Buffer(Config.sms.accountSid + ':' + Config.sms.authToken).toString('base64');

    const details = {
        To: message.to,
        From: message.from,
        MessagingServiceSid: Config.sms.serviceSid,
        Body: message.text
    };

    const formBody = [];
    for (var property in details) {
        const encodedKey = encodeURIComponent(property);
        const encodedValue = encodeURIComponent(details[property]);
        formBody.push(encodedKey + '=' + encodedValue);
    }
    const body = formBody.join('&');

    const options = {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
            Authorization: auth
        },
        body
    };

    return new Promise((resolve, reject) => {
        return fetch(url, options)
            .then((response) => {
              return resolve(response);
            })
            .then((responseJson) => {
              return resolve(responseJson);
            })
            .catch((error) => {
              return reject(error);
            });
        });
  }

Вы можете позвонить и получить ответ на обещание, как это:

this.sendSMSTwilio()
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.log('Error SMS sender', err);
  });
...