告警通知增加短信接口

This commit is contained in:
SGK\17962 2025-07-06 17:57:02 +08:00
parent 9173b256fa
commit f9fa6f0c91
5 changed files with 104 additions and 0 deletions

View File

@ -0,0 +1,11 @@
package com.aizuda.snailjob.common.core.alarm.attribute;
import lombok.Data;
import java.util.List;
@Data
public class SmsAttribute {
private List<String> phoneNumbers; // 接收短信的手机号列表
}

View File

@ -0,0 +1,17 @@
package com.aizuda.snailjob.common.core.alarm.sms;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "snailjob.sms")
@Data
public class SnailJobSmsProperties {
private boolean enabled;
private String accountSid;
private String authToken;
private String appId;
private String smsServerUrl;
}

View File

@ -0,0 +1,63 @@
package com.aizuda.snailjob.common.core.alarm.strategy;
import com.aizuda.snailjob.common.core.alarm.AlarmContext;
import com.aizuda.snailjob.common.core.alarm.attribute.SmsAttribute;
import com.aizuda.snailjob.common.core.alarm.sms.SnailJobSmsProperties;
import com.aizuda.snailjob.common.core.enums.AlarmTypeEnum;
import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.aizuda.snailjob.common.log.SnailJobLog;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@RequiredArgsConstructor
public class SmsAlarm extends AbstractAlarm<AlarmContext> {
private final SnailJobSmsProperties snailJobSmsProperties;
@Override
public Integer getAlarmType() {
return AlarmTypeEnum.SMS.getValue(); // 返回短信类型的值
}
@Override
public boolean syncSendMessage(AlarmContext alarmContext) {
if (!snailJobSmsProperties.isEnabled()) {
SnailJobLog.LOCAL.warn("短信功能未启用");
return false;
}
try {
String notifyAttribute = alarmContext.getNotifyAttribute();
SmsAttribute smsAttribute = JsonUtil.parseObject(notifyAttribute, SmsAttribute.class);
String message = alarmContext.getText();
// 示例调用第三方短信发送API
sendSms(smsAttribute.getPhoneNumbers(), message);
} catch (Exception e) {
SnailJobLog.LOCAL.error("发送短信失败:", e);
return false;
}
return true;
}
@Override
public boolean asyncSendMessage(List<AlarmContext> alarmContexts) {
for (AlarmContext context : alarmContexts) {
asyncSendMessage(context);
}
return Boolean.TRUE;
}
private void sendSms(List<String> phoneNumbers, String message) {
// 这里应使用具体的短信服务SDK或HTTP请求来发送短信
// 示例伪代码
for (String phoneNumber : phoneNumbers) {
// 实际发送逻辑
System.out.println("发送短信至 " + phoneNumber + ": " + message);
}
}
}

View File

@ -37,6 +37,12 @@ public enum AlarmTypeEnum {
* Webhook
*/
WEBHOOK(5),
/**
* 短信
*/
SMS(6),
;
private final int value;

View File

@ -95,6 +95,13 @@ snail-job:
log-storage: 7 # 日志保存时间(单位: day)
rpc-type: grpc
sms:
enabled: true
account-sid: your_account_sid
auth-token: your_auth_token
app-id: your_app_id
sms-server-url: https://api.twilio.com/2010-04-01/Accounts/{account_sid}/Messages.json
mail:
enabled: true
host: smtp.qq.com