Node.js Twilio使用REST API进行调用

时间:2018-04-25 06:40:01

标签: node.js rest twilio twilio-api

我正在尝试使用Twilio REST API进行调用但是我收到错误,看起来我错过了什么,任何帮助都会感激:

var options = { method: 'POST',
  url: 'https://xxxxxxxxxxxx@api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxx/Calls',
  headers: 
   { 
     'Cache-Control': 'no-cache',
     'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
  formData: 
   { To: '+919200070974',
     From: '14245060471',
     Url: '<?xml version="1.0" encoding="UTF-8"?>\n<Response>\n    <Say voice="woman">This is me....</Say>\n</Response>'} };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

现在我设置了url参数,但显示无效

    <?xml version='1.0' encoding='UTF-8'?>
<TwilioResponse>
    <RestException>
        <Code>21205</Code>
        <Message>Url is not a valid url: &lt;?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say voice="woman">This is me....</Say>
</Response></Message>
        <MoreInfo>https://www.twilio.com/docs/errors/21205</MoreInfo>
        <Status>400</Status>
    </RestException>
</TwilioResponse>

我没有得到设置网址参数的位置,我没有在文档中清楚地找到我必须设置的内容。

2 个答案:

答案 0 :(得分:1)

twilio已经有一个npm库。

您可以关注他们的Node.js Guide

// Twilio Credentials
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';

// require the Twilio module and create a REST client
const client = require('twilio')(accountSid, authToken);

client.messages
  .create({
    to: '+15558675310',
    from: '+15017122661',
    body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
  })
  .then(message => console.log(message.sid));

答案 1 :(得分:1)

Twilio开发者传道者在这里。

在这种情况下您需要做的是向Twilio发送一个URL。当呼叫连接时,Twilio将向该URL发出请求以获取TwiML响应。

From the documentation

  

当您通过REST API发起呼叫时,Twilio会对“&#39; Url&#39;”的值中的URL发出同步HTTP请求。 POST参数,以便检索用于处理调用的TwiML。此请求与Twilio在接收到您的某个Twilio号码的电话时发送的请求相同。 URL必须包含有效的主机名(不允许使用下划线)。

所以,你的formData应该是:

formData: {
  To: '+919200070974',
  From: '14245060471',
  Url: 'https://example.com/twiml'
}

https://example.com/twiml处的网址应以您最初定义的TwiML进行回复。