Twilio TwinML внутри приложения Node.js - PullRequest
0 голосов
/ 07 мая 2018

Как реализовать, а затем интерполировать параметры из библиотеки Twilio? На странице ниже показан только код Twiml.

https://www.twilio.com/docs/sms/twiml

В этом случае параметр FromCountry. Я ломаю голову уже 5 часов и не могу найти ответ. Это мой код:

const http = require('http');

const express = require('express');

const MessagingResponse = require('twilio').twiml.MessagingResponse;

const app = express();

app.post('/sms', (req, res) => {
  const twiml = new MessagingResponse();

  twiml.message(`Hi! It looks like your phone number was born in {FromCountry should go here}`);

  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

http.createServer(app).listen(1337, () => {
  console.log('Express server listening on port 1337');
});

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вещи, которые вы ищете, находятся в req.body, поэтому вам нужно:

const MessagingResponse = require('twilio').twiml.MessagingResponse;
const bodyParser = require('body-parser'); 

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));

Тогда:

app.post('/sms', (req, res) => {
    const twiml = new MessagingResponse();

    twiml.message('It looks like your phone number was born in ' + req.body.FromCountry);

    res.writeHead(200, { 'Content-Type': 'text/xml' });
    res.end(twiml.toString());
});

FromCountry не всегда может быть доступен в соответствии с документами:
(https://www.twilio.com/docs/sms/twiml#request-parameters)

Twilio также пытается искать географические данные на основе телефонных номеров «От» и «До». Twilio отправляет следующие параметры, если они доступны:

FromCity        // The city of the sender
FromState       // The state or province of the sender.
FromZip         // The postal code of the called sender.
FromCountry     // The country of the called sender.
ToCity          // The city of the recipient.
ToState         // The state or province of the recipient.
ToZip           // The postal code of the recipient.
ToCountry       // The country of the recipient.

Этот блог (Как получить SMS в Node.js ...) также может помочь: (https://www.twilio.com/blog/2016/08/how-to-receive-an-sms-in-node-js-with-twilio-and-hyperdev.html)

Примечание: @Alan предложил в комментариях ссылку на Express req.body (https://expressjs.com/en/api.html#req.body)

0 голосов
/ 20 мая 2018

Вам нужно будет добавить эти строки в ваше приложение -

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));

В противном случае ваше приложение не будет анализировать параметры в запросе. Кодировка URL необходима для преобразования этих данных в строку. Оттуда вы сможете увидеть req.body, которое будет выглядеть примерно так -

{ ToCountry: 'US',
  ToState: 'HI',
  SmsMessageSid: 'SM6d9aaa6e3f9dc2gjhasgd98sa9d963f',
  NumMedia: '0',
  ToCity: '',
  FromZip: '94105',
  SmsSid: 'SM6dva08hjhasashasgdj6ehjags82363f',
  FromState: 'CA',
  SmsStatus: 'received',
  FromCity: 'SAN FRANCISCO',
  Body: 'Make sure you add bodyParser',
  FromCountry: 'US',
  To: '+18081111111',
  ToZip: '',
  NumSegments: '1',
  MessageSid: 'SM6d999999sdhgjuasjdgasd63f',
  AccountSid: 'ACa131b11110nbasbdjkasghd45e0fd9',
  From: '+14159990000',
  ApiVersion: '2010-04-01' 
}

Надеюсь, это поможет.

0 голосов
/ 07 мая 2018

Twilio говорит, что они отправляют вам параметры в application/x-www-form-urlencoded

поэтому используйте экспресс для анализа закодированного запроса и выберите нужные атрибуты из тела.

пример: https://github.com/expressjs/body-parser#express-route-specific

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