Angular 7 & Twilio "Требуется номер телефона" - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать HTTP-запрос на угловом языке для отправки текстового сообщения с использованием Twilio.Я могу сделать это в почтальоне, используя данные формы для тела тело почтальона

, однако, когда я пытаюсь добавить данные формы в http-запрос в angular, кажется, что Twilio api isn 'не в состоянии правильно прочитать имена атрибутов.Все мои поиски говорят мне, что мне просто нужно добавить их в объект formData и передать его в качестве второго параметра в сообщении, но он не работает.

Я знаю, что мой запрос достигает нужной конечной точки, потому что яранее получал 401 несанкционированный ответ, но исправил это с помощью btoa ().

Вот код

sendSMS(sendTo: string){

    //actual phone numbers replaced (they worked with postman)

    const to: string = '+15555555555';
    const from: string = '+15555555555';
    const body: string = 'Image Uploaded';

    const username: string = 'username';
    const password: string = 'password';

    var form = new FormData();
    form.append('To', btoa(to));
    form.append('From', btoa(from));
    form.append('Body', btoa(body));

    const headers = new Headers({});
    headers.append("Authorization", "Basic " + btoa(username + ":" + password)); 
    headers.append("Content-Type", "multipart/form-data");

    const options = new RequestOptions({headers});

    return this.http.post(this.smsURL,form, options);
}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

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

Похоже, вы пытаетесь сделать запрос к API Twilio со стороны клиента.Проблема в том, что вы сохраняете свои учетные данные Twilio в коде переднего плана, который может быть прочитан кем угодно.Это означает, что они могут принять ваши учетные данные и злоупотребить вашей учетной записью.

Рекомендуемый способ отправки SMS-сообщения с использованием Twilio в Angular - создание конечной точки на стороне сервера, которой вы управляете, которая хранит учетные данные и отправляет сообщение.Затем вы можете отправить сведения о сообщении со стороны клиента на сервер, который отправляет его с учетными данными в API.

У меня есть пример приложения , который отправляет SMS-сообщения с Angular и Expressбэкенд .Он использует службу сообщений для отправки подробностей на сервер и этот код для отправки сообщений с сервера .


Для записи: когда вы создаете объект FormData, он делает запрос как multipart/form-data.Вот почему, когда вы использовали вместо этого строку, она начала работать.

0 голосов
/ 25 февраля 2019

В итоге я понял, что это

sendSMS(sendTo: string){

    const to: string = '+' + sendTo;
    const from: string = '+fromNumber';
    const body: string = 'Image Uploaded';

    const username: string = 'username';
    const password: string = 'password';

    var rbody = `To=+${to}&From=${from}&Body=Image Uploaded`;

    const headers = new Headers({});

    headers.append("Authorization", "Basic " + btoa(username + ":" + password)); 
    headers.append("Content-Type", "application/x-www-form-urlencoded");

    const options = new RequestOptions({headers});

    return this.http.post(this.smsURL,rbody, options);


}

Хитрость была в том, чтобы отформатировать тело следующим образом:

body= 'attribute1=value&attribute2=value2'

и установить тип содержимого в заголовке:

application/x-www-form-urlencoded
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...