2017-08-13 45 views
1

我知道如何通過Twilio發送SMS到請求正文中指定的電話號碼,但是我需要一種方法讓此路由等待用戶用短信回覆。我需要捕獲該消息體並將其作爲響應發送。如何使用Twilio發送短信,並等待來自電話的響應,以完成NodeJS中的請求

router.post('/', function(req, res){ 

    var customerNumber = req.body.mobileNumber; 
    var twilioNumber = process.env.TWILIO_NUMBER; 

    client.messages 
     .create({ 
      to: '+1' + customerNumber, 
      from: twilioNumber, 
      body: 'message to user', 
      provideFeedback: 'true', 
     }, function(err, message){ 
      if(err) res.send('message err: ' + err); 
      else{ 
      // wait 10-20 seconds for user to respond 
      res.send("A response from the user"); 
      } 
     })  
}); 

我也知道如何傾聽與迴應Twilio,但這並不工作,因爲我需要上述途徑與信息,我從以下途徑獲取用戶響應。

router.post('/sms-response', function(req, res){ 
    var twilio = require('twilio'); 
    var twiml = new twilio.twiml.MessagingResponse(); 
    twiml.message('thanks for your feedback'); 
    res.writeHead(200, {'Content-Type':'text/xml'}); 
    res.end(twiml.toString()); 
}); 

我一直在尋找一種方法來完成這一整天都沒有成功。我感謝您的幫助!

回答

1

我不知道這是否可能,但我通過他們的文檔,並沒有看到該功能呢。我會建議使用像socket.io這樣的網絡套接字。當消息進入時,您可以將響應通過套接字傳遞給用戶。

1

Twilio開發人員在這裏傳播。

雖然這在技術上是可行的,但我強烈建議不要這樣做。你提到你可能會等待10-20秒,但用戶比移動網絡更易變質。所以得到迴應可能需要更長的時間甚至永遠不會發生。然後,你會留下長時間連接到你的服務器,等待可能永遠不會到來的響應。

正如Hammer所建議的那樣,最好馬上向用戶返回一個響應,比如說「我們正在等待您的響應」,然後通過websocket或服務器發送事件將該用戶的瀏覽器連接到您的服務器流。當您在webhook端點上收到傳入消息時,您可以將信息發送到WebSocket或事件源,並對前端中的信息做出反應。

讓我知道這是否有幫助。

相關問題