php は自動テキストメッセージングを実装します

PHPz
リリース: 2023-05-06 11:03:07
オリジナル
815 人が閲覧しました

インターネットの発展に伴い、テキスト メッセージングは​​私たちの生活に欠かせないものになりました。現代のビジネスの世界では、テキスト メッセージングもますます重要になってきています。テキスト メッセージングは​​、企業が顧客とリアルタイムでコミュニケーションできる、高速、便利、低コストの通信方法だからです。しかし、企業規模が徐々に拡大するにつれ、手動でのテキストメッセージ送信ではニーズに対応できなくなり、テキストメッセージを自動送信する機能の重要性がますます高まっています。

PHP は、Web リクエストの処理に最適な、人気のあるサーバーサイド スクリプト言語です。この記事では、PHPを使ってテキストメッセージを自動送信する方法を紹介します。

まず、テキスト メッセージを自動的に送信するためのいくつかの基本原則とプロセスを理解する必要があります。 SMS メッセージを自動的に送信するプロセスでは、SMS ゲートウェイ、SMS インターフェイス、SMS コンテンツという 3 つの基本要素が必要です。

  1. SMS ゲートウェイ

テキスト メッセージを自動的に送信するプロセスでは、SMS ゲートウェイは不可欠な部分です。 SMS ゲートウェイは、SMS の送信者と受信者を接続するミドルウェアで、SMS メッセージの送受信を実現します。 SMS ゲートウェイを選択するときは、SMS 送信速度、互換性、価格、セキュリティ、安定性の要素に注意を払う必要があります。

  1. SMS インターフェイス

SMS インターフェイスは、サーバーと SMS ゲートウェイ間の通信インターフェイスです。これは、サーバー上の命令と SMS ゲートウェイの間で通信し、SMS を正しい受信者に送信する役割を果たします。 SMS インターフェイスは通常、HTTP インターフェイスと SDK インターフェイスの 2 つのカテゴリに分類されます。 HTTP インターフェイスには、強力な互換性、簡単な使用、高い安定性という利点があり、小規模なビジネス シナリオに適しています。SDK インターフェイスは、より柔軟で安全性が高く、大規模で複雑なビジネス シナリオに適しています。

  1. SMS コンテンツ

SMS コンテンツは、送信されるテキスト メッセージを指します。テキスト メッセージ コンテンツを作成するときは、次の点に注意する必要があります。 優れたテキスト メッセージ コンテンツは、ユーザーの注意を引き、短いテキストで正しい情報を伝えることができる必要があります。

基本的な要素を理解したら、テキスト メッセージを自動的に送信するための PHP コードの作成を開始できます。

まず、SMS ゲートウェイと SMS インターフェイスを選択する必要があります。ここでは、Alibaba Cloud SMS サービスを例として、Alibaba Cloud SMS サービスの HTTP インターフェイスを使用して実装します。具体的な手順は次のとおりです:

  1. Alibaba Cloud アカウントを登録し、SMS を入力しますサービス コンソールにアクセスし、アクセス キーを作成します。
  2. Alibaba Cloud SMS Service は完全な API インターフェイスを提供しており、このインターフェイスを呼び出すことで SMS メッセージを自動的に送信する機能を実現できます。詳細については、Alibaba Cloud SMS サービス API ドキュメントを参照してください。
  3. 呼び出すための PHP コードを記述します。具体的なコードは次のとおりです:

// 次の変数が必要です。Alibaba Cloud にログインして
$accessKeyId = "XXXXXXXXXXX";# を取得してください。 ##$accessKeySecret = "XXXXXXXXXX";
$signName = "XXXXXXXXXX";
$templateCode = "XXXXXXXXXXX";

$phoneNumbers = "XXXXXXXXXX"; // テキストを受信する携帯電話番号messages

$templateParam = array (

"code" => mt_rand(100000, 999999)  // 短信模板中的替换参数,这里使用PHP内置函数mt_rand()生成一个6位验证码</p>);<p></p>//SMS インターフェイスの送信<p>function sendSms($accessKeyId, $accessKeySecret, $phoneNumbers, $signName, $templateCode, $templateParam)<br> {<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;
}
ログイン後にコピー
}

// 署名クラス

class 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;
}
ログイン後にコピー
}

// 送信を呼び出しますSMS インターフェイス

$result = sendSms($accessKeyId, $accessKeySecret, $phoneNumbers, $signName, $templateCode, $templateParam);
if ($result !== false) {

echo "验证码已发送成功";
ログイン後にコピー
} else {

echo "验证码发送失败";
ログイン後にコピー
}

上記の PHP コードは、Alibaba Cloud SMS サービスの HTTP インターフェイスを使用してテキスト メッセージを送信する機能を実装しています。特定のビジネス ニーズを満たすために、必要に応じて適切な調整や変更を行うことができます。

つまり、テキストメッセージを自動的に送信する機能を実現すると非常に便利です。この記事で紹介した関連知識や技術を学ぶことで、テキストメッセージの自動送信機能を簡単に実装でき、業務効率やビジネスレベルを向上させることができます。

以上がphp は自動テキストメッセージングを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート