Rumah >pembangunan bahagian belakang >masalah PHP >php melaksanakan pemesejan teks automatik

php melaksanakan pemesejan teks automatik

PHPz
PHPzasal
2023-05-06 11:03:07824semak imbas

Dengan perkembangan Internet, pemesejan teks telah menjadi bahagian yang amat diperlukan dalam kehidupan kita. Dalam dunia perniagaan moden, pemesejan teks juga menjadi semakin penting kerana ia merupakan kaedah komunikasi yang pantas, mudah dan kos rendah yang membolehkan syarikat berkomunikasi dengan pelanggan dalam masa nyata. Walau bagaimanapun, apabila skala perusahaan secara beransur-ansur berkembang, menghantar mesej teks secara manual tidak lagi dapat memenuhi keperluan Oleh itu, fungsi menghantar mesej teks secara automatik telah menjadi lebih penting.

PHP ialah bahasa skrip sebelah pelayan yang popular yang sesuai untuk mengendalikan permintaan web. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menghantar mesej teks secara automatik.

Pertama sekali, kita perlu memahami beberapa prinsip asas dan proses menghantar mesej teks secara automatik. Dalam proses menghantar mesej SMS secara automatik, kami memerlukan tiga elemen asas berikut: Gerbang SMS, antara muka SMS dan kandungan SMS.

  1. Gerbang SMS

Dalam proses menghantar mesej teks secara automatik, get laluan SMS merupakan bahagian yang amat diperlukan. Gerbang SMS ialah perisian tengah yang menghubungkan penghantar dan penerima SMS. Ia melaksanakan penghantaran dan penerimaan mesej SMS. Apabila memilih gerbang SMS, kita harus memberi perhatian kepada faktor berikut: kelajuan penghantaran SMS, keserasian, harga, keselamatan dan kestabilan.

  1. Antara muka SMS

Antara muka SMS ialah antara muka komunikasi antara pelayan dan get laluan SMS. Ia bertanggungjawab untuk berkomunikasi antara arahan pada pelayan dan get laluan SMS, dan menghantar SMS kepada penerima yang betul. Antara muka SMS biasanya dibahagikan kepada dua kategori: antara muka HTTP dan antara muka SDK. Antara muka HTTP mempunyai kelebihan keserasian yang kuat, penggunaan mudah dan kestabilan yang tinggi, dan sesuai untuk senario perniagaan kecil antara muka SDK adalah lebih fleksibel, sangat selamat dan sesuai untuk senario perniagaan yang besar dan kompleks.

  1. Kandungan SMS

Kandungan SMS merujuk kepada mesej teks yang akan dihantar. Semasa menulis kandungan mesej teks, anda harus memberi perhatian kepada aspek berikut: Kandungan mesej teks yang baik harus dapat menarik perhatian pengguna dan menyampaikan maklumat yang betul dalam teks pendek.

Setelah memahami elemen asas, kita boleh mula menulis kod PHP untuk menghantar mesej teks secara automatik.

Pertama sekali, kita perlu memilih get laluan SMS dan antara muka SMS. Di sini kami mengambil perkhidmatan SMS Cloud Alibaba sebagai contoh dan melaksanakannya menggunakan antara muka HTTP perkhidmatan SMS Cloud Alibaba Langkah-langkah khusus adalah seperti berikut:

  1. Daftar akaun Alibaba Cloud, masukkan SMS. konsol perkhidmatan dan cipta Kunci Akses .
  2. Perkhidmatan SMS Awan Alibaba menyediakan satu set lengkap antara muka API Kita boleh merealisasikan fungsi menghantar mesej SMS secara automatik dengan menghubungi antara muka ini. Untuk butiran, sila rujuk dokumentasi API Perkhidmatan SMS Awan Alibaba.
  3. Tulis kod PHP untuk membuat panggilan. Kod khusus adalah seperti berikut:

// Pembolehubah berikut diperlukan, sila log masuk ke Alibaba Cloud untuk mendapatkan
$accessKeyId = "XXXXXXXXXXX";
$accessKeySecret = "XXXXXXXXXXXX";
$signName = "XXXXXXXXXXXX";
$templateCode = "XXXXXXXXXXX";

$phoneNumbers = "XXXXXXXXXXX"; // Nombor telefon mudah alih untuk menerima teks mesej
$templateParam = tatasusunan (

"code" => mt_rand(100000, 999999)  // 短信模板中的替换参数,这里使用PHP内置函数mt_rand()生成一个6位验证码</p>
<p>);</p>
<p>// Hantar antara muka SMS<br>fungsi sendSms($accessKeyId, $accessKeySecret, $phoneNumbers, $signName, $templateCode, $templateParam)<br> {</p>
<pre class="brush:php;toolbar:false">$params = array ();

