请参照项目实际域名操作

# poa能力申请

  • 注册应用 已注册过的应用,不用重复注册,直接申请发送信息scope即可。
curl -i -s -X POST -H 'Content-Type: application/json' -d '{"clientName": "应用名称"}' 'http://poa-sa.xxx.edu.cn/v1/clients'

响应结果如下:

{"code":0,"message":null,"data":{"clientId":"*************","clientSecret":"*************"}}
  • 应用申请发送消息 scope
curl -i -s -X POST -H 'Content-Type: application/json' -d '{"scopes": ["messagecenter:v1:sendMessage"]}' 'http://poa-sa.xxx.edu.cn/v1/clients/应用clientId/scopes'
  • 查询已注册应用
curl -i -s -X GET 'http://poa-sa.xxx.edu.cn/v1/clients?pageNo=1&pageSize=20'

# 获取access token

请求:

POST /oauth2/token HTTP/1.1
Host: poa.xxx.edu.cn
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=<your_client_id>&client_secret=
<your_client_secret>&scope=<your_scopes>

参数说明:

参数 说明
grant_type 值必须是client_credentials。
client_id 申请的 Client ID。
client_secret 申请的 Client Secret。
scope 所请求的权限,多个用逗号分割。

响应:

200 OK
Content-Type: application/json

{
  "access_token": "AYjcyMzY3ZDhiNmJkNTY",
  "token_type": "bearer",
  "expires_in": 3600
}

更多poa相关操作请看poa相关文档

# 发送消息接口对接

# 发送消息接口文档

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/messageSend (域名地址参考实际项目地址) 图片

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
appId 应用ID string
sendId 消息任务序列识别号,不重复【为空,消息服务生成唯一sendId,并返回】 string
sendType 根据消息类型配置发送方式选填【SMS(手机短信)、MAIL(邮件)、WECHAT(微信)、DINGTALK(钉钉)、SUPERAPP(APP)、WEBSITE(系统消息) 】;不填默认按照配置 string[]
messageTypeCode 消息类型的编码 string
promise 消息送达承诺【如果true,校验比较严格】 boolean false
importantIdentity 是否重要消息的标识 boolean false
toPersons 接收人账号,多个英文逗号分隔【5种接收对象,至少有一不为空】 string
toDepts 接收部门id,多个英文逗号分隔【5种接收对象,至少有一不为空】 string
toGroups 接收用户组id,多个英文逗号分隔【5种接收对象,至少有一不为空】 string
toPhones 接收手机号,多个英文逗号分隔【只能发送短信】 string
toEmails 接收邮箱,多个英文逗号分隔【只能发送邮件】 string
signOff 落款 string
data.title 消息标题 string
data.coverImageUrl 封面图url string
data.filesUrl 消息附件url,多个英文逗号分隔【此处调用消息平台服务文件上传功能】 string
data.mobileUrl 移动端跳转链接 string
data.url pc端跳转链接 string
data.handleKey 处理字段;APP跳转预设的KEY或者是接收方要处理的URL地址等【如果为空,默认设置该消息任务的账号唯一key】 string
data.paramValueJson 消息类型模板设置的变量【模板设置了变量就必填】 JSONObject

其中 appId是由消息平台应用申请完成后获得;

# 响应结果

发送成功

code 为 0 表示发送成功
data.sendId 返回消息任务发送的序列号;根据sendId 可以查询发送任务的情况;

发送失败

code !=  0

若是入参  promise 设置为false

message 给出错误信息;

若是入参  promise 设置为true 

message 给出错误信息;

data.errorList 返回有异常的发送情况数组:
        receiverKey 接收对象【可以是账号、手机号、邮箱地址】
        exceptionMessage 该接收对象具体的异常问题

# postman截图

模板如下:

您好,{{name}}转阅了{{ffname}}流程事项给您。

定义模板变量 | name-用户名称; ffname-应用名称 Postman截图如下: 图片 图片

# 单模板&多模板发送

# 单模板

模板如下:

验证码{{code}},您正在进行身份验证,打死不要告诉别人哦!

入参demo:

