Search in sources :

Example 1 with SendSmsResponse

use of com.tencentcloudapi.sms.v20210111.models.SendSmsResponse in project austin by ZhongFuCheng3y.

the class TencentSmsScript method assembleSmsRecord.

private List<SmsRecord> assembleSmsRecord(SmsParam smsParam, SendSmsResponse response, TencentSmsParam tencentSmsParam) {
    if (response == null || ArrayUtil.isEmpty(response.getSendStatusSet())) {
        return null;
    }
    List<SmsRecord> smsRecordList = new ArrayList<>();
    for (SendStatus sendStatus : response.getSendStatusSet()) {
        // 腾讯返回的电话号有前缀,这里取巧直接翻转获取手机号
        String phone = new StringBuilder(new StringBuilder(sendStatus.getPhoneNumber()).reverse().substring(0, PHONE_NUM)).reverse().toString();
        SmsRecord smsRecord = SmsRecord.builder().sendDate(Integer.valueOf(DateUtil.format(new Date(), DatePattern.PURE_DATE_PATTERN))).messageTemplateId(smsParam.getMessageTemplateId()).phone(Long.valueOf(phone)).supplierId(tencentSmsParam.getSupplierId()).supplierName(tencentSmsParam.getSupplierName()).msgContent(smsParam.getContent()).seriesId(sendStatus.getSerialNo()).chargingNum(Math.toIntExact(sendStatus.getFee())).status(SmsStatus.SEND_SUCCESS.getCode()).reportContent(sendStatus.getCode()).created(Math.toIntExact(DateUtil.currentSeconds())).updated(Math.toIntExact(DateUtil.currentSeconds())).build();
        smsRecordList.add(smsRecord);
    }
    return smsRecordList;
}
Also used : SmsRecord(com.java3y.austin.support.domain.SmsRecord) ArrayList(java.util.ArrayList) SendStatus(com.tencentcloudapi.sms.v20210111.models.SendStatus) Date(java.util.Date)

Example 2 with SendSmsResponse

use of com.tencentcloudapi.sms.v20210111.models.SendSmsResponse in project ballcat by ballcat-projects.

the class TencentSenderImpl method send.

@Override
public SmsSenderResult send(SmsSenderParams sp) {
    try {
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint(tencent.getEndpoint());
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        SmsClient client = new SmsClient(cred, tencent.getRegion(), clientProfile);
        Map<String, Object> json = new HashMap<>(5);
        json.put("PhoneNumberSet", sp.getPhoneNumbers());
        json.put("SmsSdkAppid", tencent.getSdkId());
        if (tencent.getTemplateId() != null) {
            json.put("TemplateID", tencent.getTemplateId());
        }
        if (StrUtil.isNotEmpty(tencent.getSign())) {
            json.put("Sign", tencent.getSign());
        }
        if (!sp.getTemplateParam().isEmpty()) {
            json.put("TemplateParamSet", sp.getTemplateParam());
        }
        SendSmsRequest req = SendSmsRequest.fromJsonString(om.writeValueAsString(json), SendSmsRequest.class);
        SendSmsResponse resp = client.SendSms(req);
        return SmsSenderResult.generate(SendSmsRequest.toJsonString(resp), sp.toString(), sp.getPhoneNumbers());
    } catch (TencentCloudSDKException | JsonProcessingException e) {
        return errRet(TypeEnum.TENCENT, sp.getPhoneNumbers(), "腾讯云平台发送短信出现异常!", e);
    }
}
Also used : SmsClient(com.tencentcloudapi.sms.v20190711.SmsClient) TencentCloudSDKException(com.tencentcloudapi.common.exception.TencentCloudSDKException) ClientProfile(com.tencentcloudapi.common.profile.ClientProfile) HashMap(java.util.HashMap) HttpProfile(com.tencentcloudapi.common.profile.HttpProfile) SendSmsRequest(com.tencentcloudapi.sms.v20190711.models.SendSmsRequest) SendSmsResponse(com.tencentcloudapi.sms.v20190711.models.SendSmsResponse) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 3 with SendSmsResponse

use of com.tencentcloudapi.sms.v20210111.models.SendSmsResponse in project longmarch by yuyueqty.

the class MsgUtil method sendSms.

