2015-11-04 152 views
0
var http = require('http'); 
var twilio = require('twilio')(ACCOUNT_SID, AUTH_TOKEN); 
var qs = require('querystring'); 

http.createServer(function (req, res) { 
    var body = ''; 
    req.setEncoding('utf8'); 

    req.on('data', function(data) { 
    body += data; 
    }); 

    req.on('end', function() { 
    var data = qs.parse(body); 
    var jsonString = JSON.stringify(data); 
    var jsonDataObject = JSON.parse(jsonString); 

    // log the received message 
    console.log(jsonDataObject.Body); 


     twilio.messages.create({ 
     to:'MY_PHONE_NUMBER', 
     from:'TWILIO_NUMBER', 
     body:'Hello World' 
     }, function(error, message) { 
     if (error) { 
      console.log('There was an error.') 
      console.log(error.message); 
     } 
     }); 

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

}).listen(1337, '127.0.0.1'); 

console.log('TwiML servin\' server running at http://127.0.0.1:1337/'); 

我試圖使用Twilio節點模塊收到短信,反過來一旦收到回覆短信迴應。因爲我可以記錄身體,所以接收消息似乎沒有問題。但是,當我嘗試回覆該消息時,我收到了401驗證錯誤。我使用ngrok來公開我的本地主機,這樣我就可以將它綁定到Twilio的API中。請看下面:接收與Twilio節點模塊短信與短信

我在哪裏錯了?

Twilio Dashboard

回答

1

Twilio開發者傳道這裏。

實際上,您不需要使用REST API來回復收到的Twilio號碼。實際上,您可以使用TwiML來響應傳入的HTTP請求,從而描述響應中的消息。

爲此,您需要使用<Message> verb。在您的應用程序,這將是這樣的:

首先,就需要未經帳戶憑據twilio模塊:

var twilio = require("twilio"); 

然後,響應與TwiML傳入的請求,就像這樣:

req.on('end', function() { 
    var data = qs.parse(body); 
    var jsonString = JSON.stringify(data); 
    var jsonDataObject = JSON.parse(jsonString); 

    // log the received message 
    console.log(jsonDataObject.Body); 

    var twiml = new twilio.TwimlResponse(); 
    twiml.message("Hello world"); 

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

讓我知道這是否有幫助。

+0

謝謝 - 但我不需要憑據接收傳入的文本?那部分有什麼變化? –

+0

您不需要接收憑據,不需要,只需設置您的號碼的URL。 – philnash

+0

我試過我的代碼,因爲它沒有證書 - 並且消息的正文不再記錄。 –

0
var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
const MessagingResponse = require('twilio').twiml.MessagingResponse; 


var server = app.listen(80, function() { 
    var host = server.address().address 
    var port = server.address().port 
    console.log(" web app listening at http://%s:%s", host, port) 


}) 

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

    twiml.message('Finally Twilio works!'); 
    res.status(200); 
    res.send(twiml.toString()); 

    }); 

在控制檯的電話號碼下。 您可以點擊webhook並將其更改爲http://「putyourserverhere」/ txt 這將自動回送入站用戶。 享受。確保你安裝了最新版本的twilio。