2016-03-16 7 views
0

План моей программы: кто-то звонит в номер Twilio, затем меня зовут на моем мобильном телефоне. Поскольку я не принимаю вызов, вызывающий абонент должен услышать музыку или что-то в этом роде, и если я заберусь, должна начаться конференция.как начать конференцию с twilio?

В данный момент: Кто-то звонит по номеру и попадает в очередь с музыкой, затем мой мобильный телефон вызывается. Звучит здорово, но когда я забираю, мы не подключаемся.

Итак, я не понимаю, как работает конференция Twilio, можете ли вы получить какие-то советы, как это сделать шаг за шагом.

ответ

2

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()); 
}); 

Дайте мне знать, если это вообще поможет.

+0

Да, спасибо! – nova

1

Я решил это сам, вам нужно ответить на оба участникам конференции, она будет запускаться автоматически, когда другой человек принял вызов

Пример

resp.say({voice:'woman'}, 'Welcome to our hotline. This could take a moment, please wait.') 
    .dial({},function(err){ 
     this.conference('example'); 
}); 
Смежные вопросы