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.