次の方法で共有


エンティティとアクティビティの種類

この記事の対象: SDK v4

エンティティはアクティビティの一部であり、アクティビティまたは会話に関する追加情報を提供します。

Note

SDK の異なる部分で、別の entity クラスまたは要素を定義します。

エンティティ

メッセージの "エンティティ" プロパティは、拡張可能な schema.org オブジェクトの配列であり、チャネルとボットの間で共通のコンテキスト メタデータを交換するために使用します。

メンション エンティティ

多くのチャネルは、ボットまたはユーザーが会話のコンテキスト内で誰かを "メンション" する能力をサポートしています。 メッセージでユーザーをメンションするには、メッセージのエンティティ プロパティに mention オブジェクトを設定します。 メンション オブジェクトには、次のプロパティが含まれています。

プロパティ 説明
Type エンティティの種類 ("mention")
Mentioned メンションされたユーザーを示すチャネル アカウント オブジェクト
テキスト メンション自体を表す activity.text プロパティ内のテキスト (空または null 値の可能性があります)

このコード例は、メンション エンティティをエンティティ コレクションに追加する方法を示しています。

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

ヒント

ユーザーの意図を判断しようとするとき、ボットはメッセージの中でメンションされている部分を無視したい場合があります。 GetMentions メソッドを呼び出し、応答で返された Mention オブジェクトを評価します。

場所オブジェクト

場所関連の情報は、メッセージのエンティティ プロパティに Place オブジェクトまたは GeoCoordinates オブジェクトを設定することによってメッセージ内で伝達できます。

place オブジェクトには、次のプロパティが含まれています。

プロパティ 説明
Type エンティティの種類 ("Place")
番地 説明または住所オブジェクト (将来)
地域 GeoCoordinates
HasMap 地図の URL または地図オブジェクト (将来)
名前 場所の名前です

geoCoordinates オブジェクトには、次のプロパティが含まれています。

プロパティ 説明
Type エンティティの種類 ("GeoCoordinates")
名前 場所の名前です
緯度 場所の経度 (WGS 84)
Latitude 場所の緯度 (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
}

活動の種類

アクティビティには最も一般的な message 以外に複数の種類があります。 さまざまなアクティビティの種類の説明と詳細については、Bot Framework のアクティビティ スキーマに関するページを参照してください。