рдкрд░рд┐рдЪрдп
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ Google рдХреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╕реЗрд╡рд╛ (рдПрдЖрдИ) - рдбрд╛рдпрд▓реЙрдЧрдлреНрд▓реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмреЙрдЯ (рдЯреЗрд▓реАрдЧреНрд░рд╛рдо) рдерд╛ рдЬреЛ рдХрдИ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рдФрд░ рдЦреБрдж рдбрд╛рдпрд▓реЙрдЧрдлреНрд▓реЛ рдиреЗ рд╣рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╣реА рд╕рдВрдЪрд╛рд░ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕реЗрд╡рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЗрдВ рд╕рдВрднрд╡ рд╣реИрдВ: рдЗрд░рд╛рджреЗ, рд╕рдВрджрд░реНрдн, рдХрд╛рд░реНрдп, рдШрдЯрдирд╛ рдФрд░ рд╣рдо - рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде CRUD рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредDialogFlow рдореЗрдВ рдПрдВрдЯрд┐рдЯреАрдЬ
DialogFlow Entities рдореЗрдВ рдХреБрдЫ рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ ReferenceValue рдФрд░ Synonyms рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдХреЗ рд╕рдорд╛рди рдХреБрдЫ, рдХреЗрд╡рд▓ рдЗрд╕ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдХрд┐ рдХрдИ рдкрд░реНрдпрд╛рдпрд╡рд╛рдЪреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛ, рдЙрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рдмреЙрдЯ рдХреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ" рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХрд┐рд╕ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рдЪреЗрдХрдорд╛рд░реНрдХ рдлрдЬреА рдорд┐рд▓рд╛рди рд╕реЗ рдмреЙрдЯ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рднреА рдорджрдж рдорд┐рд▓реЗрдЧреА рдХрд┐ рджрд╛рдВрд╡ рдкрд░ рдХреНрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдПрдХ рдкрддреНрд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддреАрдХ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реЛрдВред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:рдореЙрд╕реНрдХреЛ - рдореЙрд╕реНрдХреЛ, рдореЙрд╕реНрдХреЛ, рдореЙрд╕реНрдХреЛ ...рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рднреНрд░рдордг рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛, рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдВрдЯрд┐рдЯреА рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рдмрд╣реБрдд рдЙрдкрджреНрд░рд╡ рд╣реИред рдмреЗрд╢рдХ, рдореИрдВ рдЗрд░рд╛рджреЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рдХрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИредEntityTypes
рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдкрд╣рд▓рд╛, рдЫреЛрдЯрд╛, рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рдерд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ Entity рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ EntityType рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ - рдЙрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╣реИ?рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рднреНрд░рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ DialogFlow рдореЗрдВ рд╣реА EntityTypes рдХреЗ рд╕рд╛рде рдЯреИрдм рдХреЛ Entities рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
EntityType:
Entitie:
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ DialogFlo рдореЗрдВ рд╣реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ Entity рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ Entries рд╣реИ (рдЕрд░реНрдерд╛рдд рдЗрд╕рдореЗрдВ рд╕рд╛рд░ рдФрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ)редрдкрд░ рдЪрд▓рддреЗ рд╣реИрдВредрдЖрдк рд╕реАрдзреЗ рдбрд╛рдпрд▓реЛрдлрд╝реНрд▓реЛ рдкрд░ рдПрдХ рдПрдВрдЯрд┐рдЯреА рдЯрд╛рдЗрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдВрдЯрд┐рдЯреАрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдВрдЯрд┐рдЯреА рдЯрд╛рдЗрдк рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)редрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, NuGet рдкреИрдХреЗрдЬ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ Google.Cloud.Dialogflow.V2ред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдВрдЯрд┐рдЯреАрдЯрд╛рдЗрдкрдореЗрдВрдЯ рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреА:using Google.Api.Gax;
using Google.Cloud.Dialogflow.V2;
public class EntityTypeManagement
{
public async Task Create(string projectId, string displayName, EntityType.Types.Kind kind =
EntityType.Types.Kind.Map)
{
var client = await EntityTypesClient.CreateAsync();
var entityType = new EntityType();
entityType.DisplayName = displayName;
entityType.Kind = kind;
var createdEntityType = client.CreateEntityType(
parent: new ProjectAgentName(projectId),
entityType: entityType
);
Console.WriteLine($"Created EntityType: {createdEntityType.Name}");
}
public async Task<PagedEnumerable<ListEntityTypesResponse,EntityType>> List(string projectId)
{
var client = await EntityTypesClient.CreateAsync();
var response = client.ListEntityTypes(
parent: new ProjectAgentName(projectId)
);
return response;
}
public async Task<string> GetEntityTypeId(string projectId,string targetEventTypeName)
{
var client = await EntityTypesClient.CreateAsync();
var response = client.ListEntityTypes(
parent: new ProjectAgentName(projectId)
);
string id = response.Where(x => x.DisplayName == targetEventTypeName).FirstOrDefault().Name;
string returningId = id.Replace($"projects/{projectId}/agent/entityTypes/", "");
return returningId;
}
public async Task Delete(string projectId, string entityTypeId)
{
var client = await EntityTypesClient.CreateAsync();
client.DeleteEntityType(new EntityTypeName(projectId, entityTypeId: entityTypeId));
Console.WriteLine($"Deleted EntityType: {entityTypeId}");
}
public async Task BatchDelete(string projectId, IEnumerable<string> entityTypeIds)
{
var client = await EntityTypesClient.CreateAsync();
var entityTypeNames = entityTypeIds.Select(
id => new EntityTypeName(projectId, id).ToString());
client.BatchDeleteEntityTypes(new ProjectAgentName(projectId),
entityTypeNames);
}
}
рдпрд╣рд╛рдБ рдпрд╣ рддреБрд░рдВрдд рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЗрд╡рд▓ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Create рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИредрдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ EntityTypes рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЗ рд╣реИрдВ, рддреЛ рдЪрд▓рд┐рдП Entity рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рддреБрд░рдВрдд рдПрдХ EntityManagement рд╢реНрд░реЗрдгреА рдмрдирд╛рдПрдВpublic class EntityManagement
{
using Google.Cloud.Dialogflow.V2;
public async Task Create(string projectId,
string entityTypeId,
string entityValue,
string[] synonyms)
{
var client = await EntityTypesClient.CreateAsync();
var entity = new EntityType.Types.Entity() { Value = entityValue};
entity.Synonyms.AddRange(synonyms);
var operation = await client.BatchCreateEntitiesAsync(
parent: new EntityTypeName(projectId, entityTypeId),
entities: new[] { entity }
);
operation.PollUntilCompleted();
}
public async Task CreateMany(string projectId,string entityTypeId, IEnumerable<Entity> entities)
{
var client = await EntityTypesClient.CreateAsync();
List<EntityType.Types.Entity> results = new List<EntityType.Types.Entity>();
foreach (var item in entities)
{
var entity = new EntityType.Types.Entity() { Value = item.value };
entity.Synonyms.AddRange(item.synonyms);
results.Add(entity);
}
var operation = await client.BatchCreateEntitiesAsync(
parent: new EntityTypeName(projectId, entityTypeId),
entities: results.ToArray());
operation.PollUntilCompleted();
}
public async Task Delete(string projectId, string entityTypeId, string entityValue)
{
var client = await EntityTypesClient.CreateAsync();
var operation = await client.BatchDeleteEntitiesAsync(
parent: new EntityTypeName(projectId, entityTypeId),
entityValues: new[] { entityValue }
);
Console.WriteLine("Waiting for the entity deletion operation to complete.");
operation.PollUntilCompleted();
Console.WriteLine($"Deleted Entity: {entityValue}");
}
public async Task<List<Entity>> List(string projectId, string entityTypeId)
{
var client = await EntityTypesClient.CreateAsync();
var entityType = await client.GetEntityTypeAsync(new EntityTypeName(
projectId, entityTypeId
));
List<Entity> EntitiesList = new List<Entity>();
foreach (var entity in entityType.Entities)
{
List<string> Synonyms = new List<string>();
foreach (var item in entity.Synonyms)
{
Synonyms.Add(item);
}
EntitiesList.Add(new Entity { value = entity.Value, synonyms = Synonyms.ToArray() });
Synonyms = null;
}
return EntitiesList;
}
}
рд╣рдорд╛рд░рд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЗрдХрд╛рдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛:public class Entity
{
public string value { get; set; }
public string[] synonyms { get; set; }
}
рд╣реЛ рдЧрдпрд╛, рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА CRUD рд╕реБрд╡рд┐рдзрд╛рдПрдБ рддреИрдпрд╛рд░ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ, рдЕрдкрдбреЗрдЯ рдореЗрдВ рд▓реМрдЯрдХрд░, рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░рд┐рдПрдЯ рднреА рдЕрдкрдбреЗрдЯ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдЙрджрд╛рд╣рд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ рдФрд░, рдореБрдЭреЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛, рдЕрднреА рднреА рдПрдХ "рд╣рд╛рд░реНрдбрдХреЛрдб" рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдореЗрд░реЗ рдЬреИрд╕реЗ, рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдЖрд░рдпреВрдбреА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХреЗредstatic void Main(string[] args)
{
EntityTypesManagement entityTypesManagement = new EntityTypesManagement();
EntityManagement entityManagement = new EntityManagement();
string ProjectId = "Your Project`s id";
string EntityName = "Your EntityName";
var entityId = await entityTypesManagement.GetEntityTypeId(ProjectId, EntityName);
Entity entity = new Entity{value = "1", synonyms = new[]{"1","1"}};
entityManagement.Create(ProjectId,entityId,entity);
}