實體和活動類型
適用于: SDK v4
實體是活動的一部分,並提供活動或交談的其他資訊。
注意
SDK 的不同部分會定義不同的 實體 類別或元素。
實體
訊息的 entities 屬性是開放式 schema.org 物件的陣列,可讓通道與 Bot 之間交換通用內容中繼資料。
提及實體
許多頻道都支援聊天機器人或使用者在交談內容中「提及」某人的能力。 若要提及訊息中的使用者,請使用 mention 物件填入訊息的 entities 屬性 。 提及物件包含下列屬性:
屬性 | 描述 |
---|---|
類型 | 實體的類型(「提及」) |
提到 | 指出所提及使用者的通道帳戶物件 |
Text | 代表提及本身的 activity.text 屬性內的文字(可能是空的或 Null 的) |
此程式碼範例示範如何將提及實體新增至實體集合。
var entity = new Entity();
entity.SetAs(new Mention()
{
Text = "@johndoe",
Mentioned = new ChannelAccount()
{
Name = "John Doe",
Id = "UV341235"
}
});
entities.Add(entity);
提示
嘗試判斷使用者意圖時,Bot 可能會想要忽略所提及訊息的該部分。 GetMentions
呼叫 方法並評估 Mention
回應中傳回的物件。
放置物件
藉由使用 Place 物件或 GeoCoordinates 物件填入訊息的 entities 屬性,即可在訊息中傳達位置相關資訊 。
place 物件包含下列屬性:
屬性 | 描述 |
---|---|
類型 | 實體的類型 (「Place」) |
位址 | 描述或郵政位址物件(未來) |
地理位置 | GeoCoordinates |
HasMap | 地圖或地圖物件的 URL(未來) |
名稱 | 地點的名稱 |
geoCoordinates 物件包含下列屬性:
屬性 | 描述 |
---|---|
類型 | 實體的類型 (「GeoCoordinates」) |
名稱 | 地點的名稱 |
緯度 | 位置的經度 ( WGS 84 ) |
緯度 | 位置的緯度 ( WGS 84 ) |
提升權限 | 位置高度 ( 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 活動架構 中找到 不同活動類型的說明和進一步詳細資料。