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

text 类型的 topic

之前文章中提到我们的 activity notification 支持三种类型,他们分别的url是:

POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification
POST https://graph.microsoft.com/beta/teams/{teamId}/sendActivityNotification
POST https://graph.microsoft.com/beta/users/{userId}/teamwork/sendActivityNotification

他们的http request body基本类似:

{"topic": {"source": "entityUrl","value": "https://graph.microsoft.com/beta/users/{user-id}/teamwork/installedApps/{installation-id}"},"activityType": "taskCreated","previewText": {"content": "New Task Created"},"templateParameters": [{"name": "taskId","value": "Task 342342"}]
}

区别在于不同的类型,他们对应的topic里的value的格式不同。实际上 Teams 的 Graph API 还给我们提供了一种通用的 topic 类型:text,如下:

{"topic": {"source": "text","value": "Deployment Approvals Channel","webUrl": "https://teams.microsoft.com/l/message/19:448cfd2ac2a7490a9084a9ed14cttr78c@thread.skype/1605223780000?tenantId=c8b1bf45-3834-4ecf-971a-b4c755ee677d&groupId=d4c2a937-f097-435a-bc91-5c1683ca7245&parentMessageId=1605223771864&teamName=Approvals&channelName=Azure%20DevOps&createdTime=1605223780000"},...
}

可以看到,在 source 字段指定 text,然后在 value 里填入你想要的任何文字内容,再加一个 webUrl 就可以了。需要注意的是,在这种模式下, webUrl 是必须的。

有了这种类型,实际上你就可以推送任何内容了,不再局限于 team 里的某个 resource。

Activity Notification的修改

在一个推送的请求里,实际上还有一个隐藏的属性 chainId

{"topic": { ... },"activityType": "...","previewText": { ... },"templateParameters": [ ... ],"chainId": 3279238
}

chainId 是一个64位的整数,来唯一的指定你这次推送的id,如果你需要修改你之前推送的notification内容,可以再次调用 graph api,只要传入一样的 chainId 就可以了,就可以将之前的notificaiton更新。

也就是说如果你的 app 需要更新之前发的 notification 内容,那你在发推送的时候需要生成一个唯一的64位整数,并且保存下来,下次要更新的时候再查询到那个id,并用它再发送新的 notification 内容即可。

发送ActivityFeed的隐藏功能相关推荐

  1. 分析21个 Qt隐藏功能和技巧

    分析21个 Qt 隐藏功能和技巧是本文将要介绍的内容,一一详细的罗列出来,以方便大家阅读方便. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能 Q_ENUMS: ...

  2. oppo手机显示服务器繁忙,如何玩转OPPO R11,五大隐藏功能你必须了解

    原标题:如何玩转OPPO R11,五大隐藏功能你必须了解 如今智能手机已经成为人们最不可缺少的一个工具,自从手机进入智能时代之后也不再仅仅只是一个用来通讯的工具了,越来越多的功能也方便了人们的日常生活 ...

  3. 增大iphone音量技巧_原来苹果手机隐藏功能这么好用!调整这个设置,一键增大外放音量...

    苹果手机是众所周知的流畅,但是很多朋友都说苹果手机只是流畅,实用功能并不多,其实iPhone手机的实用功能特别多,只是很多都隐藏起来,今天笔者就几个iPhone手机的隐藏功能,实用又有趣哦! 手持 i ...

  4. 微信这10个牛X的隐藏功能,你知道几个?

    如果你的手机只能装一款APP,这个APP是哪个? 相信很多人的答案都是--微信. 但是你真的很了解微信吗? 比如下面的这些隐藏技能,你知道吗? 如果下面10个隐藏功能中,你用过超过5个,欢迎留言告诉我 ...

  5. iphonex计算机隐藏功能,关于iPhone11系列的一些隐藏功能,非常的实用

    描述 (文章来源:梦科技) iPhoneX是苹果第一次取消home键,采用全面屏手机,今年发布的iPhone11系列是第二代取消home键的全面屏幕手机,并且采用了后置双摄像.三摄设计.那么iPhon ...

  6. deepin应用分发_Deepin Dock隐藏功能等功能说明

    经过Deepin开发和设计师团队不懈的努力,深度桌面环境2.0不断地走向了成熟.由于深度桌面环境2.0部分模块功能已经发生改变,所以本次我们介绍一下当前Dock的改变. 隐藏功能 Dock是用户启动程 ...

  7. emoji隐藏表情_MacBook 7大隐藏功能曝光!强大到逆天!

    探索一款设备或其软件的部分乐趣在于发现隐藏的功能. 无论是为了娱乐,还是为了加速平凡的日常任务--隐藏的功能通常是最好用的功能. Mac有很多隐藏的宝藏,比如一个全功能的emoji键盘,以及一个简单的 ...

  8. 苹果6设置流量显示无服务器,超实用!15个苹果手机的隐藏功能,不看你手机就白买了!...

    原标题:超实用!15个苹果手机的隐藏功能,不看你手机就白买了! 平时出门什么都可以不带,除了手机 (小编的手机简直是长在了手上) 在用苹果手机的宝宝们 知不知道你的苹果手机 还有这些隐藏的功能? 快速 ...

  9. 图片内存太大?微信这个隐藏功能轻松压缩PNG、JPG图片!

    相信很多人都遇到过图片太大,无法上传或者无法发送的问题吧,于是在网上找各种压缩软件,结果使用起来体验还非常差,其实微信这个隐藏功能就能轻松压缩PNG.JPG图片. 那么微信中的隐藏功能到底是什么呢?我 ...

最新文章

  1. 57. Insert Interval
  2. windows下安装及配置 golang 的Web框架Beego环境
  3. 深拷贝与浅拷贝深入理解
  4. c语言调用子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  5. Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理、会员管理、订单管理、促销管理、财务管理+通用版商城前后端电商系统+电商用户数据大屏看板
  6. 转盘抽奖的案例-----
  7. (转)孙正义:数字资产会成为人类最大的资产
  8. 数据挖掘的方法有哪些?
  9. 西电微原课设——矩阵式键盘数字密码锁设计
  10. Python贝叶斯决策面计算及仿真
  11. 阿里企业邮箱产品优势、功能、版本介绍
  12. 全国大学生英语竞赛C类
  13. 关于显示屏分辨率的问题
  14. 磁盘分区MBR与GPT详解
  15. 【一览表】macOS代号\macOS版本\苹果电脑各型号对应的macOS版本列表
  16. [软件人生]IT168年会的一点感受——简评专题的内容和说实话的流氓
  17. Java网络编程学习
  18. GSoC 2022 Blender VSE: 第二、三周总结
  19. php中row是什么意思,row是什么意思
  20. 数据中心服务器机柜安装,简单几步教你改善数据中心机柜布线

热门文章

  1. 程序员必备 Git 分支开发规范指南
  2. 计算机应用基础word说课,全国“XX杯”说课大赛计算机应用基础类优秀作品:Word图文混排教案.doc...
  3. 会返回两次_嫦娥五号为何用独特的半弹道式返回方式?原来有更深远的考虑……...
  4. 内容可编辑_让PDF像WORD一样自由编辑,好用的PDF编辑工具推荐
  5. Java中实现统计一个字符串在另一个字符串中出现的次数统计
  6. collections 中的namedtuple
  7. 微信公众号无需二次登录_您无需两次解决问题-您需要一个设计系统
  8. 工业仪器仪表 界面设计_如何设计时尚的仪表板界面
  9. 隐马尔可夫模型(HMM)及Viterbi算法
  10. getContentResolver().query()方法selection参数使用详解(转)