2016-12-27 2 views
0

Я использую КЛИЕНТ IOS быстрого старта проекта, размещенного на https://github.com/twilio/voice-callkit-quickstart-objcTwilio голоса IOS CallKit исходящих вызовов не работает

на сервере Я использую Python (в соответствии с рекомендациями по проекту GitHub)

Когда я нажал на " Место исходящего звонка «это сработало хорошо, и я получил голос« Добро пожаловать в Twilio ». Большой!

Затем я немного изменил код и попытался сделать исходящий вызов определенным номером. Вот измененный код

нажатия кнопок событие

- (IBAction)placeCall:(id)sender { 
    NSUUID *uuid = [NSUUID UUID]; 
    NSString *handle = @"Real Number"; 

    [self performStartCallActionWithUUID:uuid handle:handle]; 
} 

Вот CallKit ручка

- (void)performStartCallActionWithUUID:(NSUUID *)uuid handle:(NSString *)handle { 
    if (uuid == nil || handle == nil) { 
     return; 
    } 

    CXHandle *callHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle]; 
    CXStartCallAction *startCallAction = [[CXStartCallAction alloc] initWithCallUUID:uuid handle:callHandle]; 
    CXTransaction *transaction = [[CXTransaction alloc] initWithAction:startCallAction]; 

    [self.callKitCallController requestTransaction:transaction completion:^(NSError *error) { 
     if (error) { 
      NSLog(@"StartCallAction transaction request failed: %@", [error localizedDescription]); 
     } else { 
      NSLog(@"StartCallAction transaction request successful"); 

      CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init]; 
      callUpdate.remoteHandle = callHandle; 
      callUpdate.supportsDTMF = YES; 
      callUpdate.supportsHolding = NO; 
      callUpdate.supportsGrouping = NO; 
      callUpdate.supportsUngrouping = NO; 
      callUpdate.hasVideo = NO; 

      [self.callKitProvider reportCallWithUUID:uuid updated:callUpdate]; 
     } 
    }]; 
} 

И номер Для вызова

- (void)provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action { 
    NSLog(@"provider:performStartCallAction:"); 

    [[VoiceClient sharedInstance] configureAudioSession]; 

    NSDictionary *toParam = @{@"To": @"+14805058877"}; 
    //THIS IS WHERE WE NEED TO INSERT CALLING NUMBER 
    self.outgoingCall = [[VoiceClient sharedInstance] call:[self fetchAccessToken] 
                params:toParam 
                delegate:self]; 

    if (!self.outgoingCall) { 
     [action fail]; 
    } else { 
     self.outgoingCall.uuid = action.callUUID; 
     [self toggleUIState:NO]; 
     [self startSpin]; 

     [action fulfillWithDateStarted:[NSDate date]]; 
    } 
} 

Независимо от того, что я вхожу в значении параметра Я всегда получаю сообщение «Добро пожаловать в Twilio». Мне нужно знать, нужно ли мне что-либо менять на сервере Python или в коде клиента iOS. Пожалуйста помоги!

ответ

0

Twilio разработчик евангелист здесь.

У вас есть корректный код TwiML application? URL-адрес голосового запроса должен указывать на ваш сервер python. Я только спрашиваю, как сообщение с сервера Python, которое исходит от this line in the code, должно быть «Поздравляем! Вы сделали свой первый охуманный звонок! До свидания». и вы сказали, что это «Добро пожаловать в Twilio»

Как только вы определенно настроитесь на свое приложение Python, как только вы совершили свой первый исходящий звонок, вы получите это сообщение. Теперь вам нужно обновить приложение Python, а также приложение iOS.

Вы отправляете параметр To с номером, который вы пытаетесь вызвать. Вам нужно изменить Python так, чтобы он считывал это число и выводил TwiML that will dial that number.

Это должно выглядеть немного так:

@app.route('/outgoing', methods=['GET', 'POST']) 
def outgoing(): 
    resp = twilio.twiml.Response() 
    resp.dial(request.form['To']) 
    return str(resp) 

Позвольте мне знать, если это помогает вообще.

+0

Я думаю, что OP фактически нажимает маршрут по умолчанию в скрипте python: @ app.route ('/', methods = ['GET', 'POST']) def welcome(): У меня есть тот же вопрос, что и ОП, и сейчас пытаюсь понять это. – lottadot