2017-03-14 17 views
1

iOS에서 녹음 응용 프로그램을 만들고 있습니다. 해당 응용 프로그램에서 녹음을 녹음하는 기능을 제공하려고합니다. 응용 프로그램에서 전화로 전화를 걸려면 twilio iOS SDK를 사용하고 있습니다.iOS 응용 프로그램에서 twilio를 사용하여 통화 녹음

twilio iOS SDK를 사용하여 전화를 녹음하는 방법.

사용자가 앱에 녹음을 사용하도록 설정하면 통화가 녹음되어야하며 녹음이 꺼져 있으면 녹음되지 않아야합니다.

twiml을 관리하기 위해 우리가 사용하는 백엔드 기술은 PHP입니다.

코드에 대한 우리는 아래의 코드를 작성했습니다 전화를 만들기위한 : 을 - (무효) callsetup : (있는 NSString *) dialnumber { 있는 NSString * 발신자 = [[NSUserDefaults standardUserDefaults] objectForKey : PRPhoneNumber] self.callViewController.mainText = dialnumber; [PKTPhone sharedPhone] .callerId = CallerID; [[PKTPhone sharedPhone] 통화 : 전화 번호]; 여기

$from  = $_REQUEST['From']; 
$callee = $_REQUEST['callee']; 
$callerId = $_REQUEST['callerId']; 
$digits = $_REQUEST['Digits']; 

$record = (isset($_REQUEST["recording"]) && $_REQUEST["recording"] == true) ? " record='record-from-answer'" : ''; 
if (isset($digits) && !$callee) { 
    $callee = $_REQUEST[$digits]; 
} 


$response = '<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
<Dial'.$record.' callerId="'.$callerId.'"> 
<Number url="http://ourserverurl.net/phoneRecorder/twilio/twilio-client-server-master/notification.php">'.$callee.'</Number> 
</Dial> 
</Response>'; 

답변

0

Twilio 개발자 전도사 : }

///*** PKTPhone class next working*** 
-(void)call:(NSString *)callee 
{ 
    [self call:callee withParams:nil]; 
} 

- (void)call:(NSString *)callee withParams:(NSDictionary *)params 
{ 

    reciverID = callee; 



    if (!(self.phoneDevice && self.capabilityToken)) { 
     NSLog(@"Error: You must set PKTPhone's capability token before you make a call"); 
     return; 
    } 

    NSMutableDictionary *connectParams = [NSMutableDictionary dictionaryWithDictionary:params]; 
    if (callee.length) 
     connectParams[@"callee"] = callee; 
    if (self.callerId.length) 
     connectParams[@"callerId"] = self.callerId; 

    connectParams[@"recording"] = @true; 

    self.activeConnection = [self.phoneDevice connect:connectParams delegate:self]; 

    if ([self.delegate respondsToSelector:@selector(callStartedWithParams:incoming:)]) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.delegate callStartedWithParams:connectParams incoming:NO]; 
     }); 
    } 
} 

이 PHP에서 서버 끝에서 우리가 작성한 코드입니다.

connectParams ~ pass parameters to the TwiML application을 사용할 수 있습니다. 전달한 모든 매개 변수는 PHP 응용 프로그램으로 전달됩니다. 따라서 녹음 여부를 나타내는 매개 변수를 추가 한 다음 녹음 할 TwiML 또는 녹음하지 않을 TwiML을 생성 할 수 있습니다. 예를 들어

:

당신의 PHP에서 다음
NSMutableDictionary *connectParams = [NSMutableDictionary dictionaryWithDictionary:params]; 
    if (callee.length) 
     connectParams[@"callee"] = callee; 
    if (self.callerId.length) 
     connectParams[@"callerId"] = self.callerId; 
    if (self.recording) 
     connectParams[@"recording"] = @true; 

: 물론

<?php 

$recording = isset($_REQUEST["recording"]); 

$response = "<Response>" 
$response .= "<Dial"; 
if ($recording) { 
    $response .= " record='record-from-answer'"; 
} 
$response .= "><Number>+15551234567</Number></Dial></Response>"; 

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

, 당신은 아마이 기록 파라미터와 using it with TwiML to record the call을 얻기의 예, 너무 다른 값을 설정한다.

+0

PHP에서 서버 코드와 동일한 코드를 작성했지만 PHP 코드에 param을 기록하지 않습니다. iOS에서 우리는 동일한 코드를 작성하고 호출을 시작했습니다. 당신이 제공 한 솔루션에 언급 된 다른 설정이 있습니까? –

+0

피 호출자와 호출자 ID가 수신되었지만 기록 매개 변수가 PHP에서 수신되지 않았습니다. –

+0

질문을 편집하고 해당 매개 변수를 사용하여 전화를 걸 수있는 기능을 공유 할 수 있습니까? 도움을 받으려면 좀 더 자세히 살펴야합니다. – philnash

0

Twilio 고객 지원.

웹 응용 프로그램에 대한 HTTP 요청에 '녹음 중'매개 변수가 표시되지 않습니다. 즉, iOS 앱에서 전송하지 않는 것입니다.

- Rob