// *** 需用户填写部分 ***
// fixme 必填: 短信接收号码
$params["PhoneNumbers"] = $phoneNumbers;
// fixme 必填: 短信签名-可在短信控制台中找到
$params["SignName"] = $signName;
// fixme 必填: 短信模板-可在短信控制台中找到
$params["TemplateCode"] = $templateCode;
// fixme 可选: 模板中的变量替换JSON串
if ($templateParam) {
    $params["TemplateParam"] = json_encode($templateParam);
}

// *** 需用户填写部分结束, 以下代码若无必要无需更改 ***
if (!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
    $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
}

// 初始化SignatureHelper实例用于设置参数,签名以及发送请求
$helper = new SignatureHelper();

try {
    $content = $helper->request(
                    $accessKeyId,
                    $accessKeySecret,
                    "dysmsapi.aliyuncs.com",
                    array_merge($params, array(
                        "RegionId" => "cn-hangzhou",
                        "Action" => "SendSms",
                        "Version" => "2017-05-25",
                    ))
                );
    return $content;
} catch (Exception $e) {
    return false;
}

}

//Kelas tandatangan
kelas SignatureHelper {

/**
 * 生成签名并发起请求
 *
 * @param string $accessKeyId
 *            您的Access Key ID
 * @param string $accessKeySecret
 *            您的Access Key Secret
 * @param string $domain
 *            API接口所在域名
 * @param array $params
 *            参数结构
 * @param string $method
 *            请求方式,GET或POST
 * @return bool|\mixed 服务器返回的数据,失败返回false
 */
public function request($accessKeyId, $accessKeySecret, $domain, $params, $method = 'POST')
{
    $apiParams = array ();
    foreach ($params as $key => $value) {
        $apiParams[$key] = $value;
    }

    // 添加公共请求参数
    $apiParams["SignatureMethod"] = "HMAC-SHA1";
    $apiParams["SignatureNonce"] = uniqid(mt_rand(0, 0xffff), true);
    $apiParams["SignatureVersion"] = "1.0";
    $apiParams["AccessKeyId"] = $accessKeyId;
    $apiParams["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
    $apiParams["Format"] = "JSON";

    // 计算签名并拼接请求参数
    ksort($apiParams);
    $canonicalizedQueryString = '';
    foreach ($apiParams as $key => $value) {
        $canonicalizedQueryString .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($value);
    }
    $stringToSign = $method . '&%2F&' . $this->percentEncode(substr($canonicalizedQueryString, 1));
    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));
    $apiParams["Signature"] = $signature;

    // 发送请求
    $url = 'http://' . $domain . '/?' . http_build_query($apiParams);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $content = curl_exec($ch);
    curl_close($ch);
    return $content;
}

/**
 * 生成规范化请求字符串
 *
 * @param array $params
 *            请求参数
 * @return string
 */
private function getCanonicalizedQueryString(array $params)
{
    ksort($params);

    $canonicalizedQueryString = '';
    foreach ($params as $key => $value) {
        $canonicalizedQueryString .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($value);
    }

    return substr($canonicalizedQueryString, 1);
}

/**
 * 生成规范化请求
 *
 * @param array $params
 *            请求参数
 * @return string
 */
private function getCanonicalizedHeaders(array $params)
{
    ksort($params);

    $canonicalizedHeaders = '';
    foreach ($params as $key => $value) {
        $canonicalizedHeaders .= $key . ':' . $value . "\n";
    }

    return $canonicalizedHeaders;
}

/**
 * 获取content-Md5值
 *
 * @param string $content
 *            请求内容
 * @return string
 */
private function getContentMd5($content)
{
    return base64_encode(md5($content, true));
}

/**
 * 特殊字符编码
 *
 * @param string $value
 *            需要编码的字符串
 * @return string
 */
private function percentEncode($value)
{
    $value = urlencode($value);
    $value = preg_replace('/\+/', '%20', $value);
    $value = preg_replace('/\*/', '%2A', $value);
    $value = preg_replace('/%7E/', '~', $value);

    return $value;
}

}

//Panggil hantar Antara muka SMS
$result = sendSms($accessKeyId, $accessKeySecret, $phoneNumbers, $signName, $templateCode, $templateParam);
jika ($result !== false) {

echo "验证码已发送成功";

} else {

echo "验证码发送失败";

}

Kod PHP di atas melaksanakan fungsi menghantar mesej teks menggunakan antara muka HTTP Perkhidmatan SMS Awan Alibaba. Kami boleh membuat pelarasan dan pengubahsuaian yang sesuai mengikut keperluan untuk memenuhi keperluan perniagaan tertentu.

Ringkasnya, ia sangat berguna untuk merealisasikan fungsi menghantar mesej teks secara automatik. Dengan mempelajari pengetahuan dan teknologi berkaitan yang diperkenalkan dalam artikel ini, kami boleh melaksanakan fungsi menghantar mesej teks secara automatik dan meningkatkan kecekapan kerja dan tahap perniagaan kami dengan mudah.

Atas ialah kandungan terperinci php melaksanakan pemesejan teks automatik. 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