Сущности и типы действий

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Сущности являются частью действия и предоставляют дополнительную информацию о действии или общении.

Примечание.

Различные части пакета SDK определяют отдельные классы сущностей или элементы.

Сущности

Свойство сущностей сообщения — это массив открытых объектов schema.org , который позволяет обмениваться общими контекстными метаданными между каналом и ботом.

Сущности Mention

Многие каналы поддерживают способность бота или пользователя "упоминать" кого-то в контексте общения. Чтобы упомянуть пользователя в сообщении, заполните свойство сущностей сообщения упомянутым объектом. Объект mention содержит следующие свойства.

Свойство Описание
Тип Тип сущности ("упоминание")
Mentioned Объект учетной записи канала, указывающий, какой пользователь был упоминание
Текст Текст в свойстве activity.text, представляющего сам упоминание (может быть пустым или null)

Данный пример кода показывает, как добавить сущность mention в коллекцию сущностей.

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

Совет

При попытке определить намерение пользователя бот может игнорировать эту часть сообщения, где он упоминание. Назовите метод GetMentions и оцените объекты Mention, которые возвращены в ответ.

Объекты Place

Сведения, связанные с местоположением, могут быть переданы в сообщении путем заполнения свойства entities сообщения с помощью объекта Place или GeoCoordinates.

Объект place содержит следующие свойства.

Свойство Описание
Тип Тип сущности ("Место")
Адрес Описание или почтовый адрес объекта (будущее)
Геообъект GeoCoordinates
HasMap URL-адрес карты или объект map (будущее)
Имя Имя места

Объект geoCoordinates содержит следующие свойства.

Свойство Описание
Тип Тип сущности ("GeoCoordinates")
Имя Имя места
Долгота Долгота расположения (WGS 84)
Широта Широта расположения (WGS 84)
Elevation Повышение высоты расположения (WGS 84)

Данный пример кода показывает, как добавить упоминание сущности в коллекцию.

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

Использование сущностей

Чтобы использовать сущности, используйте dynamic ключевое слово или строго типизированные классы.

Данный пример кода показывает, как использовать dynamic ключевое слово для обработки сущности внутри Entities свойства сообщения.

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

В этом примере кода показано, как использовать строго типизированный класс для обработки сущности в Entities свойстве сообщения:

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

Типы действий

Действия могут быть различных типов, самыми распространенными являются сообщение. Объяснения и дополнительные сведения о разных типах действий см. в схеме действий Bot Framework.