public static List<MessageResultInfoVO> sendSms(String code, String[] phoneNumber, MsgConf conf) {
    List<MessageResultInfoVO> messageResultInfoVOList = new ArrayList<>();
    /* * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey */
    // 密钥对在腾讯云搜索即可找到
    Credential cred = new Credential(conf.getSecretId(), conf.getSecretKey());
    // 实例化一个http选项,可选,没有特殊需求可以跳过
    HttpProfile httpProfile = new HttpProfile();
    /* SDK默认使用POST方法。
         * 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求 */
    httpProfile.setReqMethod("POST");
    /* SDK有默认的超时时间,非必要请不要进行调整*/
    httpProfile.setConnTimeout(60);
    /* SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务
         * 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tendentious.com */
    httpProfile.setEndpoint(conf.getDomain());
    /* 非必要步骤:
         * 实例化一个客户端配置对象,可以指定超时时间等配置 */
    ClientProfile clientProfile = new ClientProfile();
    /* SDK默认用TC3-HMAC-SHA256进行签名
         * 非必要请不要修改这个字段 */
    clientProfile.setSignMethod("HmacSHA256");
    clientProfile.setHttpProfile(httpProfile);
    /* 实例化要请求产品(以sms为例)的client对象
         * 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量 */
    SmsClient client = new SmsClient(cred, conf.getRegionId(), clientProfile);
    /* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数 */
    SendSmsRequest req = new SendSmsRequest();
    /* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666 */
    req.setSmsSdkAppId(conf.getSdkAppId());
    /* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 */
    req.setSignName(conf.getSignName());
    /* 国际/港澳台短信 SenderId: 国内短信填空,默认未开通,如需开通请联系 [sms helper] */
    req.setSenderId("");
    /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回  这个参数需要带上*/
    req.setSessionContext("");
    /* 短信号码扩展号: 默认未开通,如需开通请联系 [sms helper]*/
    req.setExtendCode("");
    /* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */
    req.setTemplateId(conf.getTemplateCode());
    /* 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
         * 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号 */
    req.setPhoneNumberSet(phoneNumber);
    /* 模板参数: 若无模板参数,则设置为空 */
    String[] templateParamSet = { code, conf.getExpireMinute() };
    System.out.println(code);
    req.setTemplateParamSet(templateParamSet);
    /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
         * 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */
    try {
        messageResultInfoVOList = MessageResultInfoVO.build(client.SendSms(req));
    } catch (TencentCloudSDKException e) {
        e.printStackTrace();
    }
    return messageResultInfoVOList;
}
Also used : SmsClient(com.tencentcloudapi.sms.v20210111.SmsClient) Credential(com.tencentcloudapi.common.Credential) TencentCloudSDKException(com.tencentcloudapi.common.exception.TencentCloudSDKException) ClientProfile(com.tencentcloudapi.common.profile.ClientProfile) HttpProfile(com.tencentcloudapi.common.profile.HttpProfile) ArrayList(java.util.ArrayList) SendSmsRequest(com.tencentcloudapi.sms.v20210111.models.SendSmsRequest)

Example 4 with SendSmsResponse

use of com.tencentcloudapi.sms.v20210111.models.SendSmsResponse in project cloud-sdk by mizhousoft.

the class AliyunSendSmsClient method send.

/**
 * {@inheritDoc}
 */
@Override
public void send(String phoneNumber, Map<String, String> paramMap, CloudSmsTemplate smsTemplate) throws CloudSDKException {
    if (null == smsTemplate) {
        throw new CloudSDKException("Sms template is null.");
    }
    String signName = smsTemplate.getSignName();
    String templateId = smsTemplate.getTemplateId().toString();
    SendSmsRequest request = new SendSmsRequest();
    request.setPhoneNumbers(phoneNumber);
    request.setSignName(signName);
    request.setTemplateCode(templateId);
    try {
        if (null != paramMap) {
            String templateParam = JSONUtils.toJSONString(paramMap);
            request.setTemplateParam(templateParam);
        }
        SendSmsResponse result = this.client.sendSms(request);
        SendSmsResponseBody body = result.getBody();
        if (null == body || !"ok".equalsIgnoreCase(body.getCode())) {
            throw new CloudSDKException("Send sms failed, code is " + body.code + ", message is " + body.getMessage() + ", request id is " + body.getRequestId() + ", bizId is " + body.getBizId() + '.');
        }
    } catch (Exception e) {
        throw new CloudSDKException("Send sms failed.", e);
    }
}
Also used : CloudSDKException(com.mizhousoft.cloudsdk.CloudSDKException) SendSmsRequest(com.aliyun.dysmsapi20170525.models.SendSmsRequest) SendSmsResponseBody(com.aliyun.dysmsapi20170525.models.SendSmsResponseBody) SendSmsResponse(com.aliyun.dysmsapi20170525.models.SendSmsResponse) CloudSDKException(com.mizhousoft.cloudsdk.CloudSDKException)

