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
doc
itmei-sms.sql
ディレクトリにはすぐに使用できるファイルがあり、SQL をインポートするためのライブラリを作成します。
- SMS サービス プロバイダーの構成情報を変更するには
resources
、SmsParamsConfig.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 サービス プロバイダーの列挙に追加します。SmsInterface
sendSms
getDepartmentTemplateParam
sendSms
SmsSupplierEnum
私が書いた 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 が正常に送信され、データベースに保存されます。