Я понял, как добавить метку к намерению, но не уверен, как это сделать для составных объектов. Вот код, который отлично работает для несоставных объектов;
public static void AddLabels(string originalMessage, string intent, List<Label> labels)
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
var uri = "https://westus.api.cognitive.microsoft.com/luis/v1.0/prog/apps/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/example?" + queryString;
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
HttpResponseMessage response;
string body = string.Empty;
string entityLabels = string.Empty;
//get the position of the labels
foreach (var label in labels)
{
entityLabels += label.ToString() + ",";
}
//remove last ","
entityLabels = entityLabels.Remove(entityLabels.Length - 1, 1);
body = string.Format("{{\"ExampleText\": \"{0}\", \"SelectedIntentName\": \"{1}\", \"EntityLabels\": [", originalMessage, intent);
body += entityLabels + "]}";
byte[] byteData = Encoding.UTF8.GetBytes(body);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
try
{
response = client.PostAsync(uri, content).Result;
}catch(Exception ex)
{
}
}
}
Любая помощь приветствуется.