2013-07-10 3 views
4

Я не нахожу однозначного ответа из документов Twilio. Я пытаюсь создать телефонную систему, которая может приостановить работу другой стороны во время вызова и только с телефона. Пример: Есть два агента, работающих со мной в поле. Я получаю звонок на своем мобильном телефоне (вдали от компьютера) и обнаруживаю, что другому агенту нужно поговорить с человеком, с которым я разговариваю по телефону. Я хотел бы иметь возможность нажимать что-то в телефоне, которое либо передало бы другого человека агенту, либо помещало бы их в очередь. Тогда я мог бы вызвать другого агента, и он мог бы получить человека из очереди. Все это должно произойти только с наших телефонов.Передача вызова Twilio от звонка

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

Возможно ли это с помощью Twilio?

ответ

5

Твилио евангелист здесь.

Звучит так, как будто это может быть хорошее место для use some <Conference>s.

Позволяет определить действующих лиц в вашем сценарии: Agent1, Agent2, Field.

Допустим, что поле вызывает Agent1. Вместо соединения двух напрямую с <Dial> вы можете <Dial> Поместить поле в <Conference> (позвоните на конференциюA), а затем используйте REST API для инициирования исходящего вызова Agent1. Когда они отвечают <Dial> их в то же самое <Conference>. Системе необходимо будет захватить CallSid как Agent1, так и Field, а также Sid <Conference>, сохраняя их в некотором типе хранилища, который будет использоваться позже.

Использование <Conference> в этом сценарии дает вам больше возможностей манипулировать каждой нотой вызова независимо от другого, кроме того, если вы используете <Dial> для подключения поля и агента1.

Итак, Agent2 вызывает поле. Агент2 прошел бы тот же процесс, как раз наоборот. Агент2 набирается на номер <Conference> (позволяет называть его ConferenceB), и ваша система будет использовать REST API для вызова поля. Когда ответы Field отвечают, они получают <Dial> ed на ту же конференцию, что и Agent2. Опять же, системе необходимо будет захватить CallSid как Agent2, так и Field, а также Sid <Conference>, сохраняя их в некотором типе хранилища, который будет использоваться позже.

Теперь Field необходимо указать системе для подключения Agent2 с Agent1. Для этого вы можете использовать атрибут hangupOnStar <Dial> в TwiML, который вы передаете Twilio, когда вы набираете поле в ConferenceB. Глагол <Dial> будет выглядеть примерно так:

<Dial hangupOnStar="true" action="[process_hangup_url]"> 
    <Conference>ConferenceB</Conference> 
</Dial> 

hangupOnStar говорит Twilio отсоединять абонент (Field) от кого бы они ни <Dial> издания (конференция), но по-прежнему делает запрос к URL, определенному в атрибуте действия <Dial> глаголов , Это важно, потому что, когда Field должен сообщить системе перенаправить Agent2 в ConferenceA с помощью Agent1, а запрос на атрибут URL в s-action дает системе возможность запросить Поле, чтобы узнать, что он хочет сделать. Таким образом, вы могли бы Twilio выполнить некоторые TwiML так:

<Response> 
    <Gather action=[gather_handler]> 
     <Say>Press 1 to connect this caller to another<Say> 
    </Gather> 
</Response> 

Если поле нажимает одну, систему (кто знает все CallSids для всех участвующих сторон здесь, и конференц-МОРС), можно использовать REST API для перенаправления Agent2 из ConferenceB и в ConferenceA.

Это немного сложнее системы, но оно должно работать на вас.

Надежда, что помогает

0
Redirect an incoming call to new url:  

<?php 
// Get the PHP helper library from twilio.com/docs/php/install 
require_once '/path/to/vendor/autoload.php'; // Loads the library 
use Twilio\Rest\Client; 
// Your Account Sid and Auth Token from twilio.com/user/account 
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "your_auth_token"; 
$client = new Client($sid, $token); 
// Get an object from its sid. If you do not have a sid, 
$call = $client 
    ->calls("CAe1644a7eed5088b159577c5802d8be38") 
    ->update(
     array(
      "url" => "your_url/test.xml", 
      "method" => "POST" 
     ) 
    ); 

echo $call->to; 

XML Code: 
--------- 
<Response> 
    <Redirect method="POST">url goes here</Redirect> 
</Response> 
+0

могли бы вы объяснить, почему этот код работает, чтобы помочь будущим читателям? – WhatsThePoint

Смежные вопросы