/// <summary> /// Use Azure Maps to find location of an address /// </summary> /// <param name="address">The address to search for.</param> /// <returns>Asynchronous task that returns objects identified in the image. </returns> async static Task <OutputRecord.OutputRecordData> GetPosition(InputRecord.InputRecordData inputRecord) { var result = new OutputRecord.OutputRecordData(); var uri = azureMapstUri + "?api-version=1.0&query=" + inputRecord.Address; try { using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Get; request.RequestUri = new Uri(uri); request.Headers.Add("X-ms-client-id", azureMapsKey); var response = await client.SendAsync(request); var responseBody = await response.Content.ReadAsStringAsync(); var data = JsonConvert.DeserializeObject <OutputRecord.OutputRecordData>(responseBody); result = data; } } catch { result = new OutputRecord.OutputRecordData(); } return(result); }
/// <summary> /// Replace this method with a method that enriches or transforms the data in /// a meaningful manner /// </summary> /// <param name="inputField">Replace this with any fields you need to process.</param> /// <returns>Feel free to change the return type to meet your needs. </returns> private static async Task <OutputRecord.OutputRecordData> DoWork(InputRecord.InputRecordData inputRecord) { var outputRecord = new OutputRecord.OutputRecordData(); // Parse MyInputField anc check if it contains anything in Dictionary // If no don't add to MyOutputField // separator could be space or , or ; //right now, facet is not available so look in the dictionary key for 'Organizations' string facetInput = "Organizations"; string filterTermsForFacet = FacetFilterLookup[facetInput]; //string[] inputwords = inputRecord.MyInputField.Split(delimiterChars); string[] filterTerms = filterTermsForFacet.Split(","); StringBuilder sb = new StringBuilder(); string cleansedMyInputField = inputRecord.MyInputField; foreach (var filter in filterTerms) { // Remove all filter in inputRecord.MyInputField and then assign to outputRecord.MyOutputField if (cleansedMyInputField.Contains(filter)) { cleansedMyInputField = cleansedMyInputField.Replace(filter, ""); } } outputRecord.MyOutputField = cleansedMyInputField; return(outputRecord); }
/// <summary> /// Use Cognitive Service to translate text from one language to another. /// </summary> /// <param name="inputRecord">The input record that contains the original text to translate.</param> /// <param name="toLanguage">The language you want to translate to.</param> /// <returns>Asynchronous task that returns the translated text. </returns> async static Task <OutputRecord.OutputRecordData> TranslateText(InputRecord.InputRecordData inputRecord, string toLanguage) { string originalText = inputRecord.Text; var outputRecord = new OutputRecord.OutputRecordData(); object[] body = new object[] { new { Text = originalText } }; var requestBody = JsonConvert.SerializeObject(body); var uri = $"{path}&to={toLanguage}"; using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Post; request.RequestUri = new Uri(uri); request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json"); request.Headers.Add("Ocp-Apim-Subscription-Key", translatorApiKey); request.Headers.Add("Ocp-Apim-Subscription-Region", translatorRegion); var response = await client.SendAsync(request); var responseBody = await response.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject(responseBody); outputRecord.TranslatedText = data?.First?.translations?.First?.text?.Value as string; return(outputRecord); } }
/// <summary> /// Replace this method with a method that enriches or transforms the data in /// a meaningful manner /// </summary> /// <param name="inputField">Replace this with any fields you need to process.</param> /// <returns>Feel free to change the return type to meet your needs. </returns> private static async Task <OutputRecord.OutputRecordData> DoWork(InputRecord.InputRecordData inputRecord) { var outputRecord = new OutputRecord.OutputRecordData(); outputRecord.MyOutputField = "Hello " + inputRecord.MyInputField; return(outputRecord); }
/// <summary> /// Use Cognitive Service to translate text from one language to another. /// </summary> /// <param name="inputRecord">The input record that contains the original text to translate.</param> /// <param name="toLanguage">The language you want to translate to.</param> /// <returns>Asynchronous task that returns the translated text. </returns> async static Task <OutputRecord.OutputRecordData> AnalyzeForm(InputRecord.InputRecordData inputRecord) { string base_url = FormsRecognizerEndpoint + @"/formrecognizer/v1.0-preview/custom"; string fileUrl = inputRecord.formUrl; string sasToken = inputRecord.formSasToken; var outputRecord = new OutputRecord.OutputRecordData(); byte[] bytes = null; using (WebClient client = new WebClient()) { // Read the form to analyze bytes = client.DownloadData(fileUrl + sasToken); } using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { var url = base_url + "/models/" + ModelId + "/analyze"; request.Method = HttpMethod.Post; request.RequestUri = new Uri(url); request.Content = new ByteArrayContent(bytes); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); request.Headers.Add("Ocp-Apim-Subscription-Key", FormsRecognizerKey); var response = await client.SendAsync(request); var responseBody = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { dynamic data = JsonConvert.DeserializeObject(responseBody); var result = JsonConvert.DeserializeObject <FormsRecognizerResponse>(responseBody); var addressValue = GetField(result, "Address", 0); var invoiceFor = GetField(result, "Invoice For", 0); outputRecord.Address = addressValue; outputRecord.Recipient = invoiceFor; return(outputRecord); } else { throw new SystemException(response.StatusCode.ToString() + ": " + response.ToString() + "\n " + responseBody); } } }