Entidades e tipos de atividades

aplica-se a: SDK v4

Entidades são uma parte de uma atividade e fornecem informações adicionais sobre a atividade ou a conversa.

Observação

Diferentes partes do SDK definem classes de Entidade ou elementos separados.

Entidades

A propriedade entidades de uma mensagem é uma matriz de objetos schema.org abertos que permite a troca de metadados contextuais comuns entre o canal e o bot.

Entidades de menção

Vários canais dão suporte à capacidade de um usuário ou bot "mencionar" alguém dentro do contexto de uma conversa. Para mencionar um usuário em uma mensagem, preencha a propriedade entidades da mensagem com um objeto mention. O objeto mention contém essas propriedades:

Propriedade Descrição
Type tipo da entidade ("mention")
Mencionado objeto de conta de canal que indica que o usuário foi mencionado
Texto texto dentro da propriedade activity.text que representa a própria menção (pode ser nulo ou vazio)

Este exemplo de código mostra como adicionar uma entidade mention à coleção de entidades.

var entity = new Entity();
entity.SetAs(new Mention()
{
    Text = "@johndoe",
    Mentioned = new ChannelAccount()
    {
        Name = "John Doe",
        Id = "UV341235"
    }
});
entities.Add(entity);

Dica

Ao tentar determinar a intenção do usuário, o bot pode querer ignorar essa parte da mensagem no qual ele é mencionado. Chame o método GetMentions e avalie os objetos Mention retornados na resposta.

Posicionar objetos

As informações relacionadas a locais podem ser transmitidas dentro de uma mensagem preenchendo a propriedade da mensagem com um objeto Place ou um objeto GeoCoordinates.

O objeto Place contém essas propriedades:

Propriedade Descrição
Type tipo da entidade ("Place")
Endereço Descrição ou objeto de endereço postal (futuro)
Localização geográfica GeoCoordinates
HasMap URL para um mapa ou objeto de mapa (futuro)
Nome nome do local

O objeto GeoCoordinates contém essas propriedades:

Propriedade Descrição
Type tipo da entidade ("GeoCoordinates")
Nome nome do local
Longitude longitude da localização (WGS 84)
Latitude latitude da localização (WGS 84)
Elevação elevação da localização (WGS 84)

Este exemplo de código mostra como adicionar uma entidade place à coleção de entidades:

var entity = new Entity();
entity.SetAs(new Place()
{
    Geo = new GeoCoordinates()
    {
        Latitude = 32.4141,
        Longitude = 43.1123123,
    }
});
entities.Add(entity);

Consumir entidades

Para consumir entidades, use a palavra-chave dynamic ou classes fortemente tipadas.

Este exemplo de código mostra como usar a palavra-chave dynamic para processar uma entidade dentro da propriedade Entities 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 propriedade Entities 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 atividade

As atividades podem ser de vários tipos diferentes após a mensagem mais comum. Encontre explicações e mais detalhes sobre diferentes tipos de atividades no esquema de Atividade do Bot Framework.