Maison  >  Article  >  développement back-end  >  php implémente la messagerie texte automatique

php implémente la messagerie texte automatique

PHPz
PHPzoriginal
2023-05-06 11:03:07821parcourir

Avec le développement d'Internet, les SMS sont devenus un élément indispensable de nos vies. Dans le monde des affaires moderne, la messagerie texte devient également de plus en plus importante car il s'agit d'une méthode de communication rapide, pratique et peu coûteuse qui permet aux entreprises de communiquer avec les clients en temps réel. Cependant, à mesure que la taille des entreprises s'étend, l'envoi manuel de messages texte ne peut plus répondre aux besoins. Par conséquent, la fonction d'envoi automatique de messages texte est devenue de plus en plus importante.

PHP est un langage de script côté serveur populaire, idéal pour gérer les requêtes Web. Cet article explique comment utiliser PHP pour envoyer automatiquement des messages texte.

Tout d'abord, nous devons comprendre quelques principes et processus de base pour l'envoi automatique de messages texte. Dans le processus d'envoi automatique de messages SMS, nous avons besoin des trois éléments de base suivants : la passerelle SMS, l'interface SMS et le contenu SMS.

  1. SMS Gateway

Dans le processus d'envoi automatique de messages texte, la passerelle SMS est un élément indispensable. La passerelle SMS est un middleware qui connecte les expéditeurs et les récepteurs de SMS. Elle implémente l'envoi et la réception de messages SMS. Lors du choix d’une passerelle SMS, nous devons prêter attention aux facteurs suivants : vitesse d’envoi des SMS, compatibilité, prix, sécurité et stabilité.

  1. Interface SMS

L'interface SMS est l'interface de communication entre le serveur et la passerelle SMS. Il est chargé de communiquer entre les instructions sur le serveur et la passerelle SMS, et d'envoyer le SMS au bon destinataire. Les interfaces SMS sont généralement divisées en deux catégories : l'interface HTTP et l'interface SDK. L'interface HTTP présente les avantages d'une forte compatibilité, d'une utilisation simple et d'une grande stabilité, et convient aux scénarios de petites entreprises ; l'interface SDK est plus flexible, hautement sécurisée et adaptée aux scénarios commerciaux de grande envergure et complexes.

  1. Contenu SMS

Le contenu SMS fait référence au message texte à envoyer. Lors de la rédaction du contenu d'un message texte, vous devez prêter attention aux aspects suivants : Un bon contenu de message texte doit être capable d'attirer l'attention de l'utilisateur et de transmettre les informations correctes dans un texte court.

Après avoir compris les éléments de base, nous pouvons commencer à écrire du code PHP pour envoyer automatiquement des messages texte.

Tout d'abord, nous devons choisir une passerelle SMS et une interface SMS. Ici, nous prenons le service Alibaba Cloud SMS comme exemple et l'implémentons à l'aide de l'interface HTTP du service Alibaba Cloud SMS. Les étapes spécifiques sont les suivantes :

  1. Enregistrez un compte Alibaba Cloud, entrez dans la console du service SMS et créez une clé d'accès.
  2. Alibaba Cloud SMS Service fournit un ensemble complet d'interfaces API Nous pouvons réaliser la fonction d'envoi automatique de messages texte en appelant cette interface. Pour plus de détails, veuillez consulter la documentation de l'API du service Alibaba Cloud SMS.
  3. Écrivez le code PHP pour appeler. Le code spécifique est le suivant :

// Les variables suivantes sont requises, veuillez vous connecter à Alibaba Cloud pour obtenir
$accessKeyId = "XXXXXXXXXXXX"; // Numéro de téléphone portable pour recevoir des SMS
$templateParam = array (

"code" => mt_rand(100000, 999999)  // 短信模板中的替换参数,这里使用PHP内置函数mt_rand()生成一个6位验证码<br>);</p>
<p>// Interface d'envoi de SMS#🎜🎜 #function 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;
}

}

// Classe de signature# 🎜🎜#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;
}

}
// Appelez l'interface d'envoi de SMS

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

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

} else {

echo "验证码发送失败";
}

# 🎜🎜#Le code PHP ci-dessus implémente l'utilisation d'Ali L'interface HTTP du service cloud SMS a pour fonction d'envoyer des messages SMS. Nous pouvons apporter les ajustements et modifications appropriés selon les besoins pour répondre aux besoins spécifiques de l'entreprise.

En bref, il est très utile de réaliser la fonction d'envoi automatique de messages texte. En apprenant les connaissances et technologies pertinentes présentées dans cet article, nous pouvons facilement mettre en œuvre la fonction d'envoi automatique de messages texte et améliorer notre efficacité de travail et notre niveau commercial.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php mysql modifier le tableauArticle suivant:php mysql modifier le tableau