//public async Task<string> NewQueueRestApi(QueueApiViewModel queueApiViewModel) //{ // //List<string> stmembers = new List<string>(); // //stmembers.Add("1000,0"); // //stmembers.Add("3580,0"); // string token = await GetNewTokenRest(); // QueueApi queueApi = new QueueApi(); // queueApi.Extension = queueApiViewModel.Extension.ToString(); // queueApi.Name = queueApiViewModel.Name; // queueApi.Password = queueApiViewModel.Password.ToString(); // //queueApi.StaticMembers = null; // // = queueApiViewModel.StaticMembers; // queueApi.RingStrategy = queueApiViewModel.RingStrategy; // queueApi.SkipBusyAgents = queueApiViewModel.SkipBusyAgents.ToString(); // queueApi.JoinAnnounceId = queueApiViewModel.JoinAnnounceId.ToString(); // queueApi.MonitorFormat = queueApiViewModel.MonitorFormat; // queueApi.MonitorJoin = "yes"; // queueApi.MonitorType = queueApiViewModel.MonitorType; // queueApi.MaxWait = queueApiViewModel.MaxWait; // queueApi.SoundThankYou = "queue-thankyou"; // queueApi.SoundCallsWaiting = "queue-callswaiting"; // queueApi.SoundThereAre = "queue-thereare"; // queueApi.SoundYouAreNext = "queue-youarenext"; // queueApi.TimeoutPriority = queueApiViewModel.TimeoutPriority; /////Max Wait Time Mode // queueApi.Timeout = queueApiViewModel.Timeout.ToString(); /////////// Agent Timeout // queueApi.AgentRetry = queueApiViewModel.AgentRetry; // queueApi.ReportHoldTime = queueApiViewModel.ReportHoldTime; // queueApi.AutoPause = queueApiViewModel.AutoPause; // queueApi.AutoPauseDelay = queueApiViewModel.AutoPauseDelay.ToString(); // queueApi.AutoPauseIfBusy = queueApiViewModel.AutoPauseIfBusy; // queueApi.AutoPauseIfUnavailable = queueApiViewModel.AutoPauseIfUnavailable; // queueApi.MaxCallersWaiting = queueApiViewModel.MaxCallersWaiting.ToString(); // queueApi.JoinEmpty = queueApiViewModel.JoinEmpty; // queueApi.LeaveWhenEmpty = queueApiViewModel.LeaveWhenEmpty; // queueApi.AnnounceFrequency = queueApiViewModel.AnnounceFrequency.ToString(); // queueApi.AnnounceHoldtime = queueApiViewModel.AnnounceHoldtime; // queueApi.AnnouncePosition = queueApiViewModel.AnnouncePosition; // queueApi.EventMemberStatus = "yes"; // queueApi.EventWhenCalled = "yes"; // queueApi.CronSchedule = queueApiViewModel.CronSchedule; // string json = queueApi.ToJson(); // int Sucretry = 0; // int Failretry = 0; // retry: // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // var content = new StringContent(json, Encoding.UTF8, "application/json"); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // string Postadd = "https://" + IssabeLIP + "/pbxapi/queues/" + queueApiViewModel.Extension.ToString(); // var response = await client.PutAsync(Postadd, content); // string res; //= response.ToString(); // if (response.IsSuccessStatusCode) // { // Sucretry += 1; // if (Sucretry < 2) // { // goto retry; // } // else // { // // res = await response.Content.ReadAsStringAsync(); // res = "true"; // } // } // else // if (res.Contains("StatusCode: 500") || response.StatusCode.ToString() == "500") // { // Failretry += 1; // if (Failretry < 10) // { // GetNewToken(); // goto retry; // } // else // { // res = "ثبت با خطا روبرو شد با مدیر سیستم تماس بگیرید"; // } // } // return res; //} //public async Task<string> EditQueueRestApi(QueueApiViewModel queueApiViewModel) //{ // string token = await GetNewTokenRest(); // var oplist = queryRepository.QueueStaticMembersList(queueApiViewModel.Extension); // List<string> StMembers = new List<string>(); // if (oplist != null) // { // foreach (var item in oplist) // { // StMembers.Add(item + ",0"); // } // } // QueueApi queueApi = new QueueApi(); // queueApi.Extension = queueApiViewModel.Extension.ToString(); // queueApi.Name = queueApiViewModel.Name; // queueApi.Password = queueApiViewModel.Password.ToString(); // queueApi.StaticMembers = StMembers;// = queueApiViewModel.StaticMembers; // queueApi.RingStrategy = queueApiViewModel.RingStrategy; // queueApi.SkipBusyAgents = queueApiViewModel.SkipBusyAgents.ToString(); // queueApi.JoinAnnounceId = queueApiViewModel.JoinAnnounceId.ToString(); // queueApi.MonitorFormat = queueApiViewModel.MonitorFormat; // queueApi.MonitorJoin = "yes"; // queueApi.MonitorType = queueApiViewModel.MonitorType; // queueApi.MaxWait = queueApiViewModel.MaxWait; // queueApi.SoundThankYou = "queue-thankyou"; // queueApi.SoundCallsWaiting = "queue-callswaiting"; // queueApi.SoundThereAre = "queue-thereare"; // queueApi.SoundYouAreNext = "queue-youarenext"; // queueApi.TimeoutPriority = queueApiViewModel.TimeoutPriority; /////Max Wait Time Mode // queueApi.Timeout = queueApiViewModel.Timeout.ToString(); /////////// Agent Timeout // queueApi.AgentRetry = queueApiViewModel.AgentRetry; // queueApi.ReportHoldTime = queueApiViewModel.ReportHoldTime; // queueApi.AutoPause = queueApiViewModel.AutoPause; // queueApi.AutoPauseDelay = queueApiViewModel.AutoPauseDelay.ToString(); // queueApi.AutoPauseIfBusy = queueApiViewModel.AutoPauseIfBusy; // queueApi.AutoPauseIfUnavailable = queueApiViewModel.AutoPauseIfUnavailable; // queueApi.MaxCallersWaiting = queueApiViewModel.MaxCallersWaiting.ToString(); // queueApi.JoinEmpty = queueApiViewModel.JoinEmpty; // queueApi.LeaveWhenEmpty = queueApiViewModel.LeaveWhenEmpty; // queueApi.AnnounceFrequency = queueApiViewModel.AnnounceFrequency.ToString(); // queueApi.AnnounceHoldtime = queueApiViewModel.AnnounceHoldtime; // queueApi.AnnouncePosition = queueApiViewModel.AnnouncePosition; // //queueApi.EventMemberStatus = "yes"; // //queueApi.EventWhenCalled = "yes"; // queueApi.CronSchedule = queueApiViewModel.CronSchedule; // string json = queueApi.ToJson(); // //int Sucretry = 0; // int Failretry = 0; // retry: // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // var content = new StringContent(json, Encoding.UTF8, "application/json"); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // string Postadd = "https://" + IssabeLIP + "/pbxapi/queues/" + queueApiViewModel.Extension.ToString(); // var response = await client.PutAsync(Postadd, content); // string res; //= response.ToString(); // if (response.IsSuccessStatusCode) // { // //Sucretry += 1; // //if (Sucretry < 2) // //{ // // goto retry; // //} // //else // //{ // res = await response.Content.ReadAsStringAsync(); // res = "true"; // // } // } // else // if (res.Contains("StatusCode: 500") || response.StatusCode.ToString() == "500") // { // Failretry += 1; // if (Failretry < 10) // { // GetNewToken(); // goto retry; // } // else // { // res = "ثبت با خطا روبرو شد با مدیر سیستم تماس بگیرید" + "--" + response.ToString() + "--" + json + "--"; // } // } // return res; //} //public async Task<string> DeleteExtensionRestApi(long extensionNumber) //{ // retry: // string token = await GetNewTokenRest(); // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // string postadd = "https://" + IssabeLIP + "/pbxapi/extensions/" + extensionNumber.ToString(); // var request = new HttpRequestMessage(HttpMethod.Delete, postadd); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // var response = await client.SendAsync(request); // string res = ""; // if (response.IsSuccessStatusCode) // { // res = "true"; // } // else if (response.StatusCode.ToString() == "500") // { // GetNewToken(); // goto retry; // } // else // { // return null; // } // return res; // //string token = GetNewToken(IssabeLIP, LinuXUser, LinuXPassword, IssabeLUser, IssabeLPassword); // //var rawlist = (ExecuteSshCommand(IssabeLIP, LinuXUser, LinuXPassword, "curl -v -L -k -X DELETE -H \"Authorization: Bearer " + token + "\" https://localhost/pbxapi/extensions/" + extensionNumber.ToString() + " | python -m json.tool ")); // //string[] res = new string[3]; // //if (rawlist[3].Contains("HTTP/1.1 200 OK")) // //{ // // res[0] = "true"; // // res[1] = ""; // //} // //else // //{ // // res[0] = "false"; // // res[1] = "ارتباط با سرور برقرار نشد"; // //} // //return res; //} //public async Task<string> EditExtensionRestApi(ExtensionApiViewModel extensionViewModel) //{ // //byte[] bytes = Encoding.ASCII.GetBytes(extensionViewModel.Name); ; // retry: string token = await GetNewTokenRest(); // ExtensionApiClass extension = new ExtensionApiClass // { // Extension = extensionViewModel.Extension, // Name = extensionViewModel.Name, // Secret = extensionViewModel.Secret // }; // DeviceOptions extensiondeviceoptions = new DeviceOptions(); // extensiondeviceoptions.DtmfMode = extensionViewModel.DeviceOptions_DtmfMode; // extensiondeviceoptions.Encryption = extensionViewModel.DeviceOptions_Encryption; // extensiondeviceoptions.Nat = extensionViewModel.DeviceOptions_Nat; // extensiondeviceoptions.Port = extensionViewModel.DeviceOptions_Port; // extensiondeviceoptions.Transport = extensionViewModel.DeviceOptions_Transport; // Recording extensionrecording = new Recording(); // extensionrecording.InboundExternal = extensionViewModel.Recording_InboundExternal; // extensionrecording.InboundInternal = extensionViewModel.Recording_InboundInternal; // extensionrecording.OutboundExternal = extensionViewModel.Recording_OutboundExternal; // extensionrecording.OutboundInternal = extensionViewModel.Recording_OutboundInternal; // extensionrecording.Priority = extensionViewModel.Recording_Priority; // extension.DeviceOptions = extensiondeviceoptions; // extension.Recording = extensionrecording; // ExtensionOptions extensionOptions = new ExtensionOptions(); // extensionOptions.CallForwardRingTime = extensionViewModel.cfringtimer; // extensionOptions.CallWaiting = extensionViewModel.callwaiting; // extensionOptions.OutboundConcurrencyLimit = extensionViewModel.concurrency_limit; // extensionOptions.RingTime = extensionViewModel.ringtimer; // extension.ExtensionOptions = extensionOptions; // if (extensionViewModel.Voicemail_Voicemail == "yes") // { // Voicemail exvoicemail = new Voicemail(); // exvoicemail.Enabled = "yes"; // exvoicemail.Pin = extensionViewModel.Voicemail_Password; // exvoicemail.Email = extensionViewModel.Voicemail_EmailAddress; // Options exvoiceopt = new Options(); // exvoiceopt.EmailAttachment = extensionViewModel.Voicemail_EmailAttachmen; // exvoiceopt.PlayCallerid = extensionViewModel.Voicemail_PlayCID; // exvoiceopt.PlayEnvelope = extensionViewModel.Voicemail_PlayEnvelope; // exvoiceopt.Delete = extensionViewModel.Voicemail_DeleteVoicemail; // extension.Voicemail = exvoicemail; // extension.Voicemail.Options = exvoiceopt; // } // else // { // //extension.Voicemail.Enabled = "no"; // } // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // string json = extension.ToJson(); // var content = new StringContent(json, Encoding.UTF8, "application/json"); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // string postadd = "https://" + IssabeLIP + "/pbxapi/extensions/" + extensionViewModel.Extension.ToString(); // var response = await client.PutAsync(postadd, content); // string res = ""; // if (response.IsSuccessStatusCode) // { // //res = await response.Content.ReadAsStringAsync(); // res = "true"; // } // else if (response.StatusCode.ToString() == "422") // { // await DeleteExtensionRestApi(extensionViewModel.Extension); // goto retry; // } // else if (response.StatusCode.ToString() == "500") // { // GetNewToken(); // goto retry; // } // else // { // res = response.ToString(); // } // return res; // //Voicemail_Voicemail // //Voicemail_Password // //Voicemail_EmailAddress // //Voicemail_EmailAttachmen // //Voicemail_PlayCID // //Voicemail_PlayEnvelope // //Voicemail_DeleteVoicemail //} //public async Task<ExtensionApiViewModel> GetExtensionRestApi(long extensionNumber) //{ // retry: // string token = await GetNewTokenRest(); // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // string postadd = "https://" + IssabeLIP + "/pbxapi/extensions/" + extensionNumber.ToString(); // var request = new HttpRequestMessage(HttpMethod.Get, postadd); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // var response = await client.SendAsync(request); // string res = await response.Content.ReadAsStringAsync(); // if (response.IsSuccessStatusCode) // { // if (!res.Contains("secret")) // { // } // } // else if (response.StatusCode.ToString() == "500") // { // GetNewToken(); // goto retry; // } // else // { // return null; // } // res = res.Substring(31); // res = res.Substring(0, (res.Length - 2)); // ExtensionApiClass extension = ExtensionApiClass.FromJson(res); // ExtensionApiViewModel extensionViewModel = new ExtensionApiViewModel(); // extensionViewModel.Extension = extension.Extension.Value; // extensionViewModel.Name = extension.Name; // extensionViewModel.Secret = extension.Secret; // extensionViewModel.DeviceOptions_DtmfMode = extension.DeviceOptions.DtmfMode; // extensionViewModel.DeviceOptions_Encryption = extension.DeviceOptions.Encryption; // extensionViewModel.DeviceOptions_Nat = extension.DeviceOptions.Nat; // extensionViewModel.DeviceOptions_Port = extension.DeviceOptions.Port.Value; // extensionViewModel.DeviceOptions_Transport = extension.DeviceOptions.Transport; // extensionViewModel.Recording_InboundExternal = extension.Recording.InboundExternal; // extensionViewModel.Recording_InboundInternal = extension.Recording.InboundInternal; // extensionViewModel.Recording_OutboundExternal = extension.Recording.OutboundExternal; // extensionViewModel.Recording_OutboundInternal = extension.Recording.OutboundInternal; // extensionViewModel.Recording_Priority = extension.Recording.Priority.Value; // extensionViewModel.cfringtimer = extension.ExtensionOptions.CallForwardRingTime.Value; // extensionViewModel.callwaiting = extension.ExtensionOptions.CallWaiting; // extensionViewModel.concurrency_limit = extension.ExtensionOptions.OutboundConcurrencyLimit.Value; // extensionViewModel.ringtimer = extension.ExtensionOptions.RingTime.Value; // if (extension.Voicemail.Enabled == "yes") // { // extensionViewModel.Voicemail_Voicemail = "yes"; // extensionViewModel.Voicemail_Password = extension.Voicemail.Pin.Value; // extensionViewModel.Voicemail_EmailAddress = extension.Voicemail.Email; // extensionViewModel.Voicemail_EmailAttachmen = extension.Voicemail.Options.EmailAttachment; // extensionViewModel.Voicemail_PlayCID = extension.Voicemail.Options.PlayCallerid; // extensionViewModel.Voicemail_PlayEnvelope = extension.Voicemail.Options.PlayEnvelope; // extensionViewModel.Voicemail_DeleteVoicemail = extension.Voicemail.Options.Delete; // } // else // { // extensionViewModel.Voicemail_Voicemail = "no"; // extensionViewModel.Voicemail_Password = 2222; // extensionViewModel.Voicemail_EmailAddress = "*****@*****.**"; // extensionViewModel.Voicemail_EmailAttachmen = "no"; // extensionViewModel.Voicemail_PlayCID = "no"; // extensionViewModel.Voicemail_PlayEnvelope = "no"; // extensionViewModel.Voicemail_DeleteVoicemail = "no"; // } // //extensionViewModel.Voicemail_Voicemail = "selected"; // //extensionViewModel.Voicemail_Password = 2222; // //extensionViewModel.Voicemail_EmailAddress = "*****@*****.**"; // //extensionViewModel.Voicemail_EmailAttachmen = "yes"; // //extensionViewModel.Voicemail_PlayCID = "yes"; // //extensionViewModel.Voicemail_PlayEnvelope = "yes"; // //extensionViewModel.Voicemail_DeleteVoicemail = "yes"; // //return null; // return extensionViewModel; //} //public async Task<string> NewExtensionRestApi(ExtensionApiViewModel extensionViewModel) //{ // byte[] bytes = Encoding.UTF8.GetBytes(extensionViewModel.Name); ; // string token = await GetNewTokenRest(); // ExtensionApiClass extension = new ExtensionApiClass(); // extension.Extension = extensionViewModel.Extension; // extension.Name = Encoding.UTF8.GetString(bytes); // extension.Secret = extensionViewModel.Secret; // DeviceOptions extensiondeviceoptions = new DeviceOptions(); // extensiondeviceoptions.DtmfMode = extensionViewModel.DeviceOptions_DtmfMode; // extensiondeviceoptions.Encryption = extensionViewModel.DeviceOptions_Encryption; // extensiondeviceoptions.Nat = extensionViewModel.DeviceOptions_Nat; // extensiondeviceoptions.Port = extensionViewModel.DeviceOptions_Port; // extensiondeviceoptions.Transport = extensionViewModel.DeviceOptions_Transport; // Recording extensionrecording = new Recording(); // extensionrecording.InboundExternal = extensionViewModel.Recording_InboundExternal; // extensionrecording.InboundInternal = extensionViewModel.Recording_InboundInternal; // extensionrecording.OutboundExternal = extensionViewModel.Recording_OutboundExternal; // extensionrecording.OutboundInternal = extensionViewModel.Recording_OutboundInternal; // extensionrecording.Priority = extensionViewModel.Recording_Priority; // extension.DeviceOptions = extensiondeviceoptions; // extension.Recording = extensionrecording; // ExtensionOptions extensionOptions = new ExtensionOptions(); // extensionOptions.CallForwardRingTime = extensionViewModel.cfringtimer; // extensionOptions.CallWaiting = extensionViewModel.callwaiting; // extensionOptions.OutboundConcurrencyLimit = extensionViewModel.concurrency_limit; // extensionOptions.RingTime = extensionViewModel.ringtimer; // extension.ExtensionOptions = extensionOptions; // if (extensionViewModel.Voicemail_Voicemail == "yes") // { // Voicemail exvoicemail = new Voicemail(); // exvoicemail.Enabled = "yes"; // exvoicemail.Pin = extensionViewModel.Voicemail_Password; // exvoicemail.Email = extensionViewModel.Voicemail_EmailAddress; // Options exvoiceopt = new Options(); // exvoiceopt.EmailAttachment = extensionViewModel.Voicemail_EmailAttachmen; // exvoiceopt.PlayCallerid = extensionViewModel.Voicemail_PlayCID; // exvoiceopt.PlayEnvelope = extensionViewModel.Voicemail_PlayEnvelope; // exvoiceopt.Delete = extensionViewModel.Voicemail_DeleteVoicemail; // extension.Voicemail = exvoicemail; // extension.Voicemail.Options = exvoiceopt; // } // else // { // //extension.Voicemail.Enabled = "no"; // } // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); // HttpClient client = new HttpClient(); // string json = extension.ToJson(); // var content = new StringContent(json, Encoding.UTF8, "application/json"); // client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // string postadd = "https://" + IssabeLIP + "/pbxapi/extensions/" + extensionViewModel.Extension.ToString(); // var response = await client.PutAsync(postadd, content); // string res = await response.Content.ReadAsStringAsync(); // if (response.IsSuccessStatusCode) // { // res = await response.Content.ReadAsStringAsync(); // res = "true"; // } // else // { // res = "false"; // } // //if (res.Contains("Created")) // //{ // // res = "true"; // //} // //else // //{ // // res = "false"; // //} // return res; //} public async Task <string> GetNewTokenRest() { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); }); int retry = 0; retry: HttpClient client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://" + IssabeLIP + "/pbxapi/authenticate/"); var requestContent = string.Format("user={0}&password={1}", Uri.EscapeDataString(IssabeLUser), Uri.EscapeDataString(IssabeLPassword)); request.Content = new StringContent(requestContent, Encoding.UTF8, "application/x-www-form-urlencoded"); var response = await client.SendAsync(request); string res = await response.Content.ReadAsStringAsync(); if (res.Contains("access_token")) { return(AccessTokenApi.FromJson(res).AccessToken); } else { if (retry <= 5) { goto retry; } else { return(null); } } }
public static string ToJson(this AccessTokenApi self) => JsonConvert.SerializeObject(self, Converter.Settings);