Entità e tipi di attività

SI APPLICA A: SDK v4

Le entità fanno parte di un'attività e forniscono informazioni aggiuntive sull'attività o la conversazione.

Nota

Diverse parti dell'SDK definiscono classi di entità o elementi separati.

Entità

La proprietà entities di un messaggio è una matrice di oggetti schema.org aperti, che consente lo scambio di metadati contestuali comuni tra il canale e il bot.

Entità mention

Molti canali supportano la possibilità per un bot o un utente di "menzionare" qualcuno nel contesto di una conversazione. Per menzionare un utente in un messaggio, popolare la proprietà Entities del messaggio con un oggetto mention. L'oggetto mention contiene queste proprietà:

Proprietà Descrizione
Tipo Tipo dell'entità ("menzione")
Con menzione Oggetto account canale che indica quale utente è stato menzionato
Testo Testo all'interno della proprietà activity.text che rappresenta la menzione stessa (può essere vuota o null)

Questo esempio di codice illustra come aggiungere un'entità mention alla raccolta di entità.

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

Suggerimento

Quando si tenta di determinare la finalità dell'utente, il bot può voler ignorare quella parte del messaggio in cui è menzionata. Chiamare il metodo GetMentions e valutare gli oggetti Mention restituiti nella risposta.

Posizionare gli oggetti

Le informazioni relative alla posizione possono essere trasferite all'interno di un messaggio popolando la proprietà Entities del messaggio con un oggetto Place o GeoCoordinates.

L'oggetto Place contiene queste proprietà:

Proprietà Descrizione
Tipo Tipo dell'entità ("Place")
Indirizzo Descrizione o oggetto indirizzo postale (futuro)
Area geografica GeoCoordinates
HasMap URL di una mappa o un oggetto map (futuro)
Nome Nome del luogo

L'oggetto geoCoordinates contiene queste proprietà:

Proprietà Descrizione
Tipo Tipo dell'entità ("GeoCoordinates")
Nome Nome del luogo
Longitude Longitudine della posizione (WGS 84)
Latitudine Latitudine della posizione (WGS 84)
Elevazione Elevazione della posizione (WGS 84)

Questo esempio di codice illustra come aggiungere un'entità Place alla raccolta di entità:

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

Usare le entità

Per utilizzare le entità, usare la dynamic parola chiave o le classi fortemente tipate.

Questo esempio di codice illustra come usare la parola chiave dynamic per elaborare un'entità all'interno della proprietà Entities di un messaggio:

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

Questo esempio di codice illustra come usare una classe fortemente tipizzata per elaborare un'entità all'interno della Entities proprietà di un messaggio:

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

Tipi di impegno

Le attività possono essere di diversi tipi, oltre al tipo message più comune. Le spiegazioni e altre informazioni sui diversi tipi di attività sono disponibili nello schema delle attività di Bot Framework.