123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package cn.minbb.iot.service;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.github.qcloudsms.SmsMultiSender;
- import com.github.qcloudsms.SmsMultiSenderResult;
- import com.github.qcloudsms.SmsSingleSender;
- import com.github.qcloudsms.SmsSingleSenderResult;
- import com.github.qcloudsms.httpclient.HTTPException;
- import org.json.JSONException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.IOException;
- /**
- * 腾讯云短信服务
- */
- @Service
- public class SmsService {
- private static Logger logger = LoggerFactory.getLogger(SmsService.class);
- private final ObjectMapper objectMapper;
- // 短信应用SDK AppID
- private int appid = 1400220297;
- // 短信应用SDK AppKey
- private String appkey = "271645b0861c24747aa83e27085e022d";
- // 短信模板ID
- private int templateId = 350485;
- // 签名 NOTE: 签名需要在短信控制台中申请,签名参数使用的是`签名内容`,而不是`签名ID`
- private String smsSign = "王育民开发";
- @Autowired
- public SmsService(ObjectMapper objectMapper) {
- this.objectMapper = objectMapper;
- }
- /**
- * 指定模板 ID 单发短信
- *
- * @param phoneNumber
- * @param name
- * @param date
- * @param deviceName
- * @return
- */
- public boolean sendSingleSms(String phoneNumber, String name, String deviceName, String date) {
- boolean success = false;
- try {
- // 设备报警提醒:尊敬的用户{1}您好,您所绑定的设备{2}于{3}触发了报警装置,请您及时关注并检查设备状态。
- String[] params = {name, deviceName, date};
- SmsSingleSender sender = new SmsSingleSender(appid, appkey);
- SmsSingleSenderResult result = sender.sendWithParam("86", phoneNumber, templateId, params, smsSign, "", "");
- logger.info("发送短信 = {}", objectMapper.writeValueAsString(result));
- if (result != null) {
- success = true;
- }
- } catch (HTTPException | JSONException | IOException e) {
- // HTTP响应码错误 | JSON解析错误 | 网络IO错误
- logger.error("{} - {}", e.getCause(), e.getMessage());
- }
- return success;
- }
- /**
- * 指定模板 ID 群发短信
- *
- * @param phoneNumbers
- */
- public void sendMSms(String[] phoneNumbers) {
- try {
- String[] params = {"5678"};//数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
- SmsMultiSender sender = new SmsMultiSender(appid, appkey);
- SmsMultiSenderResult result = sender.sendWithParam("86", phoneNumbers, templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
- logger.info("提醒短信发送成功 = {}", objectMapper.writeValueAsString(result));
- } catch (HTTPException | JSONException | IOException e) {
- // HTTP响应码错误 | JSON解析错误 | 网络IO错误
- logger.error("{} - {}", e.getCause(), e.getMessage());
- }
- }
- }
|