2016-11-16 3 views
0

모든 가이드가이 문제로 구식 인 것처럼 보입니다. twilio의 웹 사이트에는 이에 대한 명확한 답변이 없습니다.각 통화 기록에 대해 twilio 녹음하기

모든 통화 목록을 가져오고 각 통화 기록에 대해 기록 레코드가 있는지 확인하려고합니다. 기록 레코드가 있으면 URI를 가져옵니다. 나는 아주 아주 천천히, 그리고 예상대로 나던 작품이 스크립트를 수행하려고 어떤 메신저를하는 올바른 방법이라고 생각 해달라고하지만

, 여기에 지금에 어디 메신저입니다 :

// Set our AccountSid and AuthToken 
$sid = 'MY_SID'; 
$token = 'MY_TOKEN'; 

// Your Account Sid and Auth Token from twilio.com/user/account 
$client = new Client($sid, $token); 

// Loop over the list of calls and echo a property for each one 
foreach ($client->account->calls->read() as $call 
) { 
    echo $call->sid.", &nbsp; ".getRecording($call->sid)."<br/>"; 


} 

function getRecording($callsid){ 


    // Set our AccountSid and AuthToken 
    $sid = 'MY_SID'; 
    $token = 'MY_TOKEN'; 
    $client = new Client($sid, $token); 

    // Loop over the list of recordings and echo a property for each one 
    foreach ($client->account->recordings->read(array("CallSid" => $callsid)) as $recording) { 

     return "&nbsp; &nbsp; ->".$callsid." <a href='http://api.twilio.com".$recording->uri."'>Audio</a> "; 

    } 
} 

출력 모든 녹음 URI가 각각에 대해 동일하다는 것입니다. 이 나던 작품은이 또한 매우 매우 느리게 실행되고 있기 때문에

CAb5323eed7ed4f82b3990830777c02684,  ->CAb5323eed7ed4f82b3990830777c02684 <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CA57df3525265949c4dfcaa9073b02880a,  ->CA57df3525265949c4dfcaa9073b02880a <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CA31f0ac07483d72a56d424b55672a61ab,  ->CA31f0ac07483d72a56d424b55672a61ab <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CAac6e6f0d45cd15069300202ce6cbc27e,  ->CAac6e6f0d45cd15069300202ce6cbc27e <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CAe51db5d605b94c7141d43611bc8dbbd1,  ->CAe51db5d605b94c7141d43611bc8dbbd1 <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CAbe46fe9ab0202fc15184915b0af94d1a,  ->CAbe46fe9ab0202fc15184915b0af94d1a <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CA15c3eaccc8b1cfca648105744c1c1c8c,  ->CA15c3eaccc8b1cfca648105744c1c1c8c <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CAcb9a5d1f7e3f3b4f3b1eff08f4e51094,  ->CAcb9a5d1f7e3f3b4f3b1eff08f4e51094 <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CAfc6a986c4e58e35778d4242303f37e32,  ->CAfc6a986c4e58e35778d4242303f37e32 <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CA58aa5dc00c72567b91b43db52577080a,  ->CA58aa5dc00c72567b91b43db52577080a <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 
CA65dbdee33266a706f17616ecf03e78eb,  ->CA65dbdee33266a706f17616ecf03e78eb <a href='http://api.twilio.com/2010-04-01/Accounts/My_account_nr/Recordings/RE9f96dc253140ffdfa8cd37c139de978s.json'>Audio</a> 

임, 더 나은 솔루션을 찾고.

답변

0
+0

안녕하세요, 그리고 시간과 답변을 주셔서 감사합니다 ...... 이것은 멀리 찾고 있습니다 .... 문제는 내 코드가 foreach 안에 foreach가 있다는 것입니다. 아주 느린 적재 페이지가 생겨났습니다 ..... 나는이 포스트에서 말한 것처럼 더 좋은 해결책을 찾고 있습니다. 왜냐하면 이것은 작동하지 않고 아주 천천히 달리고 있기 때문입니다. 하지만 시간 내 주셔서 감사합니다 .-) – user2014557

1

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

당신은 모든 호출에 대해 루핑을 한 다음 REST API를 통해 호출의 모든 기록을 반복하는 것은 매우 느릴 것입니다. 녹음을 표시하려면이 방법을 사용하지 않는 것이 좋습니다.

대신에 수행 할 수있는 두 가지 작업이 있습니다.

먼저, 기존 스크립트와 비슷한 스크립트를 작성하십시오. 단, HTML을 작성하는 대신 호출 및 해당 기록을 데이터베이스에 저장하십시오. 그렇게하면 API에 여러 번 호출하는 것보다 훨씬 빠르게 수행 할 자체 데이터베이스를 살펴볼 수 있습니다.

두 번째로, 새 스크립트를 업데이트하기 위해 해당 스크립트를 계속 실행하는 대신 recordingStatusCallbacks을 호출 할 수 있습니다. 이렇게하면 웹 후크 URL을 설정하여 새 통화 기록이 완료되면 응용 프로그램에 all the information on the recordings이라는 HTTP 요청을 수신 할 수 있습니다. 그런 다음 데이터베이스에 저장할 수도 있으며 응용 프로그램은 모든 최신 기록으로 업데이트 된 상태로 유지됩니다.

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

1

이것은 실제로 매우 빠르고 훌륭한 방법입니다. Twilio 직원이 제공 한 솔루션. 감사합니다

$client = new Client($sid, $token); 

// Create an array of recordings 
$recording_array = array(); 
// Loop over the list of recordings and echo a property for each one 
foreach ($client->recordings->read() as $recording) { 
    $recording_array[$recording->callSid][$count] = $recording->sid; 
    $count++; 
} 


foreach ($client->account->calls->read() as $call) { 
    // Check if there is a call sid exist 
    if(array_key_exists($call->sid, $recording_array)){ 
     foreach($recording_array["$call->sid"] as $key=>$val){ 
      echo $call->sid.", Recording is ".$val."\r\n"; 
     } 
    } else { 
     echo $call->sid."\r\n"; 
    } 
}