2016-06-01 27 views
2

私はPJSIP 2.0、Xcode 7.3、およびios 9.2.1を使用しています。 ユーザA、B &ユーザが3人いるとします。
Aコールが(会議通話として)AメンバーCを追加すると、Bへのコールがあった場合、A & BはCと通信できますが、CはボイスをBから取得できません(C & A通信は正常です)。したがって、C & Bの間の通信を管理する方法。Asterisk iOSで電話会議を行う方法(電話会議で新しいメンバーを追加する)?

答えて

0

pjsip ios library 2.5の最新ビルドと別の呼び出しを使用できます。 2番目はWebサービスを使用してコールを発信し、アスタリスクをSIPサーバとしてconfbridgeするためにチャネルをリダイレクトします。

他のメディアサーバーを使用している場合は、同様に詳細を共有します。

0

このコードは私にとってはうまく動作し、pjsua_conf_connect()スロット番号0 1とマージする必要があります。これは私たちの必要条件です。

static void on_call_media_state(pjsua_call_id call_id) 
    { 
     pjsua_call_info ci; 
     SiphonApplication *app = (SiphonApplication *)[SiphonApplication sharedApplication]; 

     pjsua_call_get_info(call_id, &ci); 
    // PJ_LOG(3,(THIS_FILE,"on_call_media_state status %d count %d", 
    //  ci.media_status 
    //  pjmedia_conf_get_connect_count())); 

     /* FIXME: Stop ringback */ 
     sip_ring_stop([app pjsipConfig]); 

     /* Connect ports appropriately when media status is ACTIVE or REMOTE HOLD, 
     * otherwise we should NOT connect the ports. 
     */ 

     pjsua_call_media_status slotOne = ci.media_status; 
     if (slotOne == PJSUA_CALL_MEDIA_ACTIVE || 
      slotOne == PJSUA_CALL_MEDIA_REMOTE_HOLD) 
     { 
     // When media is active, connect call to sound device. 
     pjsua_conf_connect(ci.conf_slot, 0); 
     pjsua_conf_connect(0, ci.conf_slot); 

     pjsua_conf_adjust_rx_level(0, 3.0); 
     pjsua_conf_adjust_tx_level(0, 5.0); 


     } 


      [[NSUserDefaults standardUserDefaults] setObject: @"CallIsRunning"forKey:@"CallIsRunning"]; 
     if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) { // When media is active, connect call to sound device. 
      pjsua_conf_port_id slotOne = ci.conf_slot; 
      //  pjsua_conf_connect(slotOne, 0); 
      //  pjsua_conf_connect(0, slotOne); 
      //mergeCalls=true; 

      mergeCalls=false; 

      int max=pjsua_call_get_count(); 
      if (max==2) { 

       [[NSUserDefaults standardUserDefaults] setInteger:pjsua_call_get_count() forKey:@"callCountForCalling"]; 
       mergeCalls=true; 
      } 


      NSString *grpID= [[NSUserDefaults standardUserDefaults] objectForKey:@"callerTypegroup"]; 
      // if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"callerTypegroup"] length]>1) 

      if (mergeCalls == true && grpID.length==0) { 

       pjsua_conf_port_id slotTwo = pjsua_call_get_conf_port(activeCallID); 
       pjsua_conf_connect(slotOne, slotTwo); 
       pjsua_conf_connect(slotTwo, slotOne); 

       // since the "activeCallID" is already talking, its conf_port is already connected to "0" (and vice versa) ... 

      } else { 
       activeCallID = call_id; 
      } 
     } else if (ci.media_status == PJSUA_CALL_MEDIA_LOCAL_HOLD) { 
      // … callSuspended(callID); 
     } 

    } 
関連する問題