Entidades e tipos de atividade
APLICA-SE A: SDK v4
As entidades fazem parte de uma atividade e fornecem informações adicionais sobre a atividade ou conversa.
Nota
Diferentes partes do SDK definem classes de entidade ou elementos separados.
Entidades
A propriedade entities de uma mensagem é uma matriz de objetos schema.org abertos, que permite a troca de metadados contextuais comuns entre o canal e o bot.
Mencionar entidades
Muitos canais suportam a capacidade de um bot ou usuário "mencionar" alguém dentro do contexto de uma conversa. Para mencionar um usuário em uma mensagem, preencha a propriedade entities da mensagem com um objeto de menção . O objeto mention contém estas propriedades:
Propriedade | Descrição |
---|---|
Type | Tipo de entidade ("menção") |
Mencionado | Objeto de conta de canal que indica qual usuário foi mencionado |
Texto | Texto dentro da propriedade activity.text que representa a própria menção (pode estar vazio ou nulo) |
Este exemplo de código mostra como adicionar uma entidade de menção à coleção entities.
var entity = new Entity();
entity.SetAs(new Mention()
{
Text = "@johndoe",
Mentioned = new ChannelAccount()
{
Name = "John Doe",
Id = "UV341235"
}
});
entities.Add(entity);
Gorjeta
Ao tentar determinar a intenção do usuário, o bot pode querer ignorar a parte da mensagem em que ela é mencionada. Chame o método e avalie GetMentions
os objetos retornados Mention
na resposta.
Colocar objetos
As informações relacionadas ao local podem ser transmitidas dentro de uma mensagem preenchendo a propriedade entities da mensagem com um objeto Place ou um objeto GeoCoordinates.
O objeto place contém estas propriedades:
Propriedade | Descrição |
---|---|
Type | Tipo de entidade ("Lugar") |
Endereço | Descrição ou objeto de endereço postal (futuro) |
Geografia | GeoCoordenadas |
HasMapa | URL para um mapa ou objeto de mapa (futuro) |
Nome | Nome do local |
O objeto geoCoordinates contém estas propriedades:
Propriedade | Descrição |
---|---|
Type | Tipo de entidade ("GeoCoordenadas") |
Nome | Nome do local |
Longitude | Longitude do local (WGS 84) |
Latitude | Latitude do local (WGS 84) |
Elevation | Elevação da localização (WGS 84) |
Este exemplo de código mostra como adicionar uma entidade place à coleção entities:
var entity = new Entity();
entity.SetAs(new Place()
{
Geo = new GeoCoordinates()
{
Latitude = 32.4141,
Longitude = 43.1123123,
}
});
entities.Add(entity);
Entidades consumidoras
Para consumir entidades, use a dynamic
palavra-chave ou classes fortemente tipadas.
Este exemplo de código mostra como usar a dynamic
palavra-chave para processar uma entidade dentro da Entities
propriedade de uma mensagem:
if (entity.Type == "Place")
{
dynamic place = entity.Properties;
if (place.geo.latitude > 34)
// do something
}
Este exemplo de código mostra como usar uma classe fortemente tipada para processar uma entidade dentro da Entities
propriedade de uma mensagem:
if (entity.Type == "Place")
{
Place place = entity.GetAs<Place>();
GeoCoordinates geo = place.Geo.ToObject<GeoCoordinates>();
if (geo.Latitude > 34)
// do something
}
Tipos de atividades
As atividades podem ser de vários tipos diferentes além da mensagem mais comum. Explicações e mais detalhes sobre diferentes tipos de atividade podem ser encontrados no esquema de atividade do Bot Framework.