Microsoft Teams Bot 的運作方式

適用於: SDK v4

本文是以 Bot 的運作方式和事件驅動對話中所學到的內容為基礎;您應該先熟悉這些文章,再繼續。

專為 Microsoft Teams 所開發的 Bot 主要差異在於活動的處理方式。 Teams 活動處理程式衍生自活動處理程式,並在處理更多一般活動類型之前處理 Teams 特定的活動類型。

注意

Bot Framework JavaScript、C# 和 Python SDK 將會繼續受到支援,不過,Java SDK 即將淘汰,最終長期支援將於 2023 年 11 月結束。

使用 Java SDK 建置的現有 Bot 將繼續運作。

針對新的 Bot 建置,請考慮使用 Power Virtual Agents ,並閱讀 選擇正確的聊天機器人解決方案

如需詳細資訊,請參閱 Bot 建置的未來。

Teams 活動處理程式

若要建立適用於 Teams 的 Bot,請從 Teams 活動處理程式 類別衍生您的 Bot。 當這類 Bot 收到活動時,它會透過各種 活動處理程式路由傳送活動。 初始基底處理程式是 回合處理程式,它會根據活動的型別,將活動路由傳送至處理程式。 回合處理程式會呼叫處理程式,其設計目的是要處理所接收的特定活動類型。 Teams 活動處理程式類別衍生自活動處理程序類別。 除了活動處理程式可以處理的活動類型之外,Teams 活動處理程式類別還包含 Teams 特定活動的其他處理程式。

衍生自 Teams 活動處理程式的 Bot 類似於直接衍生自活動處理程式類別的 Bot。 不過,Teams 會在活動中包含 conversationUpdate 其他資訊,並傳送 Teams 特定 invoke 和活動 event

當 Teams 活動處理程式 - Bot 收到訊息活動時,其回合處理程式會將傳入訊息活動路由傳送至其 OnMessageActivityAsync 處理程式,類似於以活動處理程式為基礎的 Bot。 不過,當 Teams Bot 收到交談更新活動時,Teams 版本的 OnConversationUpdateActivityAsync 處理程式會處理活動。

大部分 Teams 特定活動處理程式都沒有基底實作。 您必須覆寫這些處理程式,併為 Bot 提供適當的邏輯。

使用活動處理程式之事件驅動對話一節中所述的所有活動處理程式都會繼續像處理非 Teams Bot 一樣運作,除了處理新增和移除活動的成員之外,這些活動在小組的內容中會有所不同,而新成員會新增至小組,而不是訊息線程。 如需詳細資訊,請參閱 Teams交談更新活動

若要實作這些 Teams 特定活動處理程式的邏輯,您將覆寫 Bot 中的方法。

Teams-Bot 邏輯

Bot 邏輯會處理來自一或多個 Bot 通道的連入活動,併產生傳出活動以回應。 這仍然是衍生自 Teams 活動處理程式類別的 Bot,該類別會先檢查 Teams 活動,然後將所有其他活動傳遞至 Bot Framework 的活動處理程式。

Teams 安裝更新活動

新增安裝更新事件的處理程式,讓您的 Bot:

  • 在對話線程上安裝簡介訊息時傳送訊息。
  • 從線程卸載時清除用戶和線程數據。

如需詳細資訊,請參閱 Teams 檔中的安裝更新事件

Teams 交談更新活動

下表列出在 Bot 中產生 交談更新 活動的 Teams 事件。 Microsoft Teams 交談更新事件 文章說明如何使用這些事件。

以下是從 OnConversationUpdateActivityAsync Teams 活動處理程式的 方法 呼叫的所有 Teams 活動處理程式清單。

EventType 處理常式 Condition Teams 檔
channelCreated OnTeamsChannelCreatedAsync 每當在您的 Bot 安裝於小組中建立新頻道時傳送。 已建立通道。
channelDeleted OnTeamsChannelDeletedAsync 每當您的 Bot 安裝於小組中刪除頻道時傳送。 通道已刪除
channelRenamed OnTeamsChannelRenamedAsync 每當您的 Bot 安裝於小組中重新命名頻道時傳送。 通道已重新命名。
channelRestored OnTeamsChannelRestoredAsync 每當先前刪除的通道在 Bot 已安裝的小組中還原時傳送。 通道已還原。
membersAdded OnTeamsMembersAddedAsync 根據預設,會呼叫 ActivityHandler.OnMembersAddedAsync 方法。 第一次將 Bot 新增至交談時傳送,而且每次將新使用者新增至 Bot 安裝於小組或群組聊天時。 已新增小組成員。
membersRemoved OnTeamsMembersRemovedAsync 根據預設,會呼叫 ActivityHandler.OnMembersRemovedAsync 方法。 如果您的 Bot 已從小組中移除,而且每次從 Bot 所屬的小組中移除任何使用者時,都會傳送。 已移除小組成員。
teamArchived OnTeamsTeamArchivedAsync 當 Bot 安裝於中的小組封存時傳送。 已封存小組。
teamDeleted OnTeamsTeamDeletedAsync 當 Bot 所屬的小組已刪除時傳送。 小組已刪除
teamRenamed OnTeamsTeamRenamedAsync 當 Bot 所屬的小組已重新命名時傳送。 小組已重新命名。
teamRestored OnTeamsTeamRestoredAsync 還原 Bot 先前刪除的小組時傳送。 小組已還原。
teamUnarchived OnTeamsTeamUnarchivedAsync 當 Bot 安裝到的小組未封存時傳送。 小組未封存

Teams 活動活動

下表列出Teams傳送至 Bot 的 Teams 特定事件活動。 列出的事件活動適用於Teams中的交談式 Bot。

這些是從 Teams 活動處理程式呼叫 OnEventActivityAsync的 Teams 特定事件處理程式。

事件類型 處理常式 描述
application/vnd.microsoft.meetingEnd OnTeamsMeetingEndAsync Bot 與剛剛結束的會議相關聯。
application/vnd.microsoft.meetingStart OnTeamsMeetingStartAsync Bot 與剛開始的會議相關聯。

Teams 叫用活動

下表列出Teams傳送至 Bot 的 Teams 特定叫用活動。 列出的叫用活動適用於Teams中的交談 Bot。 Bot Framework SDK 也支援呼叫傳訊擴充功能特有的 。 如需詳細資訊,請參閱 Teams 什麼是傳訊擴充 功能一文。

注意

Microsoft Teams 平台檔和 Teams JavaScript 用戶端連結庫 (TeamsJS) 會將工作模組稱為強制回應 對話方塊。 如需詳細資訊,請參閱對話方塊。

以下是從 OnInvokeActivityAsyncTeams 活動處理程式呼叫的所有 Teams 活動處理程式清單:

叫用類型 處理常式 描述
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Teams O365 連線 或卡片動作。
CardAction.Invoke OnTeamsCardActionInvokeAsync Teams 卡片動作叫用。
fileConsent/invoke OnTeamsFileConsentAcceptAsync Teams 檔案同意接受。
fileConsent/invoke OnTeamsFileConsentAsync Teams 檔案同意。
fileConsent/invoke OnTeamsFileConsentDeclineAsync Teams 檔案同意。
signin/verifyState OnTeamsSigninVerifyStateAsync Teams 登入驗證狀態。
task/fetch OnTeamsTaskModuleFetchAsync Teams 工作模組擷取。
task/submit OnTeamsTaskModuleSubmitAsync Teams 工作模組提交。

下一步

如需建置Teams Bot,請參閱 Microsoft Teams 開發人員