Microsoft Teams Bot 的運作方式

適用于: SDK v4

This is an introduction that builds on what you learned in the article How bots work and Event-driven conversations; you should be familiar with these articles before reading this.

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

小組活動處理常式

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

衍生自「小組」活動處理常式的 bot 類似于直接從活動處理常式類別衍生的 bot。 不過,小組會在活動中包含其他資訊 conversationUpdate ,並傳送小組特定 invoke 活動。

當您的小組活動處理常式 – bot 收到訊息活動時,其回合處理常式會將內送訊息活動路由傳送至其 OnMessageActivityAsync 處理常式,類似于以活動處理常式為 – 基礎的 bot。 不過,當您的小組 bot 收到對話更新活動時,處理常式的小組版本會 OnConversationUpdateActivityAsync 處理活動。

大部分的小組特定活動處理常式都沒有基底執行。 您將需要覆寫這些處理常式,並為您的 bot 提供適當的邏輯。

使用活動處理常式發行項之事件驅動交談活動處理區段中所述的所有活動處理常式,將會繼續運作,就像處理非小組 bot 一樣,但處理加入和移除活動的成員除外,在這種情況下,將新成員新增至小組,而不是訊息執行緒的情況下,會有不同的活動處理常式。 如需詳細資料,請參閱 小組對話更新活動

若要針對這些小組專屬的活動處理常式來執行您的邏輯,您將會覆寫 bot 中的方法。

Teams Bot 邏輯

Bot 邏輯會處理來自從您一個或多個 Bot 通道的傳入活動,並產生傳出活動來回應。 這對於衍生自 Teams 活動處理常式類別的 Bot 仍然成立,該 Bot 會先檢查 Teams 活動,然後將所有其他活動傳遞至 Bot Framework 的活動處理常式。

小組安裝更新活動

新增 安裝更新 事件的處理常式,讓您的 bot:

  • 在交談執行緒上安裝簡介訊息時傳送。
  • 清除使用者和執行緒資料使用從執行緒卸載。

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

Teams 對話更新活動

下表列出在 bot 中產生 對話更新 活動的小組事件。 Microsoft 小組 對話更新事件 文章說明如何使用這些事件。

以下是從「 OnConversationUpdateActivityAsync 小組 」活動處理常式的方法呼叫的所有小組活動處理常式的清單。

EventType 處理常式 條件 小組檔
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 安裝所在的小組 unarchived 時傳送。 團隊 unarchived

小組調用活動

下表列出小組特定的叫用活動小組傳送至 bot 的作業。 列出的叫用活動適用于小組中的對話式 bot。 Bot Framework SDK 也支援訊息延伸模組專屬的叫用。 如需詳細資訊,請參閱小組 什麼是訊息擴充功能 文章。

以下是從 OnInvokeActivityAsync Teams 活動處理常式呼叫的所有 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 開發人員文件