[Ferramentas] Spring Boot integra Alibaba Cloud SMS-SMS

Serviço de mensagens curtas-SMS

O Short Message Service (Serviço de Mensagens Curtas) é a capacidade de comunicação preferencial para os clientes corporativos alcançarem rapidamente os usuários de telefones celulares, dividido em serviço de SMS doméstico e serviço de SMS internacional/Hong Kong, Macau e Taiwan. Ligue para o recurso de envio de SMS por meio de API/SDK e console e envie as informações especificadas para números de celular domésticos ou estrangeiros.

Cenário de Aplicação

  • Código de verificação

Envie uma mensagem de texto contendo um código de verificação para o número do celular e ofereça suporte à personalização de mensagens de texto personalizadas por meio da substituição de variáveis.

Geralmente é usado para registro de contas de APPs e sites; lembretes de segurança ao fazer login em contas e logins remotos; verificação de segurança ao recuperar senhas; autenticação de pagamento, verificação de identidade, vinculação de telefone celular, login rápido e outros cenários.

  • notificação por SMS

Envie mensagens de texto de notificação para números de celular e ofereça suporte à personalização de mensagens de texto personalizadas por meio da substituição de variáveis.

Geralmente é usado para fornecer informações relacionadas ao sistema para usuários registrados, incluindo mensagens de notificação comuns, como atualizações ou manutenção, ativação de serviço, ajustes de preços, confirmações de pedidos, atualizações de logística, confirmações de consumo e notificações de pagamento.

  • SMS de promoção

Envie uma mensagem de texto contendo informações promocionais para um número de celular. O conteúdo da mensagem de texto é o conteúdo do modelo revisado. Não oferece suporte à personalização de mensagens de texto personalizadas por meio de substituição de variável.

Geralmente é usado para enviar notificações e informações promocionais para usuários registrados e clientes em potencial, incluindo notificações de atividades promocionais, promoções de negócios, anúncios de novos produtos, atendimento ao membro e outras informações promocionais de produtos e atividades, o que pode aumentar a exposição de produtos corporativos e melhorar a popularidade de produtos e empresas.

  • SMS digital

Envie uma mensagem curta incluindo texto, imagem, áudio e vídeo para o número do celular, e o conteúdo da mensagem curta é o conteúdo do modelo revisado.

Geralmente é usado para a promoção de membros do cinema e da televisão, a introdução de atrações turísticas, a promoção do comércio eletrônico ao vivo e a introdução e promoção de vários produtos de consumo. A exibição vívida e intuitiva pode efetivamente atrair usuários-alvo e ajudar as empresas obter maiores vantagens na competição de mercado.

Ative o serviço Alibaba Cloud SMS

Site oficial de Aliyun: www.aliyun.com/

Como usar o Java SDK do serviço SMS e exemplos

1. Entre no serviço Alibaba Cloud SMS

image-20230416140310825

2. Clique para abrir gratuitamente

image-20230416140919885

image-20230416141001913

3. Número de telefone celular de teste vinculativo

image-20230416141352354

4. API de chamada de teste para enviar SMS

Encontre e chame a API para enviar mensagens de texto

Lembre-se de colocar algum dinheiro nele, 1 yuan pode ser usado por muito tempo e uma mensagem de texto custa alguns centavos.验证码 (0.045元/条);通知短信 (0.045元/条)

image-20230416141534706

SpringBoot integra Alibaba Cloud SMS

Endereço de demonstração: mingyue-springboot-aliyun-sms

1. Adicione dependências

<!--  阿里云短信依赖  -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.16</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>2.1.0</version>
</dependency>
复制代码

2. Modifique o arquivo de configuração

aliyun:
  sms:
    sms-access-key-id: xxx
    sms-access-key-secret: xxx
    sms-endpoint: dysmsapi.aliyuncs.com
    sms-template-code: SMS_154950909
    sms-sign-name: 阿里云短信测试
复制代码

3.编写短信推送服务

import cn.hutool.json.JSONUtil;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import java.util.Objects;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Service;

/**
 * 阿里云短信配置
 *
 * @author: Strive
 * @date: 2023/4/16 16:38
 */
@Slf4j
@Data
@Service
@ConfigurationProperties("aliyun.sms")
public class AliyunSmsService {

  private String smsAccessKeyId;
  private String smsAccessKeySecret;
  private String smsEndpoint;
  private String smsSignName;
  private String smsTemplateCode;

  /**
   * 使用 AK&ASK 初始化账号 Client
   *
   * @param accessKeyId
   * @param accessKeySecret
   * @return Client
   * @throws Exception 短信推送异常
   */
  public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint)
      throws Exception {
    Config config =
        new Config()
            // 必填,您的 AccessKey ID
            .setAccessKeyId(accessKeyId)
            // 必填,您的 AccessKey Secret
            .setAccessKeySecret(accessKeySecret);
    // 访问的域名
    config.endpoint = endpoint;
    return new com.aliyun.dysmsapi20170525.Client(config);
  }

  /**
   * 发送短信验证码
   *
   * @param phone 电话号码
   * @throws Exception 短信推送异常
   */
  public boolean sendCode(String phone, String code) throws Exception {
    // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS
    Client client = createClient(this.smsAccessKeyId, this.smsAccessKeySecret, this.smsEndpoint);
    SendSmsRequest sendSmsRequest =
        new SendSmsRequest()
            .setSignName(this.smsSignName)
            .setTemplateCode(this.smsTemplateCode)
            .setPhoneNumbers(phone)
            .setTemplateParam("{\"code\":\"" + code + "\"}");
    try {
      log.info("发送短信入参: " + JSONUtil.toJsonStr(sendSmsRequest));
      // 复制代码运行请自行打印 API 的返回值
      SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
      log.info("发送短信结果: " + JSONUtil.toJsonStr(sendSmsResponse));
      if (Objects.nonNull(sendSmsResponse) && sendSmsResponse.getBody().code.equals("OK")) {
        return Boolean.TRUE;
      }
    } catch (TeaException error) {
      // 如有需要,请打印 error
      log.error("短信推送异常结果: " + error.message);
      return Boolean.FALSE;
    } catch (Exception e) {
      TeaException error = new TeaException(e.getMessage(), e);
      // 如有需要,请打印 error
      com.aliyun.teautil.Common.assertAsString(error.message);
      log.error("短信推送异常结果: " + error.message);
      return Boolean.FALSE;
    }

    return Boolean.FALSE;
  }
}
复制代码

4.编写短信推送接口


/**
 * 短信推送接口
 *
 * @author Strive
 * @date 2023/4/16 10:48
 */
@RestController
@RequestMapping("/sms")
@RequiredArgsConstructor
public class SmsController {

  private final AliyunSmsService smsService;

  @GetMapping("/send")
  public ResponseEntity<Boolean> send(String phone) throws Exception {
    return ResponseEntity.ok(smsService.sendCode(phone, RandomUtil.randomNumbers(4)));
  }
}
复制代码

测试发送短信

调用接口:http://127.0.0.1:8080/sms/send

Acho que você gosta

Origin juejin.im/post/7222575963564687416
Recomendado
Clasificación