{
  "data": {
    "paramValueJson": {
      "code": "000212"
    },
    "title": "验证码"
  },
  "messageTypeCode": "MTxxx",
  "appId": "xxxxx",
  "sendType": [
    "SMS","MAIL","WEBSITE","SUPERAPP"
  ],
  "toPersons": "smartadmin",
  "toPhones": "153****2458"
}

# 多模板

SMS模板为

验证码{{code}},您正在进行身份验证,打死不要告诉别人哦!

WEBSITE模板为

您正在进行身份验证,验证码为{{code}},有效时间为{{num}}分钟

入参demo:

{
  "data": {
    "paramValueJson": {
      "SMS":"{code": "000212"},
      "WEBSITE":"{code": "000212","num":"30"}
    },
    "title": "验证码"
  },
  "messageTypeCode": "MTxxx",
  "appId": "xxxx",
  "sendType": [
    "SMS","WEBSITE"
  ],
  "toPersons": "smartadmin",
  "toPhones": "153****2458"
}

# 获取消息类别分页列表

# 获取消息类别分页列表

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/getMessageTypePageList (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
name 消息类别名称 string
pageIndex 分页-页码 integer 0
pageSize 分页-每页记录数 integer 10

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": {
    "totalCount": 记录总数,
    "pageSize": 每页记录数,
    "totalPages": 分页总数,
    "pageIndex": 当前页码,
    "items": [
      {
        "name": "消息类别名称",
        "description": "消息类别描述",
        "editTime": "消息类别编辑时间",
        "id": "消息类别主键",
        "code": "消息类别编码"
      },...
    ]
  }
}

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 获取应用列表

# 获取应用列表

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/listApp (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": [
    {
      "name": "应用名称",
      "description": 描述,
      "systemName": 所属系统,
      "enabled": 是否启用【1表示启用,0表示未启用】,
      "appId": "应用appId"
    },...
  ]
}  

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 根据消息类别查询消息类型分页列表

# 根据消息类别查询消息类型分页列表

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/getMessageTypeByCategory (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
messageCategoryName 消息类别名称 string
messageCategoryCode 消息类别编码 string
pageIndex 分页-页码 integer 0
pageSize 分页-每页记录数 integer 10

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": {
    "totalCount": 记录总数,
    "pageSize": 每页记录数,
    "totalPages": 分页总数,
    "pageIndex": 当前页码,
    "items": [
      {
        "messageCategoryName": "消息类别名称",
        "messageTypeCode": "消息类型编码",
        "whetherUniversal": 是否通用模板【1表示是,0表示不是】,
        "messageTypeId": "消息类型ID",
        "appId": "应用appId",
        "messageCategoryCode": "消息类别编码",
        "description": "描述",
        "messageTypeName": "消息类型名称",
        "enabled": 是否启用【1表示启用,0表示未启用】
      },...
    ]
  }
}

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 个人消息记录分页查询

# 个人消息记录分页查询

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/listMessageRecord (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
accountName 用户名(学工号) string
appKey 应用appId string
messageCategoryCode 分页-页码 integer 0
messageTypeId 消息类型Id string 0
messageTypeCode 消息类型CODE string 0
notReceiveCategorys 不接收消息类别(类别代码),多个用英文逗号隔开 string 0
notReceiveTypes 不接收消息类型(ID),多个用英文逗号隔开 string 0
title 消息标题 string 0
important 是否重要消息 boolean 0
star 是否标星信息【0 表示 正常状态 1 表示标星】 integer 0
readed 是否已读 boolean 0
readerStatus 接收人标记消息状态【0 表示 正常状态 1 表示回收站】 integer 0
pageIndex 分页-页码 integer 0
pageSize 分页-每页记录数 integer 10

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": {
    "totalCount": 记录总数,
    "pageSize": 每页记录数,
    "totalPages": 分页总数,
    "pageIndex": 当前页码,
    "items": [
      {
        "recordId": "消息记录ID",
        "title": "消息记录标题",
        "coverImageUrl": "封面图地址",
        "content": "消息记录内容",
        "mobileUrl": "移动端跳转链接",
        "signOff": "落款",
        "url": "pc端跳转链接",
        "sendType": "发送方式",
        "accountName": "消息接收人账号",
        "sendTime": "发送时间",
        "appId": "应用appId",
        "appName": "应用名称",
        "messageCategoryCode": "消息类别编码",
        "messageTypeName": "消息类型名称",
        "readed": "是否已读【1表示已读,0表示未读】",
        "star": "是否标星【1表示标星,0表示未标星】",
        "readerStatus": "接收人标记消息状态【0表示正常,1表示回收站,2表示删除】",
        "deptId": "落款部门",
        "sendTaskPersonKey": "消息任务唯一键",
        "receiverKey": "接收号码",
        "messageCategoryName": "消息类别名称",
        "messageTypeCode": "消息类别编码",
        "important": "是否重要消息【1表示重要,0表示不重要】",
        "deleteTime": "删除时间",
        "files": "附件"
      },...
    ]
  }
}

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 根据消息类型编码查询对应发送方式

