java短信服务类(腾讯云)

本文属于个人笔记:

设置常量 SMSContentUtil中常量皆由腾讯云中申请


服务类代码

package com.util;

import com.github.qcloudsms.*;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;

import java.io.IOException;

/**
 * 短信服务类
 * 2018-05-16
 */
public  class SMSService {

    /**
     * 自定义短信内容发送
     * @param msg 短信内容
     * @param number 用户手机号
     * @return OK 成功  null 失败
     */
    public static String sendMess(String msg , String number){
        try {
            SmsSingleSender ssender = new SmsSingleSender(SMSContentUtil.APPID, SMSContentUtil.APPKEY);
            SmsSingleSenderResult result = ssender.send(0, "86", number,
                    msg, "", "");
            System.out.print(result);
            return result.errMsg;
        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 指定模板ID发送短信
     * @param number 用户手机号
     * @return OK 成功  null 失败
     */
    public static String sendMesModel(String number){
        try {
            String[] params = {"hello" , "1" };//{参数}
            SmsSingleSender ssender = new SmsSingleSender(SMSContentUtil.APPID, SMSContentUtil.APPKEY);
            SmsSingleSenderResult result = ssender.sendWithParam("86", number,
                    SMSContentUtil.TTEMPLATEID, params, SMSContentUtil.SMSSIGN, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            System.out.print(result);
            return result.errMsg;//OK
        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 群发自定义短信
     * @param msg 短信内容
     * @param numbers 用户手机号数组
     * @return OK 成功 null 失败
     */
    public static String sendMesModel(String msg , String[] numbers){
        try {
            SmsMultiSender msender = new SmsMultiSender(SMSContentUtil.APPID, SMSContentUtil.APPKEY);
            SmsMultiSenderResult result =  msender.send(0, "86", numbers,
                    msg, "", "");
            System.out.print(result);
            return result.errMsg;
        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 指定模板ID群发
     * @param numbers 用户手机号数组
     * @return OK 成功 null 失败
     */
    public static String sendMesModel(String[] numbers){
        try {
            String[] params = {"hello" , "1" };
            SmsMultiSender msender = new SmsMultiSender(SMSContentUtil.APPID, SMSContentUtil.APPKEY);
            SmsMultiSenderResult result =  msender.sendWithParam("86", numbers,
                    SMSContentUtil.TTEMPLATEID, params, SMSContentUtil.SMSSIGN, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            System.out.print(result);
            return result.errMsg;
        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 发送语音消息
     * @param number 用户手机号
     * @param msg 语音消息内容
     * @return OK 成功 null 失败
     */
    public static String sendMesVoice(String msg , String number){
        try {
            SmsVoiceVerifyCodeSender vvcsender = new SmsVoiceVerifyCodeSender(SMSContentUtil.APPID, SMSContentUtil.APPKEY);
            SmsVoiceVerifyCodeSenderResult result = vvcsender.send("86",number,
                    msg, 2, "");
            System.out.print(result);
            return result.errMsg;
        } catch (HTTPException e) {
            // HTTP响应码错误
            e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            e.printStackTrace();
        } catch (IOException e) {
            // 网络IO错误
            e.printStackTrace();
        }
        return null;
    }

}
//以上代码本人均测试过,可直接使用


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要接收腾讯云短信的回复信息,你需要使用短信回调功能。具体操作步骤如下: 1. 在腾讯云短信控制台中,开启短信回调功能,并设置回调地址。 2. 在你的 Java 项目中,使用 HTTP 协议监听回调地址,接收回调信息。 3. 对接收到的回调信息进行解析,提取出所需的信息。 4. 根据解析出来的信息,进行相应的业务逻辑处理。 需要注意的是,腾讯云短信回调的信息格式是 JSON 格式,需要使用 JSON 解析库进行解析。同时,为了保证接收回调信息的安全性,建议使用 HTTPS 协议进行监听。 以下是一个简单的 Java 示例代码,用于接收腾讯云短信的回调信息: ```java import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class TencentSmsCallbackController { @PostMapping("/sms/callback") public void receiveSmsCallback(@RequestBody String callbackData) { // 解析回调数据 JSONObject jsonObject = JSONObject.parseObject(callbackData); JSONArray messages = jsonObject.getJSONArray("Messages"); for (int i = 0; i < messages.size(); i++) { JSONObject message = messages.getJSONObject(i); String phoneNumber = message.getString("PhoneNumber"); String signName = message.getString("SignName"); String templateCode = message.getString("TemplateCode"); String content = message.getString("Content"); String sendTime = message.getString("SendTime"); // 处理业务逻辑 System.out.println("用户" + phoneNumber + "于" + sendTime + "回复了短信:" + content); } } } ``` 在这个接口中,我们使用了 Spring Web 框架,使用 `@PostMapping` 注解标注这个接口可以接收 POST 请求。接口的 URL 是 `/sms/callback`,你需要将这个 URL 配置到腾讯云短信的回调地址中。接口的参数是 `@RequestBody String callbackData`,用于接收回调数据。在接口中,我们可以对回调数据进行解析,提取出用户回复短信的内容和时间,并进行相应的业务逻辑处理。具体来说,我们解析回调数据中的 `Messages` 字段,遍历每个回复短信,提取出手机号、签名、模板编码、回复内容和回复时间,并进行相应的处理。 需要注意的是,这个接口只是一个简单的示例,具体的业务逻辑处理需要根据实际情况进行编写。同时,为了提高接口的安全性,建议对接口进行权限控制和参数校验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值