EMAP消息发送开发案例
一、消息发送开发案例
- 1)消息接口总述
调用服务总线的restful接口进行消息发送,可以发送邮件、短信、微信、门户站内信、移动站内信等。
每次最多发送500人,超过500人,请多次调用。
注意:
1、发送邮件时,如果不指定发件人(即mailSender、mailSenderPw)则使用系统邮箱作为发件箱,否则使用指定发发件箱。因邮箱服务器对发送次数、内容都可能有限制(如:163邮箱服务器限制就比较严格),且部分邮箱需要做额外的授权才能发送,所以发送邮件时消息平台限制必须使用校内的邮箱服务器(如南京理工大学发送邮件时,发件箱必须是如:[email protected])。
2、注意:对于以下基于http协议的接口,请不要通过前端js直接调用,因为会泄露token信息。appId、serviceId和accessToken信息作为参数传递,restful的放在http头,soap的放在soap头。另外基于安全与通用性的考虑,消息平台的restful接口没有用http method来表示操作方式,定义http method都为post,但是所有的get、delete等操作都遵循restful的约束规范。另外,content-type 都为 application/json,String 编码为utf-8。
3、本案例只针对邮件的消息发送,短信、站内信、微信等消息发送方式,清根据注释中相关提示,进行参数修改即可。
- 2)开发流程
第一步、申请消息接口
可以到云端(http://www.campusphere.cn/appcenter/login)注册时申请API接口(云端注册请参看《开发者指导手册_V1.0》第三章);以下是发送接口,勾选后,提交后可进入审核阶段。
第二步、邮件发送审核
app名称与appId至[email protected]进行接口审核。(人工审核)
第三步、收到审核通过邮件
crowd回邮件给申请者。
第四步、开发者,在云端重新接入“工程项目部”;
第五步、获取开发时接口密钥
申请者登录smps.wisedu.com,进入已申请服务,打开消息发送接口的详情,获取接口地址、appId、accessToken三个参数
即appId#app版本号作为账号与密码登录,例如appid : 4770139910088743 版本:1.0.0,账号密码为,账号:4770139910088743#1.0.0 密码:4770139910088743#1.0.0
消息接口服务名称:
message_pocket_web-mp-restful-message-sendProxyService
第六步、java代码调用接口
ROOT/emap.properties 配置如下参数:
api.url =[http://172.16.7.105:80](http://172.16.7.105/)
appId =4770139910088743\#1.0.0
accessToken =42b94ae3b91862be9af67642ec0f38a1
schoolCode =999000
消息发送demo工程代码下载地址:链接:
http://pan.baidu.com/s/1i5jr5xN
密码: qtgn
下载后直接解压到workspace ,启动tomcat后即可访问。
第七步、测试
请求地址 http://localhost:8080/emap/sys/xxjkdemo/message/send.do
返回结果:
邮箱中收到测试邮件
3)附件
请求数据格式
参数 | 必须 | 说明 | |
---|---|---|---|
schoolCode | 是 | 调用接口的学校对应的学校Id | |
sign | 是 | 请求签名:(accessToken + schoolCode + 第一个receivers 的userID )的MD5值 | |
appId | 否 | 应用的appId,创建应用时,在应用管理平台生成,用来区分消息的来源 | |
senderId | 否 | 消息发送者的用户ID,当消息为人发送而非系统发送的时候需要此字段 | |
senderName | 否 | 消息发送者的姓名 | |
mailSender | 否 | 邮件发件人,当sendType为3邮件时才有效,为空则发件人为系统默认。另外邮件发件人必须为系统设置的邮件服务器的用户,并开启了SMTP服务,每个学校对应一个邮件服务器,公司测试环境统一用**@wisedu.com | |
mailSenderPw | 否 | 邮件发件人密码 | |
subject | 否 | 消息主题,发送短信时参数为空,其他消息类型必填 | |
content | 是 | 消息的容 | |
pcUrl | 否 | pc端点击消息时的链接url | |
mobileUrl | 否 | 手机端点击消息时的链接url | |
urlDesc | 否 | Url链接的描述,如“查看详情”“去处理” | |
sendType | 是 | 消息发送类型,发送方式: 0.PC门户通知和移动校园同时发送(通常为此种方式) 1.只发送PC门户 2.只发送移动校园 3邮件 4短信 5微信 | |
sendNow | 是 | 发送方式,是否立即发送,0:定时发送 1:立即发送 默认1 | |
sendTime | 否 | 选择定时发送模式时,填写消息发送的时间,10位时间戳,定时发送模式时必须 | |
tagId | 是 | 消息标签,通用标签对应关系详见下面的tagId对应关系表,如果要获取所有请调用接口10 | |
attachments | 否 | 附件id,调用附件上传接口后返回的id,暂时只有邮件和微信支持附件,上传附件接口为18,对于微信图片大小限制为<2M 普通文件的限制为<20M(注:目前附件上传API未开放) | |
receivers | 是 | 消息接收人,receiver json数组,reciever的结构见下面的Receiver数据说明 | |
wxSendType | 否 | 当发送类型为5时此字段才会生效,此字段值为必须为:text(文本消息)、file(文件)、video(视频)、voice(声音)、image(图像)、news(新闻)、mpnews(图文)中之一。(注:因附件上传API未开放,发送类型为5时,wxSendType = “tex”) | |
2.receiver数据说明
参数 | 必须 | 说明 | |
---|---|---|---|
userId | 是 | 收件人的userId(职工号或学号) | |
mobile | 否 | 手机号(当消息类型为短信时必填) | |
否 | 邮箱地址(当消息类型为邮件时必填) | ||
flag | 否 | 邮件收件人标识( 0正常发送 1密送 2抄送) | |
3.tagId对应关系表
tagId | tagName | |
---|---|---|
1012 | 其他服务 | |
1013 | 学工 | |
1014 | 科研服务 | |
1016 | 人事 | |
1017 | 迎新服务 | |
1020 | 公共服务 | |
9001 | 违纪处分 | |
9002 | 政工队伍 | |
9003 | 学生离校 | |
9004 | 迎新系统 | |
9005 | 奖学金 | |
9006 | 助学金 | |
9007 | 待办 | |
- 4)发送到移动校园客户端和PC门户
请求Json 示例:
{
"schoolCode": "wisedu",
"sign": "d27aa6ce34d93e8d08f1b1e19dd671aa",
"appId": "",
"senderId": "T2015012",
"senderName": "张三",
"mailSender": "",
"mailSenderPw": "",
"subject": "这是消息的主题",
"content": "这是消息的内容",
"pcUrl": "http://www.baidu.com",
"mobileUrl": "http://www.baidu.com",
"urlDesc": "查看详情",
"sendType": "0",
"sendNow": "true",
"sendTime": "",
"tagCode": "100001",
"attachments": [],
"receivers": [
{
"userId": "01112311",
"mobile": "",
"email": "",
"flag": ""
},
{
"userId": "01112311",
"mobile": "",
"email": "",
"flag": ""
}
]
}
receivers 中的userId(职工号或学号) 必须在腾讯信鸽服务器端绑定(移动校园客户端在登陆的时候调用腾讯信鸽进行绑定,此接口的调用方无需关心)。
- 5)发送短信Json 示例
{
"schoolCode": "wisedu",
"sign": "d27aa6ce34d93e8d08f1b1e19dd671aa",
"appId": "",
"senderId": "T2015012",
"senderName": "张三",
"mailSender": "",
"mailSenderPw": "",
"subject": "这是消息的主题",
"content": "这是消息的内容",
"pcUrl": "http://www.baidu.com",
"mobileUrl": "http://www.baidu.com",
"urlDesc": "查看详情",
"sendType": "4",
"sendNow": "true",
"sendTime": "",
"tagCode": "100001",
"attachments": [],
"receivers": [
{
"userId": "01112311",
"mobile": "15689245635",
"email": "",
"flag": ""
},
{
"userId": "01112311",
"mobile": "15689245635",
"email": "",
"flag": ""
}
]
}
receivers 中的userId必填,按手机号码发送,其他参数选填。
- 6)发送微信请求Json 示例
{
"schoolCode": "wisedu",
"sign": "d27aa6ce34d93e8d08f1b1e19dd671aa",
"appId": "",
"senderId": "T2015012",
"senderName": "张三",
"mailSender": "",
"mailSenderPw": "",
"subject": "这是消息的主题",
"content": "这是消息的内容",
"pcUrl": "http://www.baidu.com",
"mobileUrl": "http://www.baidu.com",
"urlDesc": "查看详情",
"sendType": "5",
"sendNow": "false",
"sendTime": "1452863680",
"tagCode": "100001",
"attachments": [],
"receivers": [
{
"userId": "01112311",
"mobile": "",
"email": "",
"flag": ""
},
{
"userId": "01112311",
"mobile": "",
"email": "",
"flag": ""
}
]
}
receivers 中的userId (学号和职工号)默认已在微信企业号中通过微信官方管控台绑定,暂未提供微信绑定接口,开发时所用企业号及绑定方式详见下文“微信企业号测试说明”。发送时采用userId发送,如果接收者的userId未绑定到微信企业号,则该接收者不会收到来自企业号的消息。
- 7)发送邮件请求Json 示例
{
"schoolCode": "wisedu",
"sign": "d27aa6ce34d93e8d08f1b1e19dd671aa",
"appId": "",
"senderId": "",
"senderName": "",
"mailSender": "[email protected]",
"mailSenderPw": "123456",
"subject": "这是消息的主题",
"content": "这是消息的内容",
"pcUrl": "http://www.baidu.com",
"mobileUrl": "http://www.baidu.com",
"urlDesc": "查看详情",
"sendType": "4",
"sendNow": "true",
"sendTime": "1452863680",
"tagCode": "100001",
"attachments": [],
"receivers": [
{
"userId": "01112311",
"mobile": "",
"email": "[email protected]",
"flag": "0"
},
{
"userId": "01112311",
"mobile": "",
"email": "[email protected]",
"flag": "1"
}
]
}
receivers 中的userId必填,flag必填,邮箱必填。 按提供的邮箱和flag发送。
- 8)返回数据格式
参数 | 说明 | |
---|---|---|
status | 返回状态码 | |
msg | 状态码说明(成功或失败以及失败原因) | |
返回Json 示例:
{
"status": 200,
"msg": "success"
}