Example 5 with SendSmsResponse

use of com.tencentcloudapi.sms.v20210111.models.SendSmsResponse in project MaxKey by dromara.

the class SmsOtpAuthnTencentCloud method produce.

@Override
public boolean produce(UserInfo userInfo) {
    // 手机号
    String mobile = userInfo.getMobile();
    if (mobile != null && !mobile.equals("")) {
        try {
            Credential cred = new Credential(secretId, secretKey);
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("sms.tencentcloudapi.com");
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);
            String token = this.genToken(userInfo);
            String params = "{\"PhoneNumberSet\":[\"" + mobile + "\"]," + "\"TemplateID\":\"" + templateId + "\",\"Sign\":\"" + sign + "\"," + "\"TemplateParamSet\":[\"" + token + "\",\"" + this.interval + "\"]," + "\"SmsSdkAppid\":\"" + smsSdkAppid + "\"}";
            SendSmsRequest req = SendSmsRequest.fromJsonString(params, SendSmsRequest.class);
            SendSmsResponse resp = client.SendSms(req);
            logger.debug("responseString " + SendSmsRequest.toJsonString(resp));
            if (resp.getSendStatusSet()[0].getCode().equalsIgnoreCase("Ok")) {
                this.optTokenStore.store(userInfo, token, userInfo.getMobile(), OtpTypes.SMS);
                return true;
            }
        } catch (Exception e) {
            logger.error(" produce code error ", e);
        }
    }
    return false;
}
Also used : SmsClient(com.tencentcloudapi.sms.v20190711.SmsClient) Credential(com.tencentcloudapi.common.Credential) ClientProfile(com.tencentcloudapi.common.profile.ClientProfile) HttpProfile(com.tencentcloudapi.common.profile.HttpProfile) SendSmsRequest(com.tencentcloudapi.sms.v20190711.models.SendSmsRequest) SendSmsResponse(com.tencentcloudapi.sms.v20190711.models.SendSmsResponse)

Aggregations

SendSmsRequest (com.aliyun.dysmsapi20170525.models.SendSmsRequest)4 SendSmsResponse (com.aliyun.dysmsapi20170525.models.SendSmsResponse)4 Credential (com.tencentcloudapi.common.Credential)4 ClientProfile (com.tencentcloudapi.common.profile.ClientProfile)4 HttpProfile (com.tencentcloudapi.common.profile.HttpProfile)4 TencentCloudSDKException (com.tencentcloudapi.common.exception.TencentCloudSDKException)3 SmsClient (com.tencentcloudapi.sms.v20190711.SmsClient)3 SendSmsRequest (com.tencentcloudapi.sms.v20190711.models.SendSmsRequest)3 SendSmsResponse (com.tencentcloudapi.sms.v20190711.models.SendSmsResponse)3 SmsClient (com.tencentcloudapi.sms.v20210111.SmsClient)3 SendSmsRequest (com.tencentcloudapi.sms.v20210111.models.SendSmsRequest)3 Client (com.aliyun.dysmsapi20170525.Client)2 SendSmsResponseBody (com.aliyun.dysmsapi20170525.models.SendSmsResponseBody)2 SendSmsResponse (com.tencentcloudapi.sms.v20210111.models.SendSmsResponse)2 ArrayList (java.util.ArrayList)2 SneakyThrows (lombok.SneakyThrows)2 CollUtil (cn.hutool.core.collection.CollUtil)1 ArrayUtil (cn.hutool.core.util.ArrayUtil)1 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 TencentSmsParam (com.java3y.austin.handler.domain.TencentSmsParam)1