第三方应用集成禅道客户端进行消息通知

禅道开源版11.0版本集成了禅道客户端功能。

禅道里的消息通知可以发送到禅道客户端,同时增加了消息通知接口。

与禅道集成的第三方应用,也可以通过该消息通知接口,将第三方应用的消息发送到禅道客户端里。

本文将详细介绍第三方应用如何集成禅道客户端进行消息通知。

一、设置应用集成

第三方应用要与禅道做集成,具体请参考:http://www.zentao.net/book/zentaopmshelp/integration-287.html

二、签名机制

第三方应用在请求禅道数据的时候需要做签名验证。

API 的请求格式为 /api.php? m=moduleName&f=methodName& params=params &code=code&time=timestamp&token=token。

其中:m=moduleName&f=methodName& params=params 部分为数据请求参数,根据实际的需求进行设置。

code为应用代号,需要和喧喧应用设置中保持一致。

time位时间戳,可以通过PHP的time函数得到。

token为数字签名,其算法为:code、密钥、time字符串合并,再进行 md5。

  1. $code = 'myApp';
  2. $key = '427c579384224abf9570779d82969d1e';
  3. $time = '1557034496';
  4. $token = md5($code . $key . $time);

下面将详细说明第三方应用在完成和禅道的集成后如何通过禅道客户端进行消息通知。

三、通过禅道客户端进行消息通知

3.1 获取系统中的讨论组列表

请求方式:GET

模块名:chat

方法名:getChatGroups

参数:无

返回值:json对象,解析后为包含result和data属性的对象

8.2.11 第三方应用集成禅道客户端进行消息通知 - 图1

3.2 获取系统中所有或者某个讨论组内的用户

请求方式:GET

模块名:chat

方法名:getChatUsers

参数:gid(非必须,不传或者为空则获取系统内所有用户,如果要获取某个讨论组的用户,可先通过上一个接口获取讨论组的gid,然后作为参数传入)

返回值:json对象,解析后为包含result和data属性的对象

8.2.11 第三方应用集成禅道客户端进行消息通知 - 图2

3.3 消息通知接口

请求方式:POST

模块名:chat

方法名:notifyMSG

参数:无

将消息体构造好后,转成json格式,然后通过post方式传递给接口,对应的变量名和数据结构如下:

首先构造消息体对象,对象属性如下:

8.2.11 第三方应用集成禅道客户端进行消息通知 - 图3

以下为构造的一个消息体数据示例:

8.2.11 第三方应用集成禅道客户端进行消息通知 - 图4

构造好的消息体对象,需要转成json格式的对象,然后通过post的方式传递给接口,post时变量名称应设为‘data’,保证接口通过post方式接收到的是‘data’为变量名的json格式的数据,解析后是上表里的消息体对象。

伪代码:$_POST['data'] = json_encode($message);