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

Partes diferentes do SDK definem elementos ou classes de entidade separadas. Para entidades com reconhecimento LUIS, confira Extrair entidades.

Entities

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.

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 ("menção")
Mencionado Objeto de conta do 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 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 ("local")
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 do local (WGS 84)
Latitude Latitude do local (WGS 84)
Elevação Elevação do local (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 dynamic palavra-chave ou classes com rigidez de tipos.

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 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 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.