How to use PHP to write an automatic reply program for WeChat public accounts

PHPz
Release: 2023-05-13 13:02:01
Original
1349 people have browsed it

With the rapid development of mobile Internet, WeChat has become an indispensable social tool in people's lives. In WeChat public accounts, the automatic reply function is also an indispensable part. This article will introduce how to use PHP to write an automatic reply program for WeChat public accounts.

  1. Preparation

First of all, you need to have a WeChat public account. If you don't have one, you can apply for one. Secondly, you also need to have basic abilities in PHP programming.

  1. Get the developer API key of the WeChat public platform

In the WeChat public platform, you need to obtain the developer API key before you can use the API for messaging Send and receive. In the WeChat public platform, enter the developer center, select basic configuration, and then get your own developer API key.

  1. Write code

The following is a sample code for a simple WeChat public account automatic reply program:

<?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;
    }
}
?>
Copy after login

Code explanation:

  1. Define developer API key

    define("TOKEN", "your_token");
    Copy after login

    You need to replace "your_token" with your own developer API key.

  2. Verification Developer Server

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

    When the WeChat public platform sends a verification request to the developer server, verification is required.

  3. Process the received message

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

    Process the message received from the WeChat public platform and obtain the message type and message content.

  4. Processing of text messages

    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;
    }
    Copy after login

    When a text message is received, reply content is generated based on the message content.

  5. Verify developer server

    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;
     }
    }
    Copy after login

    Method to verify developer server.

  6. Deployment code
  7. Upload the written code to the server and set the interface configuration information in the WeChat public platform. Complete the server address, developer API key, and interface configuration information and save it.

    1. Test the automatic reply program

    In the WeChat official account, send a message to the official account. If the program runs normally, it will automatically reply with the corresponding content.

    Summary

    This article briefly introduces how to use PHP to write an automatic reply program for WeChat public accounts. After simple code writing, debugging and deployment, a simple automatic reply program can be implemented. Of course, this example is just an entry-level program. If you need more complex business logic, you need to write and expand the code yourself.

    The above is the detailed content of How to use PHP to write an automatic reply program for WeChat public accounts. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template