官方文档到目前为止对这个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十分灵活,同时体验的提升很多。官方文档有点简单,感兴趣的同学可以一步步走一遍,就能感受到这个新机制的强大之处。

Teams的MessageExtension最新功能:Initiate actions相关推荐

  1. Firefox 3.6最新功能:网页可根据设备方位调整角度

    即将发布的下一代浏览器Firefox 3.6将新增一项有趣而且十分实用的功能,如果你的笔记本.上网本等设备本身内置有重力感应器,那么在使用Firefox 3.6时网页可以检测机器的方位信息,并根据计算 ...

  2. Gmail最新功能实测:离线版上线增加手势(多图)

    3月31日消息,谷歌宣布将在全球推出去年为英语版Gmail增添的一些功能,庆祝Gmail5岁生日. 据51CTO.com测试,简体中文版相关功能在北京时间3月31日已经正式开启,主要功能除了饱受关注的 ...

  3. android系统 最新版本是多少,安卓系统最新版本是多少 Android M 最新功能

    就在小编的手机还停留在Android 4.4的时候,谷歌今天的开发者大会已经发布了最新的安卓系统.一起来看看这个最新的系统是否值得我们更新系统或者更换手机吧! Android M 介绍 5月29日消息 ...

  4. Cartopy 0.20 最新功能 —— Cartopy 装不上别慌,内附解决方案

    Cartopy 0.20 最新功能 背景介绍 Cartopy 是英国气象局开发的地图绘图包,实现了 Basemap 的大部分功能,利用了强大的PROJ.4.NumPy和Shapely库,并在Matpl ...

  5. 超强交互原型设计工具:Axure RP 10 Beta最新功能

    Axure RP 10 汉化版是mac上一款超强交互原型设计软件,可以让产品经理/设计师能够快速创建 App 应用或 Web 网站的线框图.流程图.原型和规格说明文档.作为专业的原型设计工具,它比一般 ...

  6. 奥维怎么记录沿线轨迹_奥维地图最新功能—北斗星盒轨迹实时分享

    原标题:奥维地图最新功能-北斗星盒轨迹实时分享 奥维互动地图新版本(V7.6.7)推出了又一强大功能--设备位置采集实时上传至奥维服务器,并把历史位置分享给指定好友. 听起来不知所云,下面小编就为越野 ...

  7. Microsoft Teams的Meet Now功能

    今天,我们宣布完成了Skype for Business to Teams路线图中首次披露的几项关键会议功能.当个人联系,沟通和协作时,工作就自然而然的完成了,我们相信这些功能(除了我们2月的公告之外 ...

  8. SAP Hybris电子商务最新功能

    SAP Hybris 电子商务6.0中国加速器是专为中国市场设计的电子商务平台,可满足企业在全渠道销售和订单履行方面的所有需求.新版的中国加速器基于SAP Hybris核心加速器之上进行开发,通过添加 ...

  9. 模型部署到移动端_TensorFlow Lite 自然语言处理模型的最新功能,助力设备端 NLP 部署...

    设备端机器学习框架 TensorFlow Lite 为手机.微控制器和 Edge TPU 等边缘设备提供机器学习功能,已被广泛用于许多应用领域.其中,"自然语言处理" (Natur ...

最新文章

  1. 小程序在canvas上层做图片滚动
  2. java run_javarun
  3. Training的第六天
  4. 智能音箱AEC中的回采信号
  5. 心跳检测以及应用层心跳包机制设计
  6. 使用less实现自适应宽度
  7. 传统的线性降维方法效果不佳。_10分钟数据降维入门
  8. flask-第一个flask程序
  9. Linux查看和控制进程
  10. OSO.EXE病毒专杀工具
  11. ZOJ-1010 奇偶剪枝
  12. vesamenu.c32:not a COM32R image报错解决方案
  13. java多线程编程实例
  14. 基于氚云平台的应用开发学习(一)
  15. Win10电脑时间无法同步解决方法
  16. 教师备课计算机教师管理制度,计算机学院教学过程管理中教师职责与问责暂行规定--中地大计字[2016]03号...
  17. 我的世界服务器显示大字,我的世界上面指令让界面出现字体 | 手游网游页游攻略大全...
  18. Opencv C++ 学习视频整理源代码(1)
  19. on duplicate key update不生效_万粉盛典amp;六周年庆|双十一提前嗨!惠玩惠购不做尾款人!...
  20. pytorch中的BatchNorm和LayerNorm

热门文章

  1. 数据库:后端开发必备的 MySQL日志文件知识点
  2. MySQL数据库的mysqldump完全备份、binlog的增量备份与还原
  3. MySQL实用第三方客户端工具收集
  4. updatebyprimarykeyselective的where条件是全部字段_ArcGIS 字段计算器
  5. linux openssh升级8.1,Centos7利用rpm升级OpenSSH到openssh-8.1p1版本
  6. mysql员工脚本_mySQL常用脚本汇总
  7. [转帖]外壳命名空间扩展
  8. 阿里巴巴Java开发手册终极版
  9. 关于是否在C#中加入不可空引用类型的争论
  10. lucene两个分页操作