Entidades y tipos de actividad

SE APLICA A: SDK v4

Las entidades son una parte de una actividad y proporcionan información adicional sobre la actividad o la conversación.

Nota:

Distintos elementos del SDK definen a clases o elementos de entidad independientes.

Entities

La propiedad entidades de un mensaje es una matriz de objetos schema.org de extremo abierto que permite el intercambio de metadatos contextuales comunes entre el canal y el bot.

Entidades de mención

Muchos canales ofrecen la posibilidad de que un bot o usuario "mencione" a alguien dentro del contexto de una conversación. Para mencionar a un usuario en un mensaje, rellene la propiedad entities del mensaje con un objeto mention. El objeto mention contiene estas propiedades:

Propiedad Descripción
Tipo Tipo de la entidad ("mención")
Mentioned Objeto de cuenta de canal que indica a qué usuario se ha mencionado
Texto Texto de la propiedad activity.text que representa la mención en sí misma (puede estar vacío o ser NULL)

En este ejemplo de código se muestra cómo se agrega una entidad mention a la colección entities:

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

Sugerencia

Al intentar determinar la intención del usuario, puede que el bot omita la parte del mensaje en la que se menciona. Llame al método GetMentions y evalúe los objetos Mention devueltos en la respuesta.

Objetos Place

La información relacionada con la ubicación se puede transmitir dentro de un mensaje si se rellena la propiedad entities del mensaje con un objeto Place o GeoCoordinates.

El objeto place contiene estas propiedades:

Propiedad Descripción
Tipo Tipo de la entidad ("Lugar")
Dirección Descripción u objeto de dirección postal (futuro)
Geoárea GeoCoordinates
HasMap Dirección URL de un mapa u objeto de mapa (en un futuro)
Nombre Nombre del lugar

El objeto geoCoordinates contiene estas propiedades:

Propiedad Descripción
Tipo Tipo de la entidad ("Geocoordenadas")
Nombre Nombre del lugar
Longitud Longitud de la ubicación (WGS 84)
Latitud Latitud de la ubicación (WGS 84)
Elevation Altitud de la ubicación (WGS 84)

En este ejemplo de código se muestra cómo se agrega una entidad place a la colección entities:

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 la palabra clave dynamic o clases fuertemente tipadas.

En este ejemplo de código se muestra cómo usar la palabra clave dynamic para procesar una entidad en la propiedad Entities de un mensaje:

if (entity.Type == "Place")
{
    dynamic place = entity.Properties;
    if (place.geo.latitude > 34)
        // do something
}

En este ejemplo de código se muestra cómo usar una clase fuertemente tipada para procesar una entidad en la propiedad Entities de un mensaje:

if (entity.Type == "Place")
{
    Place place = entity.GetAs<Place>();
    GeoCoordinates geo = place.Geo.ToObject<GeoCoordinates>();
    if (geo.Latitude > 34)
        // do something
}

Tipos de actividades

Las actividades pueden ser de otros tipos además de message (el más común). Puede encontrar más explicaciones y detalles sobre los diferentes tipos de actividades en el esquema de actividad de Bot Framework.