几个月前,Teams 团队又推出了新的 Graph API,让 app 可以给用户发送 Activity Feed。我们来看看如何做。

首先,我们的app需要使用较新的 manifest 1.7版本,当然如果使用最新的1.8版本就更好了。在manifest json中添加 webApplicationInfo 和 activities 配置块

{"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.8/MicrosoftTeams.schema.json","manifestVersion": "1.8","version": "1.0.0","id": "your app id","packageName": "com.example.myapp",..."webApplicationInfo": {"id": "AAD App ID","resource": "Resource URL for acquiring auth token for SSO","applicationPermissions": [ ... ],},"activities": {"activityTypes": [{"type":"taskCreated","description":"Task Created Activity","templateText":"{actor} created task {taskId} for you"},{"type":"teamMention","description":"Team Mention Activity","templateText":"{actor} mentioned team"}]}
}

在 webApplicationInfo 中的 id 指的是 AzureAD app 的 ID (client ID),resource 是 app 的 reply url (或者 redirect url)。

在 activities 中,type 是指 activity 的类型,它在整个manifest文件里需要唯一。description 是这类 activity 的简称,templateText 是 activity feed 推送的文本内容,它是一个模版,{actor} 在这里是一个特殊的类型,teams系统会自动填写,如果发送activity feed使用的是 delegated 验证的话,actor就显示delegated的用户的名字,如果是 application 验证的话,它显示的是 app 的名字。{taskId}是一个自定义的参数,你可以在发送 activity feed 的时候指定值。

我们准备好了manifest文件后,可以安装到teams 里,并且我们还需要确保一点:接受 activity feed 的用户也必须安装了我们的app,我之前有一篇文章讲的是如何主动给用户安装 app,有兴趣的读者可以参考那篇文章,这样就可以把你的app主动推给所有的用户进行安装。(当然,你的app首先需要取得相应的权限)。

准备工作做好后,我们就可以发送一个 Graph API的请求。如下:

POST https://graph.microsoft.com/beta/chats/{chatId}/sendActivityNotification
Content-Type: application/json{"topic": {"source": "entityUrl","value": "https://graph.microsoft.com/beta/chats/{your-chat-id}"},"activityType": "taskCreated","previewText": {"content": "A new task was created"},"recipient": {"@odata.type": "microsoft.graph.aadUserNotificationRecipient","userId": "569363e2-1111-2222-3333-16f245c5d66a"},"templateParameters": [{"name": "taskId","value": "123445"}]
}

大家可以看到在 templateParameters 中,我们指定了taskId 参数,这个参数就对应到了之前 manifest 文件里 activities 节点下的 {taskId}

      {"type":"taskCreated","description":"Task Created Activity","templateText":"{actor} created task {taskId} for you"},

所以最终推送出去的文字内容就是 SomeName created task 123445 for you

推送ActivityFeed到Teams相关推荐

  1. 使用Docker制作镜像并推送到镜像仓库

    本文会告诉你如何使用docker从远端下载一个镜像,然后对镜像做修改,最后再把镜像推送到你自己的镜像仓库 1.安装Docker 这个没啥说的,根据你自己的环境下载对应的安装包安装就是了 docker官 ...

  2. PHP实现NBA赛事结果即时推送

    对于平时不能看NBA直播,但又希望第一时间知道喜欢的湖人队的比赛结果.动动小手,简单实现监测湖人队的比赛结果,发送到自己微信.邮箱.钉钉上面. 原理 采用PHP发起请求聚合数据提供的NBA赛事API, ...

  3. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  4. 微信公众号为指定openid用户推送消息

    微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...

  5. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  6. HTTP服务器端常用推送技术

    服务器端推送技术描述 不论是传统的HTTP请求-响应式的通信模式, 还是异步的AJAX式请求, 服务器端始终处于被动的应答状态, 只有在客户端发出请求的情况下, 服务器端才会返回响应. 这种通信模式被 ...

  7. Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取

    1. 高频命令 git add 将工作文件修改提交到本地暂存区. git add . 将所有修改过的工作文件提交暂存区(常用). git commit -m "XXX" 为本次修改 ...

  8. 看了极光推送技术原理的几点思考

    看了极光推送技术原理的几点思考 分类: android2012-11-26 20:50 16586人阅读 评论(18) 收藏 举报 目录(?)[+] 移动互联网应用现状 因为手机平台本身.电量.网络流 ...

  9. 在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...

    在上一章<maven构建docker镜像三部曲之二:编码和构建镜像>的实战中,我们将spring boot的web工程构建成docker镜像并在本地启动容器成功,今天我们把docker-m ...

最新文章

  1. 线段树区间扫描线超详解,一篇文章搞懂扫描线
  2. crm系统是什么很棒ec实力_CRM系统都有哪些功能?CRM管理系统的主要用途又是什么?...
  3. Pix2Pix Z图像翻译系统(自制)
  4. 【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型运算符与类型分析
  5. 去快捷方式小箭头_电脑桌面如何快速去掉快捷方式小箭头
  6. 【Java】System.out.println(Integer.MAX_VALUE+1);背后的二进制故事与启示
  7. ThreadLocal原理和用法
  8. CNN中的卷积、1x1卷积及在pytorch中的验证
  9. 背包问题(背包九讲)
  10. 数学分析讲义习题解答:(二)
  11. Word自动目录字体过大,如何全选并修改样式
  12. coq程序编写好用的IDE推荐
  13. win7无声音显示“未插入扬声器或耳机” 怎么解决
  14. 奥特曼系列艾斯愿望服务器序号,泽塔奥特曼:泽塔的寓意是最后的勇士,蕴含了艾斯哥哥最大的愿望...
  15. 数据结构 | C语言实现线性表的顺序和链式结构
  16. SSM框架 基于Bootstrap fileinput 实现文件上传功能
  17. 不藏了,我的一千行 MySQL 学习笔记(2万字长文)
  18. 在线九宫切图(九宫格切图)工具
  19. 白月黑羽python_白月黑羽Python在线教程
  20. php网页有图片加载慢,网页加载加速 之 图片延迟加载

热门文章

  1. 70条程序员编程的专业名言,你认可几条?
  2. 时下流行的9种恶意软件,你都了解吗?
  3. websocket 西部数码php_网页实时聊天之PHP实现websocket
  4. oracle ebs 基于host(主机文件)并发程序的开发,Oracle EBS 基于Host(主机文件)并发程序的开发...
  5. Docker---问题1:bash: vi: command not found/bash: vim: command not found
  6. .Net+MySQL组合开发(二) 数据访问篇
  7. 转:shell awk
  8. iphone-common-codes-ccteam源代码 CCTestMacros.m
  9. C++语言基本概念(5)
  10. 怎样编译libdb_比特币编译(Ubuntu 16.04)