Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
                }
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
                    }
                }
        }