推送ActivityFeed到Teams

几个月前,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

 

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

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

相关文章

RecycleView弹性滑动

还有点bug,建议使用 LinearSnapHelper rvPilotList.addOnScrollListener(new RecyclerView.OnScrollListener() {Overridepublic void onScrolled(NonNull RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);// …

关于深度学习,这些知识点你需要了解一下

深度学习概述 o 受限玻尔兹曼机和深度信念网络 o Dropout o 处理不平衡的技巧 o SMOTE:合成少数过采样技术 o 神经网络中对成本敏感的学习 深度学习概述 在2006年之前,训练深度监督前馈神经网络总是失败的,其主要原因都是导致…

发送不同类型的ActivityFeed

上一篇文章讲到了如何使用最新的Graph API来给一个用户发送一个简单的 Activity Feed。我们这篇文章来详细讲一下发送三种不同类型的消息。 发送 Chat 相关的 Activity Notification API 为 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification…

git add * 提示warning: LF will be replaced by CRLF in 解决办法

在使用git的时候,每次执行 $ git add * 都会提示这样一个警告消息: 虽然说没有什么影响吧。 不过就是觉得太碍眼了, 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了。 奋斗的年纪你…

git 放弃本地修改,强制拉取更新

开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下: git fetch --all git reset --hard origin/master git pull //可以省略 git fetch 指令是下载远程仓库最…

发送ActivityFeed的隐藏功能

前两篇文章介绍了如何发送 activity notification,这篇文章主要介绍两个隐藏功能,实际上所谓的隐藏功能是指大家在阅读官方文档是会忽略的两个点,但是实际上也是很实用的两个功能点。 text 类型的 topic 之前文章中提到我们的 activity not…

Dispatch Queue 之 Invoke 当前队列

 转载于:https://www.cnblogs.com/huahuahu/p/dispatch-queue-zhi-invoke-dang-qian-dui-lie.html

js或jQuery获取当前屏幕的各种高度

Javascript: 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offsetWidth (包括边线的宽) 网页可见区域高: document.body.offsetHeight (包括边线的高) …

Teams数据统计 - 用户在线离线状态

前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感。 实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可以通过强大的 Graph API,获取大量的数据信息&…

我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

传统友商ERP的交付过程 一、先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行所谓…

HDU 4747 Mex

4747 思路: 线段树 先求出mex(1,1), mex(1, 2) , mex(1,3),...,mex(1,n)(单调上升),先将这些mex放进线段树里求和 然后再求出next[i]表示下一次出现a[i] 的位置 然后从前…

Teams数据统计 - 通话记录

上篇文章介绍了如何获取用户的在线状态,这篇文章我们记录介绍如何统计用户通话记录。 首先,Teams为了安全,它要求 app 要有 CallRecords.Read.All 权限。然后就可以通过这个api来获取 call record。 GET /communications/callRecords/{id}这…

linux下mysql的数据库简单备份脚本

应用于整个库的备份。 #!/bin/bash PATH$PATH:/usr/local/mysql/bin:/usr/local/mysql/sbin # 数据库名称 databases(myname) # 备份目录 basepath/home/databak/ cd $basepath if [ ! -d "$basepath" ]; thenmkdir -p "$basepath" fi#遍历数据库名称 for …

解决JS浮点数(小数)计算加减乘除的BUG

2019独角兽企业重金招聘Python工程师标准>>> //浮点数减法运算function FloatSub(arg1,arg2){var r1,r2,m,n;try{r1arg1.toString().split(".")[1].length}catch(e){r10}try{r2arg2.toString().split(".")[1].length}catch(e){r20}mMath.pow(10…

Teams数据统计 - 聊天消息

前两篇文章介绍了如何对用户的在线状态和通话记录进行数据统计。这篇文章我们来看看如何统计用户的聊天消息。 在介绍具体 api 如何调用前,我们可以先看一下 Teams 里对于 Message 的层级结构,在 Teams 里,message有两种,一种是 …

vis.js

1、官网&#xff1a;http://visjs.org/docs/network/ 2、示例&#xff1a; <!doctype html>  <html>     <head>     <title>vis.js</title>     <script type"text/javascript" src"vis.js"></scri…

暑期实习面试——艾锝科技,Python实习生

远程笔试过&#xff0c;拒绝现场面转载于:https://www.cnblogs.com/qinziang/p/9123339.html

Teams App 如何使用设备的能力

我们以前讲到过&#xff0c;Teams有很多中可以扩展的方面&#xff0c;其中有一种是Tab&#xff0c;开发者可以开发一个web page/app&#xff0c;然后以tab的方式嵌入到teams里面。 除了基本的功能&#xff0c;这种tab也可以使用teams客户端设备所带的一些能力&#xff0c;比如…

实验室3

实验3.1 1 #include<stdio.h>2 int main()3 { long int sum,i;4 sum0;5 for(i22;i<1003;i20){6 sumsumi;7 }8 printf("sum%ld",sum);9 return 0; 10 } 11 1 #include<stdio.h>2 int main()3 { 4 long int…

写出整洁的高效的js代码

Variables:变量 使用有意义的可发音的变量名 Bad: var yyyymmdstr moment().format(YYYY/MM/DD);Good: var yearMonthDay moment().format(YYYY/MM/DD);使用可搜索的命名 在开发过程中&#xff0c;我们阅读代码的时间会远远超过编写代码的时间&#xff0c;因此保证代码的可读…