com.tencentcloudapi.sms.v20190711.models.SendSmsResponse Java Examples

The following examples show how to use com.tencentcloudapi.sms.v20190711.models.SendSmsResponse. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TencentSendMessageFactory.java    From MicroCommunity with Apache License 2.0 5 votes vote down vote up
public static void sendMessage(String tel, String code) {

        //开始发送验证码
        logger.debug("发送号码为{},短信码为{}", tel, code);
//        String url = "https://sms.tencentcloudapi.com/?Action=SendSms" +
//                "&PhoneNumberSet.0=+86" + tel +
//                "&TemplateID=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "TemplateID") +
//                "&Sign=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "Sign") +
//                "&TemplateParamSet.0=" + code +
//                "&SmsSdkAppid=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "SmsSdkAppid") +
//                "&Version=2019-07-11";
//        ResponseEntity<String> responseEntity = getRestTemplate().getForEntity(url, String.class);

        // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,见《创建secretId和secretKey》小节
        Credential cred = new Credential(MappingCache.getValue(TENCENT_SMS_DOMAIN, "secretId"),
                MappingCache.getValue(TENCENT_SMS_DOMAIN, "secretKey"));
        // 实例化要请求产品(以cvm为例)的client对象
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setSignMethod(ClientProfile.SIGN_TC3_256);
        SmsClient smsClient = new SmsClient(cred, MappingCache.getValue(TENCENT_SMS_DOMAIN, "region"));//第二个ap-chongqing 填产品所在的区
        SendSmsRequest sendSmsRequest = new SendSmsRequest();
        sendSmsRequest.setSmsSdkAppid(MappingCache.getValue(TENCENT_SMS_DOMAIN, "SmsSdkAppid"));//appId ,见《创建应用》小节
        String[] phones = {"+86" + tel};  //发送短信的目标手机号,可填多个。
        sendSmsRequest.setPhoneNumberSet(phones);
        sendSmsRequest.setTemplateID(MappingCache.getValue(TENCENT_SMS_DOMAIN, "TemplateID"));  //模版id,见《创建短信签名和模版》小节
        String[] templateParam = {code};//模版参数,从前往后对应的是模版的{1}、{2}等,见《创建短信签名和模版》小节
        sendSmsRequest.setTemplateParamSet(templateParam);
        sendSmsRequest.setSign(MappingCache.getValue(TENCENT_SMS_DOMAIN, "Sign")); //签名内容,不是填签名id,见《创建短信签名和模版》小节
        SendSmsResponse sendSmsResponse = null;
        try {
            sendSmsResponse = smsClient.SendSms(sendSmsRequest); //发送短信
        } catch (TencentCloudSDKException e) {
            logger.error("发送短信失败", e);
        }

        logger.debug("腾讯短信验证码发送,请求报文" + JSONObject.toJSONString(sendSmsRequest) + ",返回日志" + (sendSmsResponse != null ? sendSmsResponse.toString() : ""));


    }
 
Example #2
Source File: SendSms.java    From tencentcloud-sdk-java with Apache License 2.0 4 votes vote down vote up
public static void main( String[] args )
{
    try {
        /* 必要步骤:
         * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
         * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
         * 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
         * 以免泄露密钥对危及你的财产安全。
         * CAM密匙查询: https://console.cloud.tencent.com/cam/capi*/
        Credential cred = new Credential("secretId", "secretKey");

        // 实例化一个http选项,可选,没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        // 设置代理
        httpProfile.setProxyHost("host");
        httpProfile.setProxyPort(port);
        /* SDK默认使用POST方法。
         * 如果你一定要使用GET方法,可以在这里设置。GET方法无法处理一些较大的请求 */
        httpProfile.setReqMethod("POST");
        /* SDK有默认的超时时间,非必要请不要进行调整
         * 如有需要请在代码中查阅以获取最新的默认值 */
        httpProfile.setConnTimeout(60);
        /* SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务
         * 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com */
        httpProfile.setEndpoint("sms.tencentcloudapi.com");

        /* 非必要步骤:
         * 实例化一个客户端配置对象,可以指定超时时间等配置 */
        ClientProfile clientProfile = new ClientProfile();
        /* SDK默认用TC3-HMAC-SHA256进行签名
         * 非必要请不要修改这个字段 */
        clientProfile.setSignMethod("HmacSHA256");
        clientProfile.setHttpProfile(httpProfile);
        /* 实例化要请求产品(以sms为例)的client对象
         * 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量 */
        SmsClient client = new SmsClient(cred, "",clientProfile);
        /* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
         * 你可以直接查询SDK源码确定接口有哪些属性可以设置
         * 属性可能是基本类型,也可能引用了另一个数据结构
         * 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明 */
        SendSmsRequest req = new SendSmsRequest();

        /* 填充请求参数,这里request对象的成员变量即对应接口的入参
         * 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义
         * 基本类型的设置:
         * 帮助链接:
         * 短信控制台: https://console.cloud.tencent.com/sms/smslist
         * sms helper: https://cloud.tencent.com/document/product/382/3773 */

        /* 短信应用ID: 短信SdkAppid在 [短信控制台] 添加应用后生成的实际SdkAppid,示例如1400006666 */
        String appid = "1400009099";
        req.setSmsSdkAppid(appid);

        /* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 */
        String sign = "签名内容";
        req.setSign(sign);

        /* 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper] */
        String senderid = "xxx";
        req.setSenderId(senderid);

        /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回 */
        String session = "xxx";
        req.setSessionContext(session);

        /* 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper] */
        String extendcode = "xxx";
        req.setExtendCode(extendcode);

        /* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */
        String templateID = "400000";
        req.setTemplateID(templateID);

        /* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
         * 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/
        String[] phoneNumbers = {"+8621212313123", "+8612345678902", "+8612345678903"};
        req.setPhoneNumberSet(phoneNumbers);

        /* 模板参数: 若无模板参数,则设置为空*/
        String[] templateParams = {"5678"};
        req.setTemplateParamSet(templateParams);

        /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
         * 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */
        SendSmsResponse res = client.SendSms(req);

        // 输出json格式的字符串回包
        System.out.println(SendSmsResponse.toJsonString(res));

        // 也可以取出单个值,你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义
        System.out.println(res.getRequestId());

    } catch (TencentCloudSDKException e) {
        e.printStackTrace();
    }
}
 
Example #3
Source File: SmsOtpAuthnTencentCloud.java    From MaxKey with Apache License 2.0 4 votes vote down vote up
@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(), 
                        OptTypes.SMS);
                return true;
            }
           
        } catch  (Exception e) {
            logger.error(" produce code error ", e);
        }
    }
    return false;
}