Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk menulis program balasan automatik untuk akaun awam WeChat

Cara menggunakan PHP untuk menulis program balasan automatik untuk akaun awam WeChat

PHPz
PHPzasal
2023-05-13 13:01:361340semak imbas

Dengan perkembangan pesat Internet mudah alih, WeChat telah menjadi alat sosial yang sangat diperlukan dalam kehidupan orang ramai. Dalam akaun awam WeChat, fungsi balasan automatik juga merupakan bahagian yang sangat diperlukan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis program balasan automatik untuk akaun awam WeChat.

  1. Persediaan

Pertama sekali, anda perlu mempunyai akaun awam WeChat. Jika anda tidak mempunyai satu, anda boleh memohon satu. Kedua, anda juga perlu mempunyai kebolehan asas dalam pengaturcaraan PHP.

  1. Dapatkan kunci API pembangun platform awam WeChat

Dalam platform awam WeChat, anda perlu mendapatkan kunci API pembangun sebelum anda boleh menggunakan API untuk pemesejan Hantar dan terima. Dalam platform awam WeChat, masukkan pusat pembangun, pilih konfigurasi asas, dan kemudian dapatkan kunci API pembangun anda sendiri.

  1. Tulis kod

Berikut ialah contoh kod untuk program balasan automatik ringkas untuk akaun awam WeChat:

<?php
//获取开发者API密钥
define("TOKEN", "your_token");

//验证开发者服务器
if (isset($_GET["echostr"])) {
    $echoStr = $_GET["echostr"];
    if ($this->checkSignature()) {
        echo $echoStr;
        exit;
    }
}

//处理接收到的消息
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)) {
    $postObj = simplexml_load_string($postStr,'SimpleXMLElement');
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $type = $postObj->MsgType;
    $content = trim($postObj->Content);

    //文本消息
    if($type == "text") {
        if($content == "hello") {
            $msgContent = "您好,欢迎关注我的公众号!";
        } else {
            $msgContent = "您好,我是自动回复机器人,我还在学习中,暂时无法回复您的消息,敬请谅解!";
        }
        $time = time();
        $textTpl = "<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[text]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    <FuncFlag>0</FuncFlag>
                    </xml>";
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgContent);
        echo $resultStr;
        exit;
    }
}

//验证开发者服务器
private function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"]; 

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if ($tmpStr == $signature) {
        return true;
    } else {
        return false;
    }
}
?>

Penjelasan kod:

  1. Tentukan kunci API pembangun

    define("TOKEN", "your_token");

    Anda perlu menggantikan "token_anda" dengan kunci API pembangun anda sendiri.

  2. Sahkan pelayan pembangun

    if (isset($_GET["echostr"])) {
     $echoStr = $_GET["echostr"];
     if ($this->checkSignature()) {
         echo $echoStr;
         exit;
     }
    }

    Apabila platform awam WeChat menghantar permintaan pengesahan kepada pelayan pembangun, pengesahan diperlukan.

  3. Proses mesej yang diterima

    $postObj = simplexml_load_string($postStr,'SimpleXMLElement');
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $type = $postObj->MsgType;
    $content = trim($postObj->Content);

    Proses mesej yang diterima daripada platform awam WeChat dan dapatkan jenis mesej dan kandungan mesej.

  4. Pemprosesan mesej teks

    if($type == "text") {
     if($content == "hello") {
         $msgContent = "您好,欢迎关注我的公众号!";
     } else {
         $msgContent = "您好,我是自动回复机器人,我还在学习中,暂时无法回复您的消息,敬请谅解!";
     }
     $time = time();
     $textTpl = "<xml>
                 <ToUserName><![CDATA[%s]]></ToUserName>
                 <FromUserName><![CDATA[%s]]></FromUserName>
                 <CreateTime>%s</CreateTime>
                 <MsgType><![CDATA[text]]></MsgType>
                 <Content><![CDATA[%s]]></Content>
                 <FuncFlag>0</FuncFlag>
                 </xml>";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgContent);
     echo $resultStr;
     exit;
    }

    Apabila mesej teks diterima, kandungan balasan dijana berdasarkan kandungan mesej.

  5. Sahkan pelayan pembangun

    private function checkSignature()
    {
     $signature = $_GET["signature"];
     $timestamp = $_GET["timestamp"];
     $nonce = $_GET["nonce"]; 
    
     $token = TOKEN;
     $tmpArr = array($token, $timestamp, $nonce);
     sort($tmpArr, SORT_STRING);
     $tmpStr = implode($tmpArr);
     $tmpStr = sha1($tmpStr);
     if ($tmpStr == $signature) {
         return true;
     } else {
         return false;
     }
    }

    Kaedah untuk mengesahkan pelayan pembangun.

  6. Gunakan kod

Muat naik kod bertulis ke pelayan dan tetapkan maklumat konfigurasi antara muka dalam platform awam WeChat. Lengkapkan alamat pelayan, kunci API pembangun dan maklumat konfigurasi antara muka dan simpannya.

  1. Uji program balasan automatik

Dalam akaun rasmi WeChat, hantar mesej ke akaun rasmi Jika program berjalan seperti biasa, ia akan membalas secara automatik dengan yang sepadan kandungan.

Ringkasan

Artikel ini memperkenalkan secara ringkas cara menggunakan PHP untuk menulis program balasan automatik untuk akaun rasmi WeChat. Selepas menulis kod mudah, nyahpepijat dan penggunaan, program balasan automatik ringkas boleh dilaksanakan. Sudah tentu, contoh ini hanyalah program peringkat permulaan Jika anda memerlukan logik perniagaan yang lebih kompleks, anda perlu menulis dan mengembangkan kod itu sendiri.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk menulis program balasan automatik untuk akaun awam WeChat. 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