CString FormatNumber(CString number) { CString numberFormated = number; pjsua_acc_id acc_id; pj_str_t pj_uri; bool isLocal = SelectSIPAccount(number,acc_id,pj_uri) && acc_id == account_local; if (!isLocal) { BOOL isDigits = TRUE; for (int i=0;i<number.GetLength();i++) { if ( (number[i]>'9' || number[i]<'0') && number[i]!='*' && number[i]!='#' && number[i]!='.' && number[i]!='-' && number[i]!='(' && number[i]!=')' && number[i]!=' ' && number[0]!='+') { isDigits = FALSE; break; } } if (isDigits) { numberFormated.Remove('.'); numberFormated.Remove('-'); numberFormated.Remove('('); numberFormated.Remove(')'); numberFormated.Remove(' '); } } return GetSIPURI(numberFormated,true,isLocal); }
BOOL MessagesDlg::SendMessage(MessagesContact* messagesContact, CString message, CString number) { message.Trim(); if (message.GetLength()) { pjsua_acc_id acc_id; pj_str_t pj_uri; SelectSIPAccount(messagesContact?messagesContact->number:number,acc_id,pj_uri); pj_str_t pj_message = StrToPjStr ( message ); pj_status_t status = pjsua_im_send( acc_id, &pj_uri, NULL, &pj_message, NULL, NULL ); if ( status != PJ_SUCCESS ) { if (messagesContact) { CString message = GetErrorMessage(status); AddMessage(messagesContact,message); } } else { return TRUE; } } return FALSE; }
pjsua_call_id MessagesDlg::CallMake(CString number, bool hasVideo, pj_status_t *pStatus) { if (accountSettings.singleMode) { call_hangup_all_noincoming(); } #ifdef _GLOBAL_VIDEO if (hasVideo) { microsipDlg->createPreviewWin(); } #endif microsipDlg->SetSoundDevice(microsipDlg->audio_output); pjsua_acc_id acc_id; pj_str_t pj_uri; SelectSIPAccount(number,acc_id,pj_uri); pjsua_call_id call_id; pjsua_call_setting call_setting; pjsua_call_setting_default(&call_setting); call_setting.flag = 0; call_setting.vid_cnt=hasVideo ? 1 : 0; pj_status_t status = pjsua_call_make_call( acc_id, &pj_uri, &call_setting, NULL, NULL, &call_id); if (pStatus) { *pStatus = status; } return status == PJ_SUCCESS ? call_id : PJSUA_INVALID_ID; }