Teams的MessageExtension最新功能:Initiate actions

官方文档到目前为止对这个initiate action的说明比较简洁,由于没有一步步的截图和说明,从头到尾看一遍可能还在云里雾里。

我一步步摸索着走了一遍,发现这个initiate action的功能如此强大,不敢独享,所以写此博文:

1. 新建bot,叫TestMsgExt,manifest文件中的composeExtensions部分如下,特别之处是“fetchTask"这个新的属性

"composeExtensions": [{"botId": "89e9cdd8-f500-4696-a701-7c2323f62a86","canUpdateConfiguration": true,"commands": [{"id": "start","type": "action","title": "start","description": "start","initialRun": true,"fetchTask": true,"context": ["commandBox","compose","message"],"parameters": [{"name": "param","title": "param","description": ""}]}]}
],

2. 将此bot加入某个teams里,在菜单里就可以看到这个TestMsgExt的bot了

3. 点击后,bot就会收到如下的json

{"name": "composeExtension/fetchTask","type": "invoke","timestamp": "2019-06-17T14:32:04.956Z","localTimestamp": "2019-06-18T00:32:04.956+10:00","id": "f:1361493733941541435","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","from": {"id": "29:1l8B9m9SOOdHTqLDgmXvSrJyHfwd2ihooa7cxgtzJ8QjQ4WFC4mA_8K2Sa7jL-xUh7g4yh8sZIiDOX6vTtoaz6w","name": "Tony Xia","aadObjectId": "56c6599d-9216-4078-a8cf-3f039d36e1fd"},"conversation": {"isGroup": true,"conversationType": "channel","tenantId": "aece5000-341d-493a-841d-f67e417f1447","id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"recipient": {"id": "28:89e9cdd8-f500-4696-a701-7c2323f62a86","name": "TestMsgExt"},"entities": [{"locale": "en-US","country": "US","platform": "Windows","type": "clientInfo"}],"channelData": {"channel": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"team": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"tenant": {"id": "aece5000-341d-493a-841d-f67e417f1447"},"source": {"name": "compose"}},"value": {"commandId": "start","commandContext": "compose","context": {"theme": "default"}},"locale": "en-US"
}

4. 我的bot响应如下:

{"task": {"type": "continue","value": {"card": {"contentType": "application/vnd.microsoft.card.adaptive","content": {"body": [{"type": "TextBlock","text": "Please enter the following information:"},{"type": "TextBlock","text": "Name"},{"type": "Input.Text","spacing": "None","title": "New Input.Toggle","placeholder": "Placeholder text"},{"type": "TextBlock","text": "Date of birth"},{"type": "Input.Date","spacing": "None","title": "New Input.Toggle"}],"actions": [{"type": "Action.Submit","title": "Submit1","data": {"id": "Submit1"}},{"type": "Action.Submit","title": "Submit2","data": {"id": "Submit2"}}],"type": "AdaptiveCard","$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version": "1.0"}}}}
}

Teams在收到我bot的响应后会显示如下的对话框,对话框里的内容就是我上面json里的adapative card。

5. 如果我们走官方文档中的"Compose extension result response" (https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/messaging-extensions/create-extensions#compose-extension-result-response) ,bot会收到如下请求:

{"name": "composeExtension/submitAction","type": "invoke","timestamp": "2019-06-17T14:36:26.449Z","localTimestamp": "2019-06-18T00:36:26.449+10:00","id": "f:2286900813950650039","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","from": {"id": "29:1l8B9m9SOOdHTqLDgmXvSrJyHfwd2ihooa7cxgtzJ8QjQ4WFC4mA_8K2Sa7jL-xUh7g4yh8sZIiDOX6vTtoaz6w","name": "Tony Xia","aadObjectId": "56c6599d-9216-4078-a8cf-3f039d36e1fd"},"conversation": {"isGroup": true,"conversationType": "channel","tenantId": "aece5000-341d-493a-841d-f67e417f1447","id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"recipient": {"id": "28:89e9cdd8-f500-4696-a701-7c2323f62a86","name": "TestMsgExt"},"entities": [{"locale": "en-US","country": "US","platform": "Windows","type": "clientInfo"}],"channelData": {"channel": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"team": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"tenant": {"id": "aece5000-341d-493a-841d-f67e417f1447"},"source": {"name": "compose"}},"value": {"commandId": "start","commandContext": "compose","context": {"theme": "default"},"data": {"id": "Submit1","undefined": ""}},"locale": "en-US"
}

bot需要做如下响应,”preview“和”attachments“里的内容是可以根据自己的内容进行变化的,我这里使用了官方文档里的json。

{"composeExtension": {"type": "result","attachmentLayout": "list","preview": {"contentType": "application/vnd.microsoft.card.thumbnail","content": {"title": "85069: Create a cool app","images": [{"url": "https://placekitten.com/200/200"}]}},"attachments": [{"contentType": "application/vnd.microsoft.teams.card.o365connector","content": {"sections": [{"activityTitle": "[85069]: Create a cool app","activityImage": "https://placekitten.com/200/200"},{"title": "Details","facts": [{"name": "Assigned to:","value": "[Larry Brown](mailto:larryb@example.com)"},{"name": "State:","value": "Active"}]}]}}]}
}

可以看到我们的输入框里就有了一个adaptive card,我们就可以发送出去了

 

6. 如果我们走官方文档中的"Response with an adaptive card message sent from a bot" (https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/messaging-extensions/create-extensions#respond-with-an-adaptive-card-message-sent-from-a-bot)  ,bot会收到如下请求:

{"name": "composeExtension/submitAction","type": "invoke","timestamp": "2019-06-17T14:40:29.473Z","localTimestamp": "2019-06-18T00:40:29.473+10:00","id": "f:6033114440747937164","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","from": {"id": "29:1l8B9m9SOOdHTqLDgmXvSrJyHfwd2ihooa7cxgtzJ8QjQ4WFC4mA_8K2Sa7jL-xUh7g4yh8sZIiDOX6vTtoaz6w","name": "Tony Xia","aadObjectId": "56c6599d-9216-4078-a8cf-3f039d36e1fd"},"conversation": {"isGroup": true,"conversationType": "channel","tenantId": "aece5000-341d-493a-841d-f67e417f1447","id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"recipient": {"id": "28:89e9cdd8-f500-4696-a701-7c2323f62a86","name": "TestMsgExt"},"entities": [{"locale": "en-US","country": "US","platform": "Windows","type": "clientInfo"}],"channelData": {"channel": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"team": {"id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"tenant": {"id": "aece5000-341d-493a-841d-f67e417f1447"},"source": {"name": "compose"}},"value": {"commandId": "start","commandContext": "compose","context": {"theme": "default"},"data": {"id": "Submit2","undefined": ""}},"locale": "en-US"
}

bot需要返回一个adaptive card用来给用户预览,注意这里的type是botMessagePreview,这个是新的一种type。

{"composeExtension": {"type": "botMessagePreview","activityPreview": {"type": "message","attachments": [{"contentType": "application/vnd.microsoft.card.adaptive","content": {"body": [{"type": "TextBlock","text": "Please enter the following information:"},{"type": "TextBlock","text": "Name"},{"type": "Input.Text","spacing": "None","title": "New Input.Toggle","placeholder": "Placeholder text"},{"type": "TextBlock","text": "Date of birth"},{"type": "Input.Date","spacing": "None","title": "New Input.Toggle"}],"actions": [{"type": "Action.Submit","title": "Submit1","data": {"id": "Submit1"}},{"type": "Action.Submit","title": "Submit2","data": {"id": "Submit2"}}],"type": "AdaptiveCard","$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version": "1.0"}}]}}
}

然后teams就会弹出对话框让用户进行对要发送的内容进行预览,预览的内容就是上面attachment里描述的adaptive card

接下去用户就可以点击Send,bot会再次收到一个消息,bot在消息处理的时候就可以发送这个预览的信息到channel里。

新的message extension处理机制,使得message extension十分灵活,同时体验的提升很多。官方文档有点简单,感兴趣的同学可以一步步走一遍,就能感受到这个新机制的强大之处。

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Teams App抽奖机器人 - 基础架构

今天我们来聊一下,一个Teams app的infrastructure,我在考虑LuckyDraw的主要出于这么几个出发点: 可管理性。因为这是一个个人产品,以后维护工作也只有我一个人,所以我希望整个infrastructure简单、易管理,不…

如何做Teams Bot的测试覆盖

在我昨天的文章中介绍了如果对Teams bot做service level的测试,那到底要写多少的测试代码才算够?如何才算测试到位了?这个时候我们就需要用”测试覆盖率”来衡量,虽然覆盖率高并不一定代表着就可以高枕无忧的以为我们软件质量高了…

Spring Boot开发MongoDB应用实践

本文继续上一篇定时任务中提到的邮件服务,简单讲解Spring Boot中如何使用MongoDB进行应用开发。 上文中提到的这个简易邮件系统大致设计思路如下: 1、发送邮件支持同步和异步发送两种 2、邮件使用MongDB进行持久化保存 3、异步发送,直接将邮件…

QuickBI助你成为分析师-邮件定时推送

创建报表过程中经常需要将报表情况定时推送给其他用户,及时了解数据情况。高级版本邮件推送功能支持仪表板周期性推送到订阅人,默认以当前登录者视角查看,同时支持结合 行级权限进行权限控制 和 结合全局参数功能确定邮件推送内容参数&#x…

2019年5月 Teams Community Call (China)

这个月有四个话题: Tony Xia:这个月的Teams的产品更新,Teams开发能力的更新,开源项目更新,库更新王远:升级/迁移到Microsoft Teams刘钰:Teams账号注册探索指南Paul Zhang/Cheung:Bu…

在2019年6月Teams Community Call上分享的Teams app基础架构视频

我在2019年6月Teams Community Call(China)上分享的如何在azure上搭建典型的teams bot的基础架构 会议视频: 15:00 - 33:00 Download Video

什么是Microsoft Teams的App Studio

Teams的app studio很多用户可能不知道,但是对于一个teams平台的开发人员来说,这个是开发利器,利用这个工具你可以轻松的配置manifest文件,可以轻松的一站式创建teams app所需要的所有东西。而且你可以很方便的可视化配置adaptive …

如何使用ARM创建Teams Bot所需要的Azure资源

相信很多devops已经全面开始使用ARM来创建azure资源了,ARM有很多方便的地方,比如简单易学,Infrastructure as Code,但是深入使用ARM开始会发现一些有待改进的方面。这篇文章主要是分享一下我在做Teams app的时候使用ARM来创建资源…

Bot Service自带的数据分析统计功能

每个产品上线后都希望自己能实时看到多少用户在使用我的产品,我的服务,有多少使用量,有没有遇到问题。市面上做用户数据、行为分析的公司也不少,但是大多数都需要我们修改一些代码来集成第三方的sdk库。 我的teams app上线后也急…

图灵社区 和 大家网

http://www.ituring.com.cn/ http://club.topsage.com/ 大家论坛 http://www.topsage.com/ http://www.dxbbba.com/ 大学生必备吧 转载于:https://www.cnblogs.com/onelikeone/p/9023267.html

Teams内嵌的卡片image的限制

我的LuckyDraw上线后收到了不少有价值的反馈,其中有一部分是针对图片的,有一些用户说他们填写了image的url,但是图片显示不出来。 实际上这个问题在我提交这个应用到微软审核团队的时候,审核团队也提出了类似问题。但这个是Teams本…

Teams的Incoming Webhook

我在去年的一篇文章里介绍过Teams的outgoing webhook,这个可以用来实现一个简单的用户和service对话机制。 Teams除了outgoing webhook以外,还有一个incoming webhook,从名字上我们也可以立刻知道,这个webhook是用来处理进入Team…

Comet OJ - Contest #0题解

传送门 菜爆了……总共只有一道题会做的……而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂……歧视么…… \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}yz2\sqrt{yz}\] 如果\(\sqrt{n}\)是无理数,那么就是 \[xyz,{n\over 4}yz\] 那么要满足\(n\)必须是\…

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册 引言 #在数据库,所谓表关系,只是人为认为的添加上去的表与表之间的关系,只是逻辑上认为的关系,实际上数据库里面的表之间并没有所谓的表关系 一、一对一表关系 Module #需…

白白的(baibaide)

白白的(baibaide) 有一个长度为 $n$ 的序列 $a_1, a_2, \dots, a_n$,一开始每个位置都是白色。如果一个区间中每个位置都是白色,则称这是一个白白的区间。如果一个白白的区间向左或向右延长后都不是白白的区间了,则称这…

使用Adaptive cards来构建Teams app的界面

Teams app的task module十分好用,当用户点击了一个卡片上的按钮是可以在Teams里弹出一个对话框,对话框的内容可以是开发人员自己的一个网页页面,或者是adaptive card。 在我的LuckyDraw bot里,我比较了这两种的优势和劣势&#xf…

Boosting(提升方法)之GBDT

一、GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree)。GBDT(Gradient Boosting Decision Tree)就是提升树算法的一种,它使用的基学习器是C…

CC攻击原理及防范方法

一、 CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候&#xff0c…

分享到Teams

在今年三月份末,Teams的官方文档推出了一个新功能:将网页(一个URL)分享到Teams里。 也就是说开发人员现在可以很方便的开发一个页面,页面里有一个Teams的图标,当访问此页面的最终用户点击这个图标后可以将…

MySQL命令行查询乱码解决方法

转自Agoly的博客,原文链接https://www.cnblogs.com/qmfsun/p/4846467.html 感谢博主Agoly这篇文章说的很详细很透彻。 MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含charact…