上一篇文章讲到了如何使用最新的Graph API来给一个用户发送一个简单的 Activity Feed。我们这篇文章来详细讲一下发送三种不同类型的消息。

发送 Chat 相关的 Activity Notification

API 为 POST https://graph.microsoft.com/beta/chats/{chat-id}/sendActivityNotification

http请求的内容为:

{"topic": {"source": "entityUrl","value": "https://graph.microsoft.com/beta/chats/{chat-id}"},"activityType": "taskCreated","previewText": {"content": "New Task Created"},"recipient": {"@odata.type": "microsoft.graph.aadUserNotificationRecipient","userId": "569363e2-1111-2222-3333-16f245c5d66a"},"templateParameters": [{"name": "taskId","value": "Task 12322"}]
}

其中 activityType 和 templateParameters 我已经在前面一篇文章中介绍过,previewText 从名字上也很容易理解,是推送的消息的文本内容,recipient 是接受推送消息的用户的 id 信息。

这里比较关键的是 topic,这个指明了这个推送的消息是针对哪个聊天 (chat) 或者哪个 聊天消息 (chatMessage) 的,如果是针对 chat 的,那么 topic 里的 value 就是 https://graph.microsoft.com/beta/chats/{chat-id} 这种格式,如果是 chatMessage,格式就是 https://graph.microsoft.com/beta/chats/{chat-id}/messages/{message-id}

大家可能会问,如何获得这个 chat id 和 message id 呢,这两个可以在发送 message 是返回,或者也可以通过调用 graph api 来获取。

发送 Team 相关的 Activity Notification

API 为 POST https://graph.microsoft.com/beta/teams/{teamId}/sendActivityNotification

http请求的内容和之前的很像:

{"topic": {"source": "entityUrl","value": "https://graph.microsoft.com/beta/teams/{team-id}"},"activityType": "pendingFinanceApprovalRequests","previewText": {"content": "Internal spending team has a pending finance approval requests"},"recipient": {"@odata.type": "microsoft.graph.aadUserNotificationRecipient","userId": "569363e2-1111-2222-3333-16f245c5d66a"},"templateParameters": [{"name": "pendingRequestCount","value": "5"}]
}

它支持的 entity url 有好几种:

  • team,格式为 https://graph.microsoft.com/beta/teams/{team-id}
  • channel,格式为 https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}
  • chatMesage,格式为 https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/messages/{message-id}
  • teamsTab,格式为 https://graph.microsoft.com/beta/teams/{team-id}/channels/{channel-id}/tabs/{tab-id}

发送 User 相关的 Activity Notification

API 为 POST https://graph.microsoft.com/beta/users/{userId}/teamwork/sendActivityNotification

http请求的内容和之前的很像:

{"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"}]
}

它支持的 entity url 有两种:

  • teamsAppInstallation,格式为 https://graph.microsoft.com/beta/users/{user-id}/teamwork/installedApps/{installation-id}
  • teamsCatalogApp,格式为 https://graph.microsoft.com/beta/appCatalogs/teamsApps/{app-id}

发送不同类型的ActivityFeed相关推荐

  1. Android 手机卫士--解析json与消息机制发送不同类型消息

    本文地址:http://www.cnblogs.com/wuyudong/p/5900800.html,转载请注明源地址. 1.解析json数据 解析json的代码很简单 JSONObject jso ...

  2. PHP header发送各种类型文件及设置文件下载名

    2019独角兽企业重金招聘Python工程师标准>>> PHP header发送各种类型文件及设置文件下载名 <?php header('Content-type: appli ...

  3. 模拟登录,发送amf类型数据

    模拟登录,发送amf类型数据 参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类  一.登录 登录过 ...

  4. Python 技术篇-用smtplib和email库实现邮件发送各种类型的附件实例演示

    qq 账号发送邮箱登陆密码需要用授权码. 可以看我的这个文章: Python 技术篇-qq邮箱授权码开通 实现原理 我们用图片和文档两种类型的附件举个例子. MIMEBase("," ...

  5. PHP header发送各种类型文件下载

    <?php header('Content-type: application/image/pjpeg');//输出的类型 header('Content-Disposition: attach ...

  6. 【需特殊处理】如何使用request.post(Python)直接发送数组类型的方式

    关于api:如何使用request.post(Python)发送数组? "值错误:太多值无法解包" | 码农家园 """声明:由于data和json都 ...

  7. 014-Axios Ajax:前后端分离概述,发送json类型的参数,前后端分离开发:在线接口文档,前端工程化、Element、nginx

    第一节 Ajax概述 1.概述 概念: Asynchronous JavaScript And XML,异步的JavaScript和XML. 作用: 数据交换:通过Ajax可以给服务器发送请求,并获取 ...

  8. C#中使用SendMessage进行进程通信,可发送字符串,结构体(不能发送类类型)。

    发送时只能以结构体形式发送,类的话会提示"指定结构必须能直接复制到本机结构中,或是具有布局信息 "的错误提示 以下两种结构体示例都可以被发送 public struct A     ...

  9. 从MySQL获取的数据无法在PHP输出_无法从PHP发送内容类型:text/xml header,同时从MYSQL获取数据...

    我希望你能对我的问题有所了解.我需要一个AJAX/PHP/MYSQL应用程序来显示我正在写的页面上的帖子和内容. 我只是在吃了蘑菇之后才发现如何用PHP做一些简单的事情,但那是几年前的事了,现在我没有 ...

最新文章

  1. python 编程一日一练-爱上Python:一日精通Python编程
  2. vue中如何在地图中标点…
  3. Remove Duplicates from Sorted Array II leetcode java
  4. PHP多进程处理并行处理任务实例
  5. oracle manager 配置,Oracle Net Manager 基本配置
  6. Security+ 学习笔记39 安全网络设计
  7. 开心消消乐h5版游戏案例分享
  8. 为什么郭台铭才是夏普的最佳归宿?
  9. k8s+containerd+kata-containers 安装
  10. springboot前后端分离,邮箱/手机验证号激活和登录,手机注册和激活
  11. windows 进程监控 Procmon.exe
  12. switch条件语句与跳转语句(附分数分层案例)
  13. 不用PLC,怎么用组态王和step7编程软件结合实现新年晚会舞台灯光效果,简单好看怎么做?
  14. Java 数字转字符串并指定位数,位数不足,自动补零
  15. 猿创征文|『编程与创作』10款颜值颇高的宝藏工具
  16. android 播放3gp音频,说说 Android 中如何操作音频与视频文件
  17. 人脸识别翼闸使用规范_测温人脸识别闸机翼闸的常规维护保养
  18. 算法--猜字谜(哈希表优化)
  19. 制作ubuntu安装U盘,安装错误gfxboot.c32 not a com32r image
  20. 怎么把pdf转换为excel表格?有什么实用的转换工具?

热门文章

  1. 20 个 CSS 高级技巧汇总
  2. 程序员必定会爱上的10款软件
  3. 程序员的10大编程技巧
  4. python替换所有标点符号 正则_python 把标点符号替换为空
  5. matlab中select,[转载]MATLAB阈值获取函数ddencmp、thselect、wbmpen和w
  6. 螺旋图形Linux,Canvas 螺旋线几何图形绘制
  7. 鸿蒙系统支持980,鸿蒙手机上线时间 鸿蒙系统支持哪些手机2021最新汇总
  8. android 辅助功能_辅助功能简介
  9. 编写高质量可维护的代码:优雅命名
  10. Ubuntu18.04如何让桌面软件默认root权限运行?