请参照项目实际域名操作
# 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
}
# 发送消息接口对接
# 发送消息接口文档
文档地址: 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": 时间戳
}