[Outils] Spring Boot intègre Alibaba Cloud SMS-SMS

Service de messages courts-SMS

Le service de messages courts (Short Message Service) est la capacité de communication préférée des entreprises clientes pour atteindre rapidement les utilisateurs de téléphones mobiles. Il est divisé en service SMS national et service SMS international/Hong Kong, Macao et Taïwan. Appelez la capacité d'envoi de SMS via l'API/SDK et la console, et envoyez les informations spécifiées aux numéros mobiles nationaux ou étrangers.

Scénario d'application

  • le code de vérification

Envoyez un message texte contenant un code de vérification au numéro de téléphone mobile et prenez en charge la personnalisation du message texte personnalisé grâce au remplacement variable.

Il est généralement utilisé pour l'enregistrement de compte d'applications et de sites Web ; rappels de sécurité lors de la connexion à des comptes et des connexions à distance ; vérification de la sécurité lors de la récupération de mots de passe ; authentification de paiement, vérification d'identité, liaison de téléphone mobile, connexion rapide et autres scénarios.

  • Notification par SMS

Envoyez des messages texte de notification aux numéros mobiles et prenez en charge la personnalisation des messages texte personnalisés grâce au remplacement variable.

Il est généralement utilisé pour fournir des informations relatives au système aux utilisateurs enregistrés, y compris des messages de notification courants tels que les mises à niveau ou la maintenance, l'activation du service, les ajustements de prix, les confirmations de commande, les mises à jour logistiques, les confirmations de consommation et les notifications de paiement.

  • SMS promotionnels

Envoyez un message texte contenant des informations promotionnelles à un numéro de téléphone mobile. Le contenu du message texte est le contenu du modèle révisé. Il ne prend pas en charge la personnalisation des messages texte personnalisés via le remplacement variable.

Il est généralement utilisé pour envoyer des notifications et des informations promotionnelles aux utilisateurs enregistrés et aux clients potentiels, y compris les notifications d'activités promotionnelles, les promotions commerciales, les annonces de nouveaux produits, l'assistance aux membres et d'autres informations promotionnelles pour les produits et activités, ce qui peut augmenter l'exposition des produits de l'entreprise et améliorer la popularité des produits et des entreprises .

  • SMS numériques

Envoyez un court message comprenant du texte, une image, de l'audio et de la vidéo au numéro de téléphone mobile, et le contenu du message court est le contenu du modèle révisé.

Il est généralement utilisé pour la promotion des membres du cinéma et de la télévision, l'introduction d'attractions touristiques, la promotion du commerce électronique en direct et l'introduction et la promotion de divers produits de consommation.L'affichage vif et intuitif peut attirer efficacement les utilisateurs cibles et aider les entreprises obtenir de plus grands avantages dans la concurrence sur le marché.

Activer le service Alibaba Cloud SMS

Site officiel d'Aliyun : www.aliyun.com/

Comment utiliser le SDK Java du service SMS et des exemples

1. Entrez dans le service SMS d'Alibaba Cloud

image-20230416140310825

2. Cliquez pour ouvrir gratuitement

image-20230416140919885

image-20230416141001913

3. Numéro de téléphone portable de test contraignant

image-20230416141352354

4. Tester l'API d'appel pour envoyer des SMS

Trouver et appeler l'API pour envoyer des SMS

N'oubliez pas d'y mettre de l'argent, 1 yuan peut être utilisé pendant longtemps et un SMS coûte quelques centimes.验证码 (0.045元/条);通知短信 (0.045元/条)

image-20230416141534706

SpringBoot intègre Alibaba Cloud SMS

Adresse de démonstration : mingyue-springboot-aliyun-sms

1. Ajouter des dépendances

<!--  阿里云短信依赖  -->
<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. Modifier le fichier de configuration

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

Guess you like

Origin juejin.im/post/7222575963564687416