Entidades y tipos de actividadEntities and activity types

se aplica a: SDK V4APPLIES TO: SDK v4

Las entidades son una parte de una actividad y proporcionan información adicional sobre la actividad o la conversación.Entities are a part of an activity, and provide additional information about the activity or conversation.

Nota

Distintos elementos del SDK definen a clases o elementos de entidad independientes.Different parts of the SDK define separate Entity classes or elements.

EntidadesEntities

La propiedad entities 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.The entities property of a message is an array of open-ended schema.org objects which allows the exchange of common contextual metadata between the channel and bot.

Entidades de menciónMention entities

Muchos canales ofrecen la posibilidad de que un bot o usuario "mencione" a alguien dentro del contexto de una conversación.Many channels support the ability for a bot or user to "mention" someone within the context of a conversation. Para mencionar a un usuario en un mensaje, rellene la propiedad entities del mensaje con un objeto mention.To mention a user in a message, populate the message's entities property with a mention object. El objeto mention contiene estas propiedades:The mention object contains these properties:

PropiedadProperty DescripciónDescription
TipoType Tipo de la entidad ("mention")type of the entity ("mention")
MentionedMentioned Objeto de cuenta de canal que indica a qué usuario se ha mencionadochannel account object that indicates which user was mentioned
TextoText Texto de la propiedad activity.text que representa la mención en sí misma (puede estar vacío o ser NULL)text within the activity.text property that represents the mention itself (may be empty or null)

En este ejemplo de código se muestra cómo se agrega una entidad mention a la colección entities:This code example shows how to add a mention entity to the entities collection.

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.When attempting to determine user intent, the bot may want to ignore that portion of the message where it is mentioned. Llame al método GetMentions y evalúe los objetos Mention devueltos en la respuesta.Call the GetMentions method and evaluate the Mention objects returned in the response.

Objetos PlacePlace objects

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.Location-related information can be conveyed within a message by populating the message's entities property with either a Place object or a GeoCoordinates object.

El objeto place contiene estas propiedades:The place object contains these properties:

PropiedadProperty DescripciónDescription
TipoType Tipo de la entidad ("Place")type of the entity ("Place")
DirecciónAddress Descripción u objeto de dirección postal (en un futuro)description or postal address object (future)
GeoáreaGeo GeoCoordinatesGeoCoordinates
HasMapHasMap Dirección URL de un mapa u objeto de mapa (en un futuro)URL to a map or map object (future)
NombreName Nombre del lugarname of the place

El objeto geoCoordinates contiene estas propiedades:The geoCoordinates object contains these properties:

PropiedadProperty DescripciónDescription
TipoType Tipo de la entidad ("GeoCoordinates")type of the entity ("GeoCoordinates")
NombreName Nombre del lugarname of the place
LongitudLongitude Longitud de la ubicación (WGS 84)longitude of the location (WGS 84)
LatitudLatitude Latitud de la ubicación (WGS 84)latitude of the location (WGS 84)
ElevationElevation Altitud de la ubicación (WGS 84)elevation of the location (WGS 84)

En este ejemplo de código se muestra cómo se agrega una entidad place a la colección entities:This code example shows how to add a place entity to the entities collection:

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

Consumir entidadesConsume entities

Para consumir entidades, use la palabra clave dynamic o clases fuertemente tipadas.To consume entities, use either the dynamic keyword or strongly-typed classes.

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:This code example shows how to use the dynamic keyword to process an entity within the Entities property of a message:

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:This code example shows how to use a strongly-typed class to process an entity within the Entities property of a message:

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

Tipos de actividadActivity types

Las actividades pueden ser de otros tipos además de message (el más común).Activities can be of several different types past the most common message. Puede encontrar más explicaciones y detalles sobre los diferentes tipos de actividades en el esquema de actividad de Bot Framework.Explanations and further details on different activity types can be found in the Bot Framework Activity schema.