日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Teams Bot开发系列:Teams的Activity处理

發(fā)布時(shí)間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Teams Bot开发系列:Teams的Activity处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇文章講了activity處理的流程,我們bot的核心處理邏輯放在ActivityHandler的子類里,通過重載OnMessageActivityAsync()方法來實(shí)現(xiàn)。

這篇文章我來講一下對(duì)于Teams的bot來說,整個(gè)處理的邏輯會(huì)有哪些不同點(diǎn)。

通過之前的文章,大家應(yīng)該已經(jīng)知道,Teams bot是Azure bot service支持的眾多bot聊天平臺(tái)里的一種channel(注意:這里的channel指bot service里的channel,和Teams里的channel是完全不同的概念)。但是Teams實(shí)際上提供了很多特有的事件和動(dòng)作。使用bot sdk的通用模型,我們當(dāng)然可以處理這些事情,但是Teams作為微軟的主打產(chǎn)品,微軟的bot sdk當(dāng)然要為它提供更多的開發(fā)便利性。

SDK提供了一個(gè)針對(duì)Teams的ActivityHandler。這個(gè)handler有下面這些特殊的ConversationUpdateActivity的處理函數(shù)

事件函數(shù)說明
channelCreatedOnTeamsChannelCreatedAsync當(dāng)Teams的channel被創(chuàng)建
channelDeletedOnTeamsChannelDeletedAsync當(dāng)Teams的channel被刪除
channelRenamedOnTeamsChannelRenamedAsync當(dāng)Teams的channel被重命名
teamRenamedOnTeamsTeamRenamedAsync當(dāng)Teams的一個(gè)team被重命名
MembersAddedOnTeamsMembersAddedAsync當(dāng)Teams的一個(gè)team中有新用戶加入
MembersRemovedOnTeamsMembersRemovedAsync當(dāng)Teams的一個(gè)team中有用戶被移除

除了ConversationUpdateActivity這些Teams的特殊事件,handler還提供了一些Teams特有的invoke動(dòng)作的處理

Invoke類型函數(shù)說明
CardAction.InvokeOnTeamsCardActionInvokeAsync關(guān)于卡片的動(dòng)作,比如卡片上一個(gè)按鈕被點(diǎn)擊了
fileConsent/invokeOnTeamsFileConsentAcceptAsync用戶同意了上傳文件
fileConsent/invokeOnTeamsFileConsentAsync用戶要上傳文件.
fileConsent/invokeOnTeamsFileConsentDeclineAsync用戶拒絕了上傳文件.
actionableMessage/executeActionOnTeamsO365ConnectorCardActionAsyncO365連接器的卡片動(dòng)作
signin/verifyStateOnTeamsSigninVerifyStateAsync登入驗(yàn)證狀態(tài)
task/fetchOnTeamsTaskModuleFetchAsyncTeams的Task Module的獲取
task/submitOnTeamsTaskModuleSubmitAsyncTeams的Task Module的提交

上面表格中的OnTeamsFileConsentAsync實(shí)際上是OnTeamsFileConsentAcceptAsync和OnTeamsFileConsentDeclineAsync的一個(gè)綜合處理,你可以重載OnTeamsFileConsentAsync,或者分別重載 accept 和 decline 函數(shù)。下面的sdk代碼可以讓你有直觀的了解

protected virtual async Task<InvokeResponse> OnTeamsFileConsentAsync(ITurnContext<IInvokeActivity> turnContext, FileConsentCardResponse fileConsentCardResponse, CancellationToken cancellationToken) {switch (fileConsentCardResponse.Action){case "accept":await OnTeamsFileConsentAcceptAsync(turnContext, fileConsentCardResponse, cancellationToken).ConfigureAwait(false);return CreateInvokeResponse();case "decline":await OnTeamsFileConsentDeclineAsync(turnContext, fileConsentCardResponse, cancellationToken).ConfigureAwait(false);return CreateInvokeResponse();default:throw new InvokeResponseException(HttpStatusCode.BadRequest, $"{fileConsentCardResponse.Action} is not a supported Action.");} }

對(duì)于喜歡把問題研究透徹的朋友可能會(huì)問,Teams的ActivityHandler到底是怎么處理的?讓我們跳入sdk源代碼一探究竟。

