Partilhar via


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.