请参照项目实际域名操作

# 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": 时间戳
}