# 根据消息类型编码查询对应发送方式

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/getSendTypeByMessageTypeCode (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
code 消息类型编码 string

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": [
    {
      "发送方式": "发送方式名称",
      ...
    },...
  ]
}  

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 根据学工号获取安全手机号(手机号脱敏)

# 根据学工号获取安全手机号(手机号脱敏)

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/getVerificationPhoneNum (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
accountNames 学工号,多个学工号英文逗号分隔 string

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": [
    {
      "accountName": "账号",
      "securePhone":"手机号(脱敏)"
    },...
  ]
}  

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# app消息推送接口

# app消息批量推送接口;全体推送以及批量推送;【该接口,无消息记录】

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/appBatchMessageSend (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
appId 应用appId string
sendId 消息任务序列识别号,不重复【为空,消息服务生成唯一sendId,并返回】 string
messageTypeCode 消息类型的编码 string
all 是否全体推送【设置全量推送,clientIds,tags设置无效】 boolean false
clientIds 设备clientId,多个英文逗号分隔【clientIds,tags 二选一】 string false
tags 标签,多个英文逗号分隔【app登录用户打上标签,通过标签可以分组批量推送】【clientIds,tags 二选一】 string
promise 消息送达承诺【如果true,校验比较严格】 boolean false
importantIdentity 是否重要消息的标识 boolean false
data.title 消息标题 string
data.extraParams 额外参数 string
data.coverImageUrl 封面图url string
data.filesUrl 消息附件url,多个英文逗号分隔【此处调用消息平台服务文件上传功能】 string
data.mobileUrl 移动端跳转链接 string
data.url pc端跳转链接 string
data.handleKey 处理字段;APP跳转预设的KEY或者是接收方要处理的URL地址等【如果为空,默认设置该消息任务的账号唯一key】 string
data.paramValueJson 消息类型模板设置的变量【模板设置了变量就必填】 JSONObject

其中 appId是由消息平台应用申请完成后获得;

# 响应结果

发送成功

code 为 0 表示发送成功

发送失败


  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 消息任务结果统计

# 消息任务结果统计

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/getSendTaskCount (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
sendId 消息任务发送序列号 string

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": [
    {
      "count": "消息任务下消息记录总数",
      "sendId":"发送序列号",
      "type": "发送方式",
      "error":"消息记录失败数",
      "success": "消息记录成功数"
    },...
  ]
}  

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}

# 根根据应用appId查询消息类型列表

# 根根据应用appId查询消息类型列表

文档地址: https://poa-docs.xxx.edu.cn/messagecenter/v1/latest/#operation/listMessageType (域名地址参考实际项目地址)

# access token

获取方式参考上方poa获取access token

# 入参说明

参数 描述 类型 必填 默认值
appKey 应用appId string
messageTypeId 消息类型ID string

# 响应结果

查询成功

{
  "timestamp": 时间戳,
  "code": 0, //code 为 0表示查询成功
  "message": "查询成功",
  "data": [
    {
      "code": "消息类型编码",
      "addTime":"消息类型创建时间",
      "appName": "应用名称",
      "appId":"应用appId",
      "id": "消息类型ID",
      "type": "发送方式",
      "messageTypeName":"消息类型名称",
      "enabled": "是否启用【1表示启用,0表示未启用】",
    },...
  ]
}  

查询失败

{
  "code": , //code 不为 0表示查询失败
  "message": "错误信息",
  "timestamp": 时间戳
}