| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package jnpf.util.message;
- import com.tencentcloudapi.common.Credential;
- import com.tencentcloudapi.common.profile.ClientProfile;
- import com.tencentcloudapi.common.profile.HttpProfile;
- import com.tencentcloudapi.sms.v20210111.SmsClient;
- import com.tencentcloudapi.sms.v20210111.models.*;
- import jnpf.util.ParameterUtil;
- import lombok.extern.slf4j.Slf4j;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- /**
- * 腾讯云发送短信类
- *
- * @author JNPF
- * @版本: V3.2.0
- * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
- * @作者: JNPF开发平台组
- * @日期: 2021/4/21 11:58
- */
- @Slf4j
- public class SmsTenCentCloudUtil {
- /**
- * 创建客户端
- *
- * @param accessKeyId
- * @param accessKeySecret
- * @return
- */
- private static SmsClient createClient(String accessKeyId, String accessKeySecret, String endpoint, String region) {
- SmsClient smsClient = null;
- try {
- Credential cred = new Credential(accessKeyId, accessKeySecret);
- // 实例化一个http选项,可选的,没有特殊需求可以跳过
- HttpProfile httpProfile = new HttpProfile();
- httpProfile.setEndpoint(endpoint);
- // 实例化一个client选项,可选的,没有特殊需求可以跳过
- ClientProfile clientProfile = new ClientProfile();
- clientProfile.setHttpProfile(httpProfile);
- // 实例化要请求产品的client对象,clientProfile是可选的
- smsClient = new SmsClient(cred, region, clientProfile);
- } catch (Exception e) {
- log.error("创建客户端失败:" + e.getMessage());
- }
- return smsClient;
- }
- /**
- * 查询短信模板详情
- *
- * @param accessKeyId
- * @param accessKeySecret
- * @param templateId
- */
- public static List<String> querySmsTemplateRequest(String accessKeyId, String accessKeySecret, String endpoint, String region, String templateId) {
- try {
- SmsClient smsClient = createClient(accessKeyId, accessKeySecret, endpoint, region);
- // 实例化一个请求对象,每个接口都会对应一个request对象
- DescribeSmsTemplateListRequest req = new DescribeSmsTemplateListRequest();
- req.setTemplateIdSet(new Long[]{Long.valueOf(templateId)});
- req.setInternational(0L);
- // 返回的resp是一个DescribeSmsTemplateListResponse的实例,与请求对象对应
- DescribeSmsTemplateListResponse resp = smsClient.DescribeSmsTemplateList(req);
- // 输出json格式的字符串回包
- System.out.println(DescribeSmsTemplateListResponse.toJsonString(resp));
- DescribeTemplateListStatus[] describeTemplateStatusSet = resp.getDescribeTemplateStatusSet();
- for (DescribeTemplateListStatus describeTemplateListStatus : describeTemplateStatusSet) {
- String templateContent = describeTemplateListStatus.getTemplateContent();
- List<String> list = new ArrayList<>();
- ParameterUtil.parse("{", "}", templateContent, list);
- return list;
- }
- } catch (Exception e) {
- log.error("查询短信模板参数失败:" + e.getMessage());
- }
- return null;
- }
- /**
- * 查询短信模板详情
- *
- * @param accessKeyId
- * @param accessKeySecret
- * @param templateId
- */
- public static String querySmsTemplateContent(String accessKeyId, String accessKeySecret, String endpoint, String region, String templateId) {
- try {
- SmsClient smsClient = createClient(accessKeyId, accessKeySecret, endpoint, region);
- // 实例化一个请求对象,每个接口都会对应一个request对象
- DescribeSmsTemplateListRequest req = new DescribeSmsTemplateListRequest();
- req.setTemplateIdSet(new Long[]{Long.valueOf(templateId)});
- req.setInternational(0L);
- // 返回的resp是一个DescribeSmsTemplateListResponse的实例,与请求对象对应
- DescribeSmsTemplateListResponse resp = smsClient.DescribeSmsTemplateList(req);
- // 输出json格式的字符串回包
- System.out.println(DescribeSmsTemplateListResponse.toJsonString(resp));
- DescribeTemplateListStatus[] describeTemplateStatusSet = resp.getDescribeTemplateStatusSet();
- for (DescribeTemplateListStatus describeTemplateListStatus : describeTemplateStatusSet) {
- String templateContent = describeTemplateListStatus.getTemplateContent();
- return templateContent;
- }
- } catch (Exception e) {
- log.error("查询短信模板参数失败:" + e.getMessage());
- }
- return null;
- }
- /**
- * 发送短信
- *
- * @param accessKeyId
- * @param accessKeySecret
- * @param phoneNumbers
- * @param appId
- * @param signContent
- * @param templateId
- * @param map
- * @return
- */
- public static String sentSms(String accessKeyId, String accessKeySecret, String endpoint, String region, String phoneNumbers, String appId, String signContent, String templateId, Map<String, Object> map) {
- try {
- SmsClient client = createClient(accessKeyId, accessKeySecret, endpoint, region);
- // 实例化一个请求对象,每个接口都会对应一个request对象
- SendSmsRequest req = new SendSmsRequest();
- // 接收人
- String[] split = phoneNumbers.split(",");
- req.setPhoneNumberSet(split);
- // AppId
- req.setSmsSdkAppId(appId);
- // TemplateId
- req.setTemplateId(templateId);
- // SignName
- req.setSignName(signContent);
- // 参数
- List<String> list = new ArrayList<>();
- for (String key : map.keySet()) {
- String value = map.get(key) != null ? String.valueOf(map.get(key)) : "";
- list.add(value);
- }
- req.setTemplateParamSet(list.toArray(new String[list.size()]));
- // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
- SendSmsResponse resp = client.SendSms(req);
- // 判断是否发送成功
- SendStatus[] sendStatusSet = resp.getSendStatusSet();
- for (SendStatus sendStatus : sendStatusSet) {
- String code = sendStatus.getCode();
- if ("Ok".equalsIgnoreCase(code)) {
- return "Ok";
- } else {
- log.error("发送短信失败:" + sendStatus.getMessage());
- return "发送短信失败:" + sendStatus.getMessage();
- }
- }
- } catch (Exception e) {
- log.error("发送短信失败:" + e.getMessage());
- return "发送短信失败:" + e.getMessage();
- }
- return null;
- }
- }
|