public class TeamsActivityHandler : ActivityHandler {protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken){...switch (turnContext.Activity.Name){case "fileConsent/invoke":return await OnTeamsFileConsentAsync(turnContext, SafeCast<FileConsentCardResponse>(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false);case "task/fetch":return CreateInvokeResponse(await OnTeamsTaskModuleFetchAsync(turnContext, SafeCast<TaskModuleRequest>(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false));case "task/submit":return CreateInvokeResponse(await OnTeamsTaskModuleSubmitAsync(turnContext, SafeCast<TaskModuleRequest>(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false));......default:return await base.OnInvokeActivityAsync(turnContext, cancellationToken).ConfigureAwait(false);}...}protected override Task OnConversationUpdateActivityAsync(ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken){...switch (channelData.EventType){case "channelCreated":return OnTeamsChannelCreatedAsync(channelData.Channel, channelData.Team, turnContext, cancellationToken);case "channelDeleted":return OnTeamsChannelDeletedAsync(channelData.Channel, channelData.Team, turnContext, cancellationToken);case "channelRenamed":return OnTeamsChannelRenamedAsync(channelData.Channel, channelData.Team, turnContext, cancellationToken);case "teamRenamed":return OnTeamsTeamRenamedAsync(channelData.Team, turnContext, cancellationToken);default:return base.OnConversationUpdateActivityAsync(turnContext, cancellationToken);}...} }

從上面的代碼里可以看到?jīng)]有什么特別的magic,TeamsActivityHandler重載了OnConversationUpdateActivityAsync,并且根據(jù)channelData.EventType判斷出不同teams的事件,然后調(diào)用相應(yīng)的方法。對(duì)于invoke也類似,重載了OnInvokeActivityAsync,根據(jù)turnContext.Activity.Name來調(diào)用不同的方法。

回到我們的EchoBot代碼,讓EchoBot從TeamsActivityHandler繼承下來,然后我們可以添加OnTeamsChannelRenamedAsync方法。把EchoBot設(shè)置到Teams里,修改安裝了EchoBot的channel的名字,就可以看到這個(gè)方法被促發(fā)的。

public class EchoBot : TeamsActivityHandler {protected virtual Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken){var replyText = "Channel renamed.";await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);} }

總結(jié)

以上是生活随笔為你收集整理的Teams Bot开发系列:Teams的Activity处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品视频免费播放 | 91福利片| 国产一区在线视频 | 国产精品揄拍100视频 | av激情久久| 日韩欧美毛片 | 日韩精品视频免费播放 | 性欧美在线视频 | 国产乱人伦精品一区二区 | 欧美另类高清videos的特点 | 午夜福利电影 | 亚洲av无码国产精品麻豆天美 | 欧美日韩爱爱 | 嫩模一区| 粉嫩av一区二区三区四区五区 | 双乳被四个男人吃奶h文 | 日韩欧美精品 | 中文字幕99| 日韩一区二区三区在线观看视频 | 麻豆私人影院 | 国产在线一级片 | 性插动态视频 | www日韩在线 | 久热免费在线视频 | 亚洲一区二区网站 | 性一交一乱一精一晶 | 蜜桃香蕉视频 | 久热国产精品视频 | 久草热视频| 综合网五月 | 国产a一区 | 日本午夜一区二区三区 | 超碰在线公开免费 | 久久久久久久久久免费视频 | 人人澡超碰碰 | 亚洲精品在线免费看 | 久久影院午夜理论片无码 | 成年人在线视频免费观看 | 欧美激情一区二区在线 | 在线观看视频99 | 久久久综合| 日韩专区一区 | 美女扒逼 | 免费av网址在线 | 老司机成人在线 | 在线观看av一区 | 国产精品情侣自拍 | 综合久久伊人 | 青青草伊人网 | 瑟瑟在线视频 | 法国空姐在线观看免费 | 伊人网视频在线 | 国产高潮国产高潮久久久 | 亚洲v在线观看 | 成年人黄色在线观看 | 国产精品人成 | 久久精品欧美视频 | 欧美图片一区 | 日韩第一区 | 亚洲人成网址 | 国产精品无码一区二区桃花视频 | 欧美极品一区二区三区 | 国产一区,二区 | 国产专区一 | 久久亚洲中文字幕无码 | 短裙公车被强好爽h吃奶视频 | 精品一区二区三区免费毛片 | 男女羞羞的视频 | 久久久久久一级片 | 欧美jizz18性欧美 | 黄色无遮挡 | 黄色大片免费观看视频 | 午夜精品成人毛片非洲 | 色屁屁草草影院ccyycom | 国产精品网站在线观看 | 中文字幕国产精品 | www.午夜激情 | 国产一区二区三区久久久 | 性xxxxxxxxx18欧美 | 日韩人妻无码精品久久免费 | 国产3p露脸普通话对白 | 亚州三级 | 国产老妇视频 | 越南毛茸茸的少妇 | 哺乳期给上司喂奶hd | 快乐激情网 | 黄色一级片在线 | 天天插综合网 | 91久久人人 | 人妖ts福利视频一二三区 | 黄色69视频| 91久久精品在线 | 四虎国产精品免费 | 亚洲天堂社区 | 午夜啪啪网站 | 日本成人黄色 | 黑人操白妞 | 在线观看黄 | 亚洲国产aⅴ精品一区二区的游戏 |