Используйте PJSIP для совершения SIP-звонков - PullRequest
0 голосов
/ 18 октября 2018

Я использовал библиотеку PJSIP и смог зарегистрировать пользователя на сервере, но я
не могу позвонить

можно ли звонить без sip-клиента

или

сделать для себя, не может звонить с сервера и возвращать SIP
исходящий статус для acc 0 не активен

можем ли мы звонить с использованием PJSIP или мыдолжны интегрировать некоторые другие библиотеки

-(void)testSIP {

        pjsua_create();

        pj_status_t status;
        pjsua_config ua_cfg;
        pjsua_logging_config log_cfg;
        pjsua_media_config media_cfg;

        pjsua_config_default(&ua_cfg);
        pjsua_logging_config_default(&log_cfg);
        pjsua_media_config_default(&media_cfg);

        pjsua_logging_config_default(&log_cfg);
        log_cfg.console_level = 4;

        status = pjsua_init(&ua_cfg, &log_cfg, &media_cfg);
        if (status != PJ_SUCCESS) NSLog(@"Error in pjsua_init()%d", status);
        pjsua_transport_config transportConfig;
        pjsua_transport_config_default(&transportConfig);
        transportConfig.port = 5090;

        status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &transportConfig, NULL);
        if (status != PJ_SUCCESS){ NSLog(@"Error creating transport%@", status);}

        //pjsua_transport_create(PJSIP_TRANSPORT_TCP, &transportConfig, NULL);

        pjsua_start();

        // Register to SIP server by creating SIP account.

        pjsua_acc_config acc_config;

        pjsua_call_id call_id = 0;
        pj_bool_t pj_bool_t = 0;


        pjsua_call_setting call_setting;
        pjsua_call_setting_default(&call_setting);

        pjsua_acc_config_default(&acc_config);


        acc_config.id = pj_str((char *)"sipuser");  

        acc_config.reg_uri = pj_str((char *)"sip:sipDomain");

        acc_config.cred_count = 1;
        acc_config.cred_info[0].realm =pj_str((char *)"*")
        acc_config.cred_info[0].scheme = pj_str((char *)"digest");
        acc_config.cred_info[0].username=pj_str((char *)"sipuser");
        acc_config.cred_info[0].data_type=PJSIP_CRED_DATA_PLAIN_PASSWD ;
        acc_config.cred_info[0].data = pj_str((char *)"sippassword");

        pjsip_endpoint* endpoint = pjsua_get_pjsip_endpt();
        pj_dns_resolver* resolver;



        status = pjsua_acc_add(&acc_config, pj_bool_t, &acc_id);
        NSLog(@"%@",status);
        if (status!=PJ_SUCCESS){
            NSLog(@"Error ADDING ACCOUNT %d",status);
        }else{
            pjsua_acc_info *test;
            status = pjsua_acc_get_info(acc_id, &test);
            NSLog(@"%@",status);

            pjsua_call_get_info(call_id, &call_info);


            dispatch_async(dispatch_get_main_queue(), ^{
                [self makeCallTo:"sip:sipuser@sipdomain"];

            });
        }

    }
...