Получение результата запроса LUIS - PullRequest
0 голосов
/ 31 августа 2018

Я создал учетную запись LUIS и сделал все, что было нужно.

Я написал следующий код и получил результат от LUIS.

Мне нужно знать, как сохранить результат моего запроса в переменной, используя которую я хотел бы искать в базе данных или в Интернете.

Ниже приведен код ..

static async void MakeRequest(string qz) {

            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);
            var luisAppId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
            var endpointKey = "XXXXXXXXXXXX";

            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", endpointKey);

            // The "q" parameter contains the utterance to send to LUIS
            queryString["q"] = qz;

            // These optional request parameters are set to their default values
            queryString["timezoneOffset"] = "0";
            queryString["verbose"] = "false";
            queryString["spellCheck"] = "false";
            queryString["staging"] = "false";

            var endpointUri = "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/" + luisAppId + "?" + queryString;
            var response = await client.GetAsync(endpointUri.);

            var strResponseContent = await response.Content.ReadAsStringAsync();


            // Display the JSON result from LUIS
            Console.WriteLine(strResponseContent.ToString());



        }

А также вот результат запроса.

{
  "query": "the best resturant in Paris",
  "topScoringIntent": {
    "intent": "city",
    "score": 0.436210483
  },
  "entities": [
    {
      "entity": "paris",
      "type": "city",
      "startIndex": 22,
      "endIndex": 26,
      "score": 0.7153605
    }
  ]
}

Теперь я хочу сохранить это

"entity": "paris",
"type": "city",

к переменной. Пожалуйста, ведите меня, поскольку я совершенно новичок в MS LUIS.

пример:

string result = "paris" ///, значение которого должно быть взято из запроса luis

string type = "city" ///, значение которого следует взять из запроса luis

1 Ответ

0 голосов
/ 31 августа 2018

Одним из вариантов является ссылка Newtonsoft.Json NuGet на ваш проект.

Тогда вы можете создать два класса (смените название)

public class LuisExtractionLuisResult
{
    public List<LuisEntity> entities { get; set; }
}

public class LuisEntity
{
    public string entity { get; set; }

    public string type { get; set; }
}

Тогда один пример использования

var target = JsonConvert.DeserializeObject<LuisExtractionLuisResult>(strResponseContent);

запрошенные значения затем извлекаются:

string result = target.entities[0].entity;
string type = target.entities[0].type;

И еще один вопрос, если в запросе у нас более одной сущности. как это получить?

foreach(LuisEntity oneEntity in target.entities)
{
    string result oneEntity.entity;
    string type = oneEntity.type;
}
...