엔터티 및 작업 형식Entities and activity types

적용 대상: SDK v4APPLIES TO: SDK v4

엔터티는 작업의 일부이며 작업 또는 대화에 대한 추가 정보를 제공합니다.Entities are a part of an activity, and provide additional information about the activity or conversation.

참고

SDK의 여러 부분에서 별도 엔터티 클래스 또는 요소를 정의합니다.Different parts of the SDK define separate Entity classes or elements.

엔터티Entities

메시지의 엔터티 속성은 채널과 봇 간의 일반적인 상황별 메타데이터를 교환할 수 있는 개방형 schema.org 개체의 배열입니다.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.

멘션 엔터티Mention entities

다양한 채널은 봇 또는 사용자가 대화 컨텍스트 내에서 누군가를 "멘션"하기 위한 기능을 지원합니다.Many channels support the ability for a bot or user to "mention" someone within the context of a conversation. 메시지에서 사용자를 멘션하려면 메시지의 엔터티 속성을 mention 개체로 채웁니다.To mention a user in a message, populate the message's entities property with a mention object. 멘션 개체는 다음 속성을 포함합니다.The mention object contains these properties:

속성Property 설명Description
TypeType 엔터티의 형식("멘션")type of the entity ("mention")
멘션됨Mentioned 멘션된 사용자를 나타내는 채널 계정 개체channel account object that indicates which user was mentioned
텍스트Text 멘션 자체를 나타내는 activity.text 속성 내의 텍스트(비어 있거나 Null일 수 있음)text within the activity.text property that represents the mention itself (may be empty or null)

이 코드 예제는 엔터티 컬렉션에 멘션 엔터티를 추가하는 방법을 보여줍니다.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);

사용자 의도를 확인하려고 시도할 때 봇은 멘션된 메시지의 해당 부분을 무시하려고 할 수 있습니다.When attempting to determine user intent, the bot may want to ignore that portion of the message where it is mentioned. GetMentions 메서드를 호출하고 응답에서 반환된 Mention 개체를 평가합니다.Call the GetMentions method and evaluate the Mention objects returned in the response.

장소 개체Place objects

위치 관련 정보는 메시지의 엔터티 속성을 장소 개체 또는 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.

장소 개체는 다음 속성을 포함합니다.The place object contains these properties:

속성Property 설명Description
TypeType 엔터티의 형식("Place")type of the entity ("Place")
주소Address 설명 또는 우편 주소 개체(이후)description or postal address object (future)
지역Geo GeoCoordinatesGeoCoordinates
HasMapHasMap 맵 또는 맵 개체에 대한 URL(이후)URL to a map or map object (future)
속성Name 장소의 이름name of the place

geoCoordinates 개체는 다음 속성을 포함합니다.The geoCoordinates object contains these properties:

속성Property 설명Description
TypeType 엔터티의 형식("GeoCoordinates")type of the entity ("GeoCoordinates")
속성Name 장소의 이름name of the place
경도Longitude 위치의 경도(WGS 84)longitude of the location (WGS 84)
위도Latitude 위치의 위도(WGS 84)latitude of the location (WGS 84)
상승Elevation 위치의 상승(WGS 84)elevation of the location (WGS 84)

이 코드 예제는 엔터티 컬렉션에 장소 엔터티를 추가하는 방법을 보여줍니다.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);

엔터티 사용Consume entities

엔터티를 사용하려면 dynamic 키워드 또는 강력한 형식의 클래스 중 하나를 사용합니다.To consume entities, use either the dynamic keyword or strongly-typed classes.

이 코드 예제는 dynamic 키워드를 사용하여 메시지의 Entities 속성 내에서 엔터티를 처리하는 방법을 보여줍니다.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
}

이 코드 예제는 강력한 형식의 클래스를 사용하여 메시지의 Entities 속성 내에서 엔터티를 처리하는 방법을 보여줍니다.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
}

작업 유형Activity types

작업은 몇 가지 다른 형식의 가장 일반적인 메시지일 수 있습니다.Activities can be of several different types past the most common message. 여러 작업 유형에 대한 설명 및 자세한 내용은 Bot Framework 작업 스키마에서 찾을 수 있습니다.Explanations and further details on different activity types can be found in the Bot Framework Activity schema.