在项目实施过程中,经常会出现以下需求,需要发送短信邮件或者站内消息提醒给到对应的代办人,或者系统中某些数据到期需要自动发送消息,比如协议到期了,需要自动发送消息去提醒用户协议到期了。
基于以上的需求,HZERO提供的消息发送组件,能通过配置及简单的代码实现消息发送的功能,从而满足我们的需求。
组件概述
消息服务支持短信、邮箱、站内消息、企业微信等消息发送,并能够灵活管理消息模板和对接云平台支持的微服务。
组件坐标
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-message-saas</artifactId>
</dependency>
组件架构图
站内消息发送快速入门
下面以一个简单的站内消息发送配置及开发例子,带您快速入门。
短信插件
消息服务的短信服务需要依赖插件,否则短信无法发送。
可添加的插件有阿里云、百度云、腾讯云三种。
-
阿里云
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-sms-aliyun</artifactId>
</dependency>
-
百度云
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-sms-baidu</artifactId>
</dependency>
-
腾讯云
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-sms-qcloud</artifactId>
</dependency>
消息模板
消息模板用于定义及管理消息发送使用的消息模板,便于用户直接使用模板发送不同类型的消息。
路径:消息管理->消息模板
消息发送配置
通过配置及管理关联消息发送,关联模板和发送服务器。关联成功后可测试发送消息
路径:消息管理->消息发送配置
消息接收配置
配置用户接收消息的默认形式,用户可在个人中心的接收配置选择具体的接收形式。
接收者配置
动态选择消息接收的用户或用户群体。
代码调用
@Service
public class MessageServiceImpl implements MessageService {
private final MessageClient messageClient;
@Autowired
public MessageServiceImpl(MessageClient messageClient) {
this.messageClient = messageClient;
}
@Override
public void sendWebMessage() {
long tenantId = 0L;
String messageTemplateCode = "HWFP.REMIND";
String lang = "zh_CN";
Receiver receiver = new Receiver().setUserId(1L).setTargetUserTenantId(0L);
Map<String, String> args = new HashMap<>(16);
args.put("processName", "测试消息");
args.put("processDescription", "测试消息");
// 同步发送站内消息
messageClient.sendWebMessage(tenantId, messageTemplateCode, lang, Collections.singletonList(receiver), args);
// 异步发送站内消息
messageClient.async().sendWebMessage(tenantId, messageTemplateCode, lang, Collections.singletonList(receiver), args);
}
}
常用API调用参考
发送短信
@Service
public class MessageServiceImpl implements MessageService {
private final MessageClient messageClient;
@Autowired
public MessageServiceImpl(MessageClient messageClient) {
this.messageClient = messageClient;
}
@Override
public void sendSms() {
long tenantId = 0L;
String serverCode = "HZERO";
String messageTemplateCode = "HIAM.CAPTCHA";
Receiver receiver = new Receiver().setIdd("+86").setPhone("18866886688");
Map<String, String> args = new HashMap<>(16);
args.put("captcha", "123456");
// 同步发送站内消息
messageClient.sendSms(tenantId, serverCode, messageTemplateCode, Collections.singletonList(receiver), args);
// 异步发送站内消息
messageClient.async().sendSms(tenantId, serverCode, messageTemplateCode, Collections.singletonList(receiver), args);
}
}
发送邮件
@Service
public class MessageServiceImpl implements MessageService {
private final MessageClient messageClient;
@Autowired
public MessageServiceImpl(MessageClient messageClient) {
this.messageClient = messageClient;
}
@Override
public void sendEmail() {
long tenantId = 0L;
String serverCode = "HZERO";
String messageTemplateCode = "HWFP.REMIND";
Receiver receiver = new Receiver().setEmail("[email protected]");
Map<String, String> args = new HashMap<>(16);
args.put("processName", "测试消息");
args.put("processDescription", "测试消息");
// 同步发送站内消息
messageClient.sendEmail(tenantId, serverCode, messageTemplateCode, Collections.singletonList(receiver), args);
// 异步发送站内消息
messageClient.async().sendEmail(tenantId, serverCode, messageTemplateCode, Collections.singletonList(receiver), args);
}
}
总之,消息管理组件是项目上常用的一个组件,通过它我们能够简单配置实现以下功能:
消息发送的功能;
消息监控功能,监控消息的发送成功和失败;
失败消息的重试;
消息模自定义,通过程序拓展,实现动态显示的效果。
联系我们
产品试用请登录开放平台。请在 PC 端打开:
https://open.hand-china.com/market-home/trial-center/
产品详情请登录开放平台:
https://open.hand-china.com/document-center/
如有疑问登录开放平台提单反馈:
▲ 更多精彩内容,扫码关注 “四海汉得” 公众号