2016-10-07 5 views
0

Twilio와의 대화를 통해 소리를 재생하려고합니다. 나는 Twilio에 익숙하지 않고 몇 가지 문제를 겪고 있습니다.Twilio 발신 통화 중 소리 재생

Twilio 클라이언트 SDK plugin을 사용하여 모바일 응용 프로그램에서 호출이 시작됩니다. Twilio 콘솔에서 TwiML 앱을 만들고 Request URL을 설정했습니다.

이것은 내 TwiML 코드입니다.

내가 원하는 것은 :

  • 사용자는 응용 프로그램에서 호출을 시작합니다.
  • 사용자가 시간 제한을받습니다 (내 서버의 TwiML에서 설정).
  • 전화가 PSTN의 번호로 연결됩니다.
  • 시간 제한에 거의 다 달렸을 때 소리가 울려서 에게 전화가 곧 종료됨을 알리십시오. (예 : 시간 제한은 1 분 30 초 동안 소리가 들리면 울립니다.)
  • 한계에 도달하면 통화가 종료됩니다.

제한 시간에 도달했지만 이미 사용자에게 알리는 방법을 알 수 없으면 통화를 종료 할 수 있습니다. 내가 시도 무엇

: 나는 TwiML 응용 프로그램의 상태 콜백 URL을 지정했고, 나는 거기에서 통화 상태를 수정하고 싶었지만 통화가 끝난 후 상태 콜백 만이라고

. 이것은 this 게시물을 기반으로했습니다.

나는 this 게시물을 기반으로 컨퍼런스를 만들려고했지만 제대로 작동하지 않습니다. 내가 REST API를 사용하지 않기 때문에 나는 생각한다. 클라이언트 SDK를 사용하여 모바일 앱에서 호출을 시작합니다. REST API를 사용해야하며 클라이언트와 함께 구현하는 방법은 무엇입니까?

서버 쪽 PHP를 사용합니다.

자세한 정보가 필요하면 알려 주시기 바랍니다.

+0

소리를 들으려면 전화를받는 사람이 필요합니까? 앱을 사용하는 사람 만 듣기 만하면, 전화가 아닌 소리를 내기 위해 플랫폼을 사용할 수 있습니다. – philnash

+0

그래, 나는 그것에 대해서도 생각해 봤지만 가능한 한 서버 측에서 처리하고 가능한 한 소리를 호출에 통합합니다. – Thev

답변

0

개발자 전도사 Twilio가 여기 있습니다.

이 서버 측을 처리하려면 클라이언트에서 <Conference>으로 전화를 걸고 generate a call to the number your user was calling using the REST API으로 전화를 걸어 회의에 연결해야합니다.

그래서, 클라이언트에서 원래 전화에 응답 조금 다음과 같아야합니다

require_once '/path/to/vendor/autoload.php'; 
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); 

$number = htmlspecialchars($_REQUEST["TO"]); 

// Generate a call to the other party 
$call = $client->calls->create(
    $number, 
    $from, 
    array("url" => "http://example.com/conference?conference_name=EXAMPLE") 
); 

$response = new Twiml; 
$limit = getLimit($TWILIO_CALLER_ID, 1); 

$dial = $response->dial(array('callerId' => $TWILIO_CALLER_ID, 'timelimit' => $limit)); 

$dial->conference("EXAMPLE"); 

header("Content-Type: text/xml"); 
echo $response; 

이 회의에 발신자를 삭제하고 수신기로 전화를 겁니다. 그들이 전화를 받으면 URL (여기서는 http://example.com/conference?conference_name=EXAMPLE)로 웹 훅을 얻을 것입니다. 이 URL에 동일한 회의실로 응답해야합니다. 당신은 남은 시간을 경고 할 때

$response = new Twiml; 

$dial = $response->dial(); 
$dial->conference($_REQUEST['conference_name']); 

header("Content-Type: text/xml"); 
echo $response; 

그런 다음, 당신은 단지 TwiML의 <Say> 또는 <Play>이 경고를 읽고 사용하여 회의에 한 번 더 전화를이 시간이 필요합니다.

전화를 걸려면이 전화 회의를 가리키는 번호를 설정해야합니다. 그런 다음 시간 제한이 가까워지면 해당 번호로 전화를 걸고 메시지를 말한 URL을 사용하십시오.

require_once '/path/to/vendor/autoload.php'; 
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); 

$number = $YOUR_CONFERENCE_NUMBER; 

// Generate a call to the other party 
$call = $client->calls->create(
    $number, 
    $TWILIO_CALLER_ID, 
    array("url" => "http://example.com/time_message") 
); 

마지막으로, 당신은 메시지를 말할 TwiML와 /time_message 엔드 포인트에 응답 한 후 전화를 끊해야합니다.

$text1 = "Your limit is"; 
$text2 = "seconds"; 

$response = new Twiml; 
$response->say($text1 . "10 seconds" . $text2) 
$response->hangup(); 

header("Content-Type: text/xml"); 
echo $response; 

전혀 도움이되는지 알려주세요.

+0

지금 당장 귀하의 코드를 시험하고 있습니다. 한가지 질문이 있습니다. '$ YOUR_CONFERENCE_NUMBER'이 (가) 무엇입니까? 두 번째 Twilio 번호입니까, 아니면 "EXAMPLE"과 같은 회의의 식별자입니까? – Thev

+1

회의를 직접 가리키는 번호가 필요합니다 (또는 수신 전화 번호로 어떤 회의를 추론 할 수 있습니다). 그래서 네, Twilio 번호입니다. – philnash

+0

평가판 계정으로는 하나의 번호 만 구입할 수 있습니다. 대화 중에 음성을 처리하는 마지막 부분을 시도하기 위해 업그레이드 할 준비가 될 때까지 기다려야합니다. – Thev