public AIResponse VoiceRequest(Stream voiceStream, RequestExtras requestExtras = null) { var request = new AIRequest(); request.Language = config.Language.code; request.Timezone = TimeZone.CurrentTimeZone.StandardName; request.SessionId = sessionId; if (requestExtras != null) { requestExtras.CopyTo(request); } try { var httpRequest = (HttpWebRequest)WebRequest.Create(config.RequestUrl); httpRequest.Method = "POST"; httpRequest.Accept = "application/json"; httpRequest.Headers.Add("Authorization", "Bearer " + config.ClientAccessToken); httpRequest.Headers.Add("ocp-apim-subscription-key", config.SubscriptionKey); var jsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; var jsonRequest = JsonConvert.SerializeObject(request, Formatting.None, jsonSettings); if (config.DebugLog) { Debug.WriteLine("Request: " + jsonRequest); } var multipartClient = new MultipartHttpClient(httpRequest); multipartClient.connect(); multipartClient.addStringPart("request", jsonRequest); multipartClient.addFilePart("voiceData", "voice.wav", voiceStream); multipartClient.finish(); var responseJsonString = multipartClient.getResponse(); if (config.DebugLog) { Debug.WriteLine("Response: " + responseJsonString); } var aiResponse = JsonConvert.DeserializeObject <AIResponse>(responseJsonString); CheckForErrors(aiResponse); return(aiResponse); } catch (Exception e) { throw new AIServiceException(e); } }
public async Task <AIResponse> VoiceRequestAsync(Stream voiceStream, RequestExtras requestExtras = null) { var request = new AIRequest(); request.Language = config.Language.code; request.Timezone = TimeZoneInfo.Local.StandardName; request.SessionId = sessionId; if (requestExtras != null) { if (requestExtras.HasContexts) { request.Contexts = requestExtras.Contexts; } if (requestExtras.HasEntities) { request.Entities = requestExtras.Entities; } } try { var httpRequest = (HttpWebRequest)WebRequest.Create(config.RequestUrl); httpRequest.Method = "POST"; httpRequest.Accept = "application/json"; httpRequest.Headers["Authorization"] = "Bearer " + config.ClientAccessToken; var jsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; var jsonRequest = JsonConvert.SerializeObject(request, Formatting.None, jsonSettings); if (config.DebugLog) { Debug.WriteLine("Request: " + jsonRequest); } var multipartClient = new MultipartHttpClient(httpRequest); multipartClient.Connect(); multipartClient.AddStringPart("request", jsonRequest); multipartClient.AddFilePart("voiceData", "voice.wav", voiceStream); multipartClient.Finish(); var responseJsonString = await multipartClient.GetResponse(); if (config.DebugLog) { Debug.WriteLine("Response: " + responseJsonString); } var aiResponse = JsonConvert.DeserializeObject <AIResponse>(responseJsonString); CheckForErrors(aiResponse); return(aiResponse); } catch (Exception e) { throw new AIServiceException(e); } }