Twilio разработчик евангелист здесь.
ОК, вы строите с Node.js, и я знаю, что я видел ваш код в других вопросах, но я собираюсь начать с нуля.
С Twilio поток, который вы описали, должен выглядеть следующим образом.
- Человек называет ваш Twilio номер
- Twilio делает запрос HTTP в URL запроса голос номер (который указывает на приложения)
- Ваше приложение теперь нужно сделать две вещи
- Позвоните в номер мобильного телефона
- Поместить вызывающего абонента в конференцию с музыкой с удержанием музыки
- Прежде всего, необходимо принять решение о названии конференции
- Тогда для вызова номера, ваше приложение должно сделать вызов к Twilio REST API для инициирования вызова на мобильный
- Вы должны обеспечить обратный вызов в этом вызове, который также выведет вас на конференцию, включив имя конференции в качестве параметра в URL-адрес
- Ваше приложение также должно вернуть TwiML, чтобы поместить вызывающего абонента на конференцию, используя то же название конференции
- Наконец, когда вы отвечаете на звонок Twilio сделает запрос HTTP на URL, указанный вами при инициации вызова
- Это будет запрашивать ваш URL, который должен реагировать с TwiML, чтобы поставить вас в тот же конференции
Давайте посмотрим, как мы можем это сделать в приложении Node.js Express:
Вам необходимо два маршрута, который получит первоначальный запрос, и тот, который будет отвечать на запрос, сделанный при ответе на ваш телефон. Ознакомьтесь с кодом и комментариями ниже.
var express = require("express");
var bodyParser = require("body-parser");
var twilio = require("twilio");
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
var client = twilio(YOUR_ACCOUNT_SID, YOUR_AUTH_TOKEN);
// This is the endpoint your Twilio number's Voice Request URL should point at
app.post('/calls', function(req, res, next) {
// conference name will be a random number between 0 and 10000
var conferenceName = Math.floor(Math.random() * 10000).toString();
// Create a call to your mobile and add the conference name as a parameter to
// the URL.
client.calls.create({
from: YOUR_TWILIO_NUMBER,
to: YOUR_MOBILE_NUMBER,
url: "/join_conference?id=" + conferenceName
});
// Now return TwiML to the caller to put them in the conference, using the
// same name.
var twiml = new twilio.TwimlResponse();
twiml.dial(function(node) {
node.conference(conferenceName, {
waitUrl: "http://twimlets.com/holdmusic?Bucket=com.twilio.music.rock",
startConferenceOnEnter: false
});
});
res.set('Content-Type', 'text/xml');
res.send(twiml.toString());
});
// This is the endpoint that Twilio will call when you answer the phone
app.post("/join_conference", function(req, res, next) {
var conferenceName = req.query.id;
// We return TwiML to enter the same conference
var twiml = new twilio.TwimlResponse();
twiml.dial(function(node) {
node.conference(conferenceName, {
startConferenceOnEnter: true
});
});
res.set('Content-Type', 'text/xml');
res.send(twiml.toString());
});
Дайте мне знать, если это вообще поможет.
Да, спасибо! – nova