[Herramientas] Spring Boot integra Alibaba Cloud SMS-SMS

Servicio de mensajes cortos-SMS

El servicio de mensajes cortos (Short Message Service) es la capacidad de comunicación preferida por los clientes corporativos para comunicarse rápidamente con los usuarios de teléfonos móviles. Se divide en servicio de SMS nacional y servicio de SMS internacional/de Hong Kong, Macao y Taiwán. Llame a la capacidad de envío de SMS a través de la API/SDK y la consola, y envíe la información especificada a números móviles nacionales o extranjeros.

Escenario de aplicación

  • código de verificación

Envíe un mensaje de texto que contenga un código de verificación al número de teléfono móvil y admita la personalización de mensajes de texto personalizados a través del reemplazo variable.

Por lo general, se usa para el registro de cuentas de aplicaciones y sitios web; recordatorios de seguridad al iniciar sesión en cuentas e inicios de sesión remotos; verificación de seguridad al recuperar contraseñas; autenticación de pagos, verificación de identidad, vinculación de teléfonos móviles, inicio de sesión rápido y otros escenarios.

  • notificación por mensaje de texto

Envíe mensajes de texto de notificación a números móviles y admita la personalización de mensajes de texto personalizados a través del reemplazo variable.

Por lo general, se utiliza para entregar información relacionada con el sistema a los usuarios registrados, incluidos mensajes de notificación comunes, como actualizaciones o mantenimiento, activación de servicios, ajustes de precios, confirmaciones de pedidos, actualizaciones de logística, confirmaciones de consumo y notificaciones de pago.

  • SMS de promoción

Envíe un mensaje de texto que contenga información promocional a un número de teléfono móvil. El contenido del mensaje de texto es el contenido de la plantilla revisada. No admite la personalización de mensajes de texto personalizados a través del reemplazo variable.

Por lo general, se usa para enviar notificaciones e información promocional a usuarios registrados y clientes potenciales, incluidas notificaciones de actividades promocionales, promociones comerciales, anuncios de nuevos productos, atención a los miembros y otra información promocional para productos y actividades, lo que puede aumentar la exposición de productos corporativos y mejorar la popularidad de productos y empresas.

  • SMS digitales

Envíe un mensaje corto que incluya texto, imagen, audio y video al número de teléfono móvil, y el contenido del mensaje corto será el contenido de la plantilla revisada.

Por lo general, se utiliza para la promoción de miembros de cine y televisión, la presentación de atracciones turísticas, la promoción del comercio electrónico en vivo y la presentación y promoción de diversos productos de consumo.La pantalla vívida e intuitiva puede atraer efectivamente a los usuarios objetivo y ayudar a las empresas. obtener mayores ventajas en la competencia del mercado.

Activar el servicio de SMS en la nube de Alibaba

Sitio web oficial de Aliyun: www.aliyun.com/

Cómo usar el SDK de Java del servicio de SMS y ejemplos

1. Ingrese al servicio de SMS en la nube de Alibaba

image-20230416140310825

2. Haga clic para abrir gratis

image-20230416140919885

image-20230416141001913

3. Número de teléfono móvil de prueba vinculante

image-20230416141352354

4. API de llamada de prueba para enviar SMS

Encuentra y llama a la API para enviar mensajes de texto

Recuerde poner algo de dinero en él, 1 yuan se puede usar durante mucho tiempo y un mensaje de texto cuesta unos centavos.验证码 (0.045元/条);通知短信 (0.045元/条)

image-20230416141534706

SpringBoot integra Alibaba Cloud SMS

Dirección de demostración: mingyue-springboot-aliyun-sms

1. Agregar dependencias

<!--  阿里云短信依赖  -->
<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. Modificar el archivo de configuración

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

Supongo que te gusta

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