SMS マルチプラットフォーム ショート メッセージ サービス プロバイダー システム ~ 完全なアリ クラウド ショート メッセージ サービスの送信は自分で構成できます。

1. Maven をプロジェクトに導入する

アリユンの住所

さまざまなプログラミング言語に対応する SDK があります。必要なものをダウンロードしてください。

ここに画像の説明を挿入
maven座標をpom.xmlに追加

    <!--阿里云短信服务-->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-dysmsapi20170525</artifactId>
        <version>2.0.22</version>
    </dependency>

ここに画像の説明を挿入

2. 事業コード

次のコードは、SMS サービス プロバイダーが提供する送信コードを単純に使用して SMS の送信を完了しているのではなく、単純すぎるため、このような記事を読みたくないと思います。公式文書。一般的な SMS サービス プロバイダーの場合、Tencent Cloud、Alibaba Cloud などによって提供される SMS サービスです。


        この記事の更新が10日以上延期されており、更新する時間がありません. 業務コードとプロジェクトが完成し、giteeに載せました. その際に, ウェアハウスを公開します.プルダウンして対応するものに変更することもできます SMS送信システム。

プロジェクトの使用

以下は、プロジェクトがすぐに使用できるように構成する必要があるデータについて話し始めることです。

システム要件

  • JDK >= 1.8
  • MySQL >= 5.7
  • Maven >= 3.0

必要な構成

  • データベース接続を変更し、resourcesディレクトリを編集しますapplication-dev.yml
# 应用服务 WEB 访问端口
server:
  #应用的端口号
  port: 8080
  servlet:
    #应用的访问路径
    context-path: /

# DataSource Config
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/itmei-sms?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true
    username: root
    password: root
  • docitmei-sms.sqlディレクトリにはすぐに使用できるファイルがあり、SQL をインポートするためのライブラリを作成します。
    ここに画像の説明を挿入
  • SMS サービス プロバイダーの構成情報を変更するにはresourcesSmsParamsConfig.yml
## 配置短信
itmei-sms-config:
  #是否开启短信发送
  sms_send_or_not: true
  # 对接的短信服务商
  aliyun_sms:
    accessKeyId: xxx
    accessKeySecret: xxx
    signName: xxx
    #场景
    sms_scene:
      #场景类型
      appointment_success: xxx
      will_arrive_store: xxx
      send_it_the_night_before: xxx
      verification_code_sms: xxx
  # 腾讯云服务商
  tencent_sms:
    accessKeyId: #你自己的accessKeyId
    accessKeySecret: #你自己的accessKeySecret
    signName: #你自己的签名
    #场景
    sms_scene:
      #场景类型
      appointment_success: #你自己的短信模板
      will_arrive_store: #你自己的短信模板
      send_it_the_night_before: #你自己的短信模板
      verification_code_sms: #你自己的短信模板
      

注:
      接続されたサービス プロバイダーの名前はtencent_sms,aliyun_smsランダムではありません。各サービス プロバイダーはサービスに対応しており、このサービスはSmsInterfaceインターフェイスを実装する必要があります。

ここに画像の説明を挿入
完成した Aliyun SMS 実装クラス:

ここに画像の説明を挿入

列挙クラスの定義场景类型名称的keyを構成する必要性について。SmsSceneEnum

ここに画像の説明を挿入
SmsParamsConfig.yml構成データは JSONObject オブジェクトに変換されて使用される       ためです。このように、後続のコードでは、対応する構成を使用して、対応するサービス プロバイダーの特性を介して呼び出すことができます (下図を参照)。
ここに画像の説明を挿入

SmsSupplierConfigこのクラスは、定義した yml ファイルを取得し、データをオブジェクトMap<String, Object>に変換するために使用されますJSONObject

SMS サービス プロバイダー

完成した Alibaba Cloud SMS サービスを例にとると、
    サービス パッケージの下に対応する SMS 送信サービス クラスを作成し、インターフェイス書き換えメソッドとその中に送信メソッドをSmsAliyunServiceImpl実装する必要がある場合は、対応するサービス プロバイダーがサンプル コードを提供します。および対応する jar パッケージまたは maven 座標をシステムに導入し、サンプル コードをメソッドに記述し、サービス クラスに一意の識別子を作成して、それをSMS サービス プロバイダーの列挙に追加します。SmsInterfacesendSmsgetDepartmentTemplateParamsendSmsSmsSupplierEnum
ここに画像の説明を挿入

ここに画像の説明を挿入
私が書いた Alibaba Cloud のサンプル コードに従って、接続する SMS サービス プロバイダーを記述したら、必要なパラメーターを組み立ててメッセージを送信します。

SMS テストの送信

プロジェクトにテストクラスを導入し、SmsApplicationTestsクラスにテストを送るコードを書きました

    @Test
    void testSmsSend() {
    
    
        //配置需要使用的短信服务商信息等
        SmsTemplateConfig config = new SmsTemplateConfig();
        config.setSceneEnum(SmsSceneEnum.APPOINTMENT_SUCCESS.getCode());
        config.setSupplierEnum(SmsSupplierEnum.ALIYUN_SMS.getCode());
        config.setSourceEnum(SmsSendSourceEnum.PC.getCode());
        //自己短信模板的对应参数
        Map<String, Object> templateParam = new HashMap<>();
        templateParam.put("name", "itmei");
        templateParam.put("date_time", DateUtil.now());
        templateParam.put("address", "万达广场");
        templateParam.put("customer_phone", "19999999999");
        templateParam.put("landline", "wxid_itmei");
        config.setTemplateParam(templateParam);
        smsServiec.sendSms("19999999999", config, true);
    }

終了

SMS が正常に送信され、データベースに保存されます。
ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45502336/article/details/128844490