当前位置: 首页 > news >正文

网站做支付要多少钱滕州微信网站

网站做支付要多少钱,滕州微信网站,网站建设求职信息,2008 iis 添加 网站 权限上一篇文章讲了activity处理的流程#xff0c;我们bot的核心处理逻辑放在ActivityHandler的子类里#xff0c;通过重载OnMessageActivityAsync()方法来实现。 这篇文章我来讲一下对于Teams的bot来说#xff0c;整个处理的逻辑会有哪些不同点。 通过之前的文章#xff0c;…上一篇文章讲了activity处理的流程我们bot的核心处理逻辑放在ActivityHandler的子类里通过重载OnMessageActivityAsync()方法来实现。 这篇文章我来讲一下对于Teams的bot来说整个处理的逻辑会有哪些不同点。 通过之前的文章大家应该已经知道Teams bot是Azure bot service支持的众多bot聊天平台里的一种channel注意这里的channel指bot service里的channel和Teams里的channel是完全不同的概念。但是Teams实际上提供了很多特有的事件和动作。使用bot sdk的通用模型我们当然可以处理这些事情但是Teams作为微软的主打产品微软的bot sdk当然要为它提供更多的开发便利性。 SDK提供了一个针对Teams的ActivityHandler。这个handler有下面这些特殊的ConversationUpdateActivity的处理函数 事件函数说明channelCreatedOnTeamsChannelCreatedAsync当Teams的channel被创建channelDeletedOnTeamsChannelDeletedAsync当Teams的channel被删除channelRenamedOnTeamsChannelRenamedAsync当Teams的channel被重命名teamRenamedOnTeamsTeamRenamedAsync当Teams的一个team被重命名MembersAddedOnTeamsMembersAddedAsync当Teams的一个team中有新用户加入MembersRemovedOnTeamsMembersRemovedAsync当Teams的一个team中有用户被移除 除了ConversationUpdateActivity这些Teams的特殊事件handler还提供了一些Teams特有的invoke动作的处理 Invoke类型函数说明CardAction.InvokeOnTeamsCardActionInvokeAsync关于卡片的动作比如卡片上一个按钮被点击了fileConsent/invokeOnTeamsFileConsentAcceptAsync用户同意了上传文件fileConsent/invokeOnTeamsFileConsentAsync用户要上传文件.fileConsent/invokeOnTeamsFileConsentDeclineAsync用户拒绝了上传文件.actionableMessage/executeActionOnTeamsO365ConnectorCardActionAsyncO365连接器的卡片动作signin/verifyStateOnTeamsSigninVerifyStateAsync登入验证状态task/fetchOnTeamsTaskModuleFetchAsyncTeams的Task Module的获取task/submitOnTeamsTaskModuleSubmitAsyncTeams的Task Module的提交 上面表格中的OnTeamsFileConsentAsync实际上是OnTeamsFileConsentAcceptAsync和OnTeamsFileConsentDeclineAsync的一个综合处理你可以重载OnTeamsFileConsentAsync或者分别重载 accept 和 decline 函数。下面的sdk代码可以让你有直观的了解 protected virtual async TaskInvokeResponse OnTeamsFileConsentAsync(ITurnContextIInvokeActivity 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.);} }对于喜欢把问题研究透彻的朋友可能会问Teams的ActivityHandler到底是怎么处理的让我们跳入sdk源代码一探究竟。 public class TeamsActivityHandler : ActivityHandler {protected override async TaskInvokeResponse OnInvokeActivityAsync(ITurnContextIInvokeActivity turnContext, CancellationToken cancellationToken){...switch (turnContext.Activity.Name){case fileConsent/invoke:return await OnTeamsFileConsentAsync(turnContext, SafeCastFileConsentCardResponse(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false);case task/fetch:return CreateInvokeResponse(await OnTeamsTaskModuleFetchAsync(turnContext, SafeCastTaskModuleRequest(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false));case task/submit:return CreateInvokeResponse(await OnTeamsTaskModuleSubmitAsync(turnContext, SafeCastTaskModuleRequest(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false));......default:return await base.OnInvokeActivityAsync(turnContext, cancellationToken).ConfigureAwait(false);}...}protected override Task OnConversationUpdateActivityAsync(ITurnContextIConversationUpdateActivity 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);}...} }从上面的代码里可以看到没有什么特别的magicTeamsActivityHandler重载了OnConversationUpdateActivityAsync并且根据channelData.EventType判断出不同teams的事件然后调用相应的方法。对于invoke也类似重载了OnInvokeActivityAsync根据turnContext.Activity.Name来调用不同的方法。 回到我们的EchoBot代码让EchoBot从TeamsActivityHandler继承下来然后我们可以添加OnTeamsChannelRenamedAsync方法。把EchoBot设置到Teams里修改安装了EchoBot的channel的名字就可以看到这个方法被促发的。 public class EchoBot : TeamsActivityHandler {protected virtual Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContextIConversationUpdateActivity turnContext, CancellationToken cancellationToken){var replyText Channel renamed.;await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);} }
http://www.zqtcl.cn/news/472222/

相关文章:

  • 做的好的手机网站有哪些内容手机怎么做app详细步骤
  • net网站开发参考文献c++能不能作为网页开发语言
  • 我公司让别人做网站了怎么办厦门logo设计公司
  • 闸北专业做网站怎么判断网站优化过度
  • 搭建网站seowordpress重新安装如何做
  • 网站设计优化重庆教育建设有限公司网站
  • 域名注册网站查询手工制作视频教程简单又漂亮
  • 书画院网站源码网站百度指数
  • 网页设计与网站开发第三版课后答案网络运营商是干嘛的
  • wordpress分类目录网站主题自己做营销型网站
  • 简述网站推广的五要素seo排名软件怎么做
  • 做网站能做职业吗织梦如何做几种语言的网站
  • 手机网站定制咨询如何修改网站
  • 长沙大型网站建设公司建站工作室源码
  • 找设计方案的网站专注南昌网站建设
  • UE做的比较好的网站汕头网站关键词优化教程
  • 做羞羞的事情网站广州番禺招聘网最新招聘信息
  • 网站基础开发成本网站建设策划包括哪些内容
  • 商务网站建设哪家好绍兴网站建设做网站
  • 网站域名管理东莞网页设计和网页制作
  • 网站建设与制作报价网站app制作
  • 下载可以做动漫的我的世界视频网站长沙网站seo技巧
  • 汕头网站制作推荐制作影视视频的软件
  • 定制程序网站宁波英文网站建设
  • 安康公司做网站网页设计怎么设计
  • 小型企业网站系统南京seo外包平台
  • 曲靖网站制作邢台网站制作那家便宜
  • wordpress中portfolio重庆网站seo按天计费
  • 做淘客网站需要多大的空间工程公司名称大全简单大气
  • 康县建设局网站网站做优化