Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mekanisme penghantaran SMS dan reka bentuk saluran mesej dalam kes sebenar dok PHP dan antara muka SMS Awan Alibaba

Mekanisme penghantaran SMS dan reka bentuk saluran mesej dalam kes sebenar dok PHP dan antara muka SMS Awan Alibaba

王林
王林asal
2023-07-05 14:06:072007semak imbas

Mekanisme penghantaran SMS dan reka bentuk saluran mesej dalam kes sebenar dok antara muka PHP dan Alibaba Cloud SMS

Ikhtisar:
Dalam era Internet hari ini, pemesejan teks telah menjadi bahagian penting dalam kehidupan orang ramai, dan fungsi menghantar mesej teks juga telah menjadi banyak Bahagian penting dalam pembangunan aplikasi. Artikel ini akan menggunakan bahasa PHP sebagai contoh untuk memperkenalkan cara melaksanakan mekanisme penghantaran SMS dan reka bentuk saluran mesej melalui antara muka SMS Awan Alibaba.

1. Pengenalan kepada Alibaba Cloud SMS Interface
Alibaba Cloud SMS Interface ialah satu set perkhidmatan penghantaran SMS yang disediakan oleh Alibaba Cloud sama ada kod pengesahan, SMS pemasaran atau SMS pemberitahuan, ia boleh dilaksanakan melalui antara muka ini. Menghantar mesej teks melalui antara muka ini bukan sahaja memenuhi keperluan sebenar, tetapi juga memastikan kebolehpercayaan tinggi mesej teks.

2. Reka bentuk mekanisme penghantaran SMS

  1. Daftar akaun Alibaba Cloud dan mohon perkhidmatan SMS
    Pertama, kita perlu mendaftar akaun Alibaba Cloud dan memohon perkhidmatan SMS. Apabila memohon perkhidmatan SMS, anda perlu memberikan beberapa maklumat yang diperlukan, seperti nama perniagaan, tandatangan, dsb. Selepas lulus semakan, Alibaba Cloud akan memberikan kami ID AccessKey dan Rahsia AccessKey Kedua-dua kunci ini adalah kelayakan kami untuk memanggil antara muka SMS.
  2. Pasang Alibaba Cloud SDK
    Menggunakan antara muka Alibaba Cloud SMS dalam projek PHP, kami boleh menggunakan Alibaba Cloud SDK untuk pembangunan. Pertama, kita perlu memasang Alibaba Cloud SDK dalam projek. Ia boleh dipasang melalui komposer. Perintahnya adalah seperti berikut:

    composer require alibabacloud/sdk
  3. Tulis kod penghantaran SMS
    Dalam projek PHP, kami boleh menghantar mesej SMS dengan menghubungi API yang disediakan oleh Alibaba Cloud SDK. Berikut ialah kod sampel ringkas Parameter khusus hendaklah diisi mengikut keperluan sebenar:
<?php
require 'vendor/autoload.php';

use AlibabaCloudClientAlibabaCloud;
use AlibabaCloudClientExceptionClientException;
use AlibabaCloudClientExceptionServerException;

AlibabaCloud::accessKeyClient('your-access-key-id', 'your-access-key-secret')
    ->regionId('cn-hangzhou')
    ->asDefaultClient();

try {
    $result = AlibabaCloud::rpcRequest()
                          ->product('Dysmsapi')
                          ->scheme('https')
                          ->version('2017-05-25')
                          ->action('SendSms')
                          ->method('POST')
                          ->options([
                                        'query' => [
                                            'PhoneNumbers' => '13000000000',
                                            'SignName'     => '阿里云',
                                            'TemplateCode' => 'SMS_0000001',
                                            'TemplateParam' => '{"code":"123456"}'
                                        ],
                                    ])
                          ->request();
    print_r($result->toArray());
} catch (ClientException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
}
?>

Dalam kod di atas, kami menggunakan kaedah rpcRequest() yang disediakan oleh AlibabaCloud SDK untuk menghantar mesej teks. Antaranya, kita perlu mengisi ID AccessKey, Rahsia AccessKey, tandatangan SMS Awan Alibaba, ID templat SMS, dan nombor telefon mudah alih untuk menerima mesej SMS.

3. Reka bentuk saluran mesej
Untuk mengurus status penghantaran SMS dan merekodkan log operasi berkaitan dengan lebih baik, kami boleh menyediakan saluran mesej untuk memproses hasil penghantaran SMS. Berikut ialah contoh reka bentuk saluran mesej ringkas:

  1. Buat jadual pangkalan data
    Pertama, kita perlu mencipta jadual pangkalan data untuk merekodkan keputusan dan maklumat berkaitan penghantaran SMS. Struktur jadual adalah seperti berikut:
CREATE TABLE `sms_logs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `phone_number` varchar(20) NOT NULL COMMENT '手机号码',
  `template_code` varchar(20) NOT NULL COMMENT '短信模板ID',
  `content` text NOT NULL COMMENT '短信内容',
  `result_code` varchar(20) NOT NULL COMMENT '发送结果编码',
  `result_msg` varchar(255) NOT NULL COMMENT '发送结果消息',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. Menulis kod untuk menghantar mesej teks
    Dalam kod untuk menghantar mesej teks, kita boleh menyimpan hasil penghantaran ke pangkalan data. Berikut ialah contoh:
// 发送短信并将结果保存到数据库中
$result = AlibabaCloud::rpcRequest()
                        ->product('Dysmsapi')
                        ->scheme('https')
                        ->version('2017-05-25')
                        ->action('SendSms')
                        ->method('POST')
                        ->options([
                                      'query' => [
                                          'PhoneNumbers' => '13000000000',
                                          'SignName'     => '阿里云',
                                          'TemplateCode' => 'SMS_0000001',
                                          'TemplateParam' => '{"code":"123456"}'
                                      ],
                                  ])
                        ->request();
                        
// 将发送结果保存到数据库中
if ($result['Code'] == 'OK') {
  // 发送成功
  $resultCode = 'success';
  $resultMsg = '短信发送成功';
} else {
  // 发送失败
  $resultCode = 'fail';
  $resultMsg = $result['Message'];
}

// 将发送结果保存到数据库
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'your_username', 'your_password');
$stmt = $pdo->prepare("INSERT INTO sms_logs (phone_number, template_code, content, result_code, result_msg) 
                      VALUES (:phone_number, :template_code, :content, :result_code, :result_msg)");
$stmt->execute([
    'phone_number'  => '13000000000',
    'template_code' => 'SMS_0000001',
    'content'       => '您的验证码是123456',
    'result_code'   => $resultCode,
    'result_msg'    => $resultMsg
]);

Melalui kod di atas, kami menyimpan mesej teks yang dihantar dan menghantar hasil ke dalam pangkalan data untuk memudahkan pertanyaan dan pengurusan seterusnya.

Kesimpulan:
Dengan menyambungkan PHP dengan antara muka SMS Cloud Alibaba, kami boleh melaksanakan fungsi menghantar mesej SMS dengan cepat dan boleh dipercayai. Pada masa yang sama, dengan mereka bentuk mekanisme penghantaran SMS dan saluran mesej dengan betul, kami boleh mengurus status penghantaran SMS dan merekodkan log operasi berkaitan dengan lebih baik, memberikan kami perkhidmatan SMS yang lebih baik. Saya harap artikel ini dapat membantu kerja pembangunan menggunakan antara muka PHP dan Alibaba Cloud SMS untuk menghantar mesej SMS.

Atas ialah kandungan terperinci Mekanisme penghantaran SMS dan reka bentuk saluran mesej dalam kes sebenar dok PHP dan antara muka SMS Awan Alibaba. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn