Automatische Textantwort für die PHP-WeChat-Entwicklung

不言
Freigeben: 2023-03-24 11:20:02
Original
3213 Leute haben es durchsucht

Der Inhalt dieses Artikels handelt von der automatischen Textantwort in der PHP-WeChat-Entwicklung. Jetzt kann ich ihn mit Ihnen teilen

Heute möchte ich Ihnen die Entwicklung der automatischen Antwortfunktion von WeChat vorstellen. Diesmal müssen Sie Ihren eigenen Server vorbereiten (auf den über das externe Netzwerk zugegriffen werden kann) und ihn auf dem öffentlichen Konto ausführen

Serverauthentifizierung und Aktivierung der Serverkonfiguration.


Wenn Benutzer Nachrichten an das offizielle Konto senden, sendet WeChat diese Nachrichten im XML-Format URL entsprechend dem Server;

Entwickler erhält

Nach xml Nachricht , sie kann analysiert werden und dann wird der entsprechende Inhalt entsprechend dem Inhalt der Nachricht an den Benutzer zurückgesendet. Die Antwortnachricht muss ebenfalls mit xmlFormat wird gesendet .

<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>
Nach dem Login kopieren
参数是否必须描述
ToUserName接收方帐号(收到的OpenID)
FromUserName开发者微信号
CreateTime消息创建时间 (整型)
MsgTypetext
Content回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

Hierbei ist zu beachten, dass die Wartezeit, bis WeChat eine Anfrage an den Entwicklerserver sendet, 5 Sekunden beträgt, wenn der Entwickler nicht innerhalb von Sekunden antworten kann 5 Sekunden,

WeChat sendet die Anfrage erneut

(bis zu dreimal), nach drei Malen geht es immer noch nicht Antworten Sie innerhalb von 5 Sekunden oder der Inhalt der Antwort kann von WeChat nicht analysiert werden und es wird die Meldung „Dieses offizielle Konto ist nicht verfügbar“ angezeigt. Wenn keine Antwort innerhalb von

5

Sekunden garantieren kann, können Sie mit einer leeren Zeichenfolge antworten und WeChat wird nichts mit der Nachricht unternehmen. Da die Arten von Nachrichten, die von WeChat an den Entwicklerserver gesendet werden, relativ unterschiedlich sind, einschließlich gewöhnlicher Nachrichten, Follow-Ereignisse, Unfollow-Ereignisse, Schaltflächenklick-Ereignisse usw. Daher müssen beim Entwurf der automatischen Antwortfunktion die Flexibilität, Skalierbarkeit und Wartbarkeit des Programms vollständig berücksichtigt werden.

Hier habe ich das „Chain of Responsibility Design Pattern“ verwendet, um eine Verarbeitungsschnittstelle zu definieren und jeden Nachrichtenhandler diese Schnittstelle implementieren zu lassen, wenn er eine Anfrage empfängt, die Anfrage senden

Die Anfrage wird an die erste Handlerklasse übergeben. Wenn die Anfrage in dieser Klasse verarbeitet werden kann, wird sie direkt zur Verarbeitung zurückgegeben

Ergebnis, andernfalls fließt es zur nächsten Handlerklasse, bis die Anfrage verarbeitet wird. Das Besondere an diesem Modus ist, dass er die einzelnen Schritte zur Bearbeitung von Anfragen aufschlüsselt und komplexe Urteile fällen kann

条件进行分解,同时每一个处理程序都只有一个单一的职责,对其进行修改不会影响到其他处理程序类。另外,将每一个请求类

xml文件的格式配置好,应用程序启动的时候,使用反射+IOC注入的方式实例化每一个处理程序类。

首先创建一个页面,replyText.html


我们创建两个数据表,

rule表 :用来存储回复数据,id自增长 , mp_id是当前正在使用的公众号,keyword是用户输入的关键字,type在此为text,reply_id与reply_text表建立连接,status为当前状态(是否正在使用)。



reply_text表 : reply_id作为主键,content为回复内容。

(在此注意一点,在页面输入对应值后,要把数据统一添加到两个数据表中,add()方法成功返回主键值,可利用这点进行两表关联添加)



public function replyText(){
        if(IS_GET){
            $this->display(&#39;replytext&#39;);
        }else{
            $mp = $this->mp;
            $mp_id = $mp[&#39;id&#39;];
            $data = I(&#39;post.&#39;);

            $textret = M(&#39;reply_text&#39;)->add($data);

            if($textret){
                $data[&#39;reply_id&#39;] = $textret;
                $data[&#39;mp_id&#39;] = $mp_id;
                $data[&#39;type&#39;] = &#39;text&#39;;
                if ($mp[&#39;is_use&#39;] == 1){
                    $data[&#39;status&#39;] = 1;
                }else{
                    $data[&#39;status&#39;] = 0;
                }
                $ret = M(&#39;rule&#39;)->add($data);
                if ($ret) {
                    $this->ajaxReturn(array(&#39;msg&#39;=>&#39;添加成功!&#39;));
                }else{
                    $this->ajaxReturn(array(&#39;msg&#39;=>$ret));
                }
            }
        }
    }
Nach dem Login kopieren


之前介绍过,我用的laneWeChat包,可以直接调用里边的方法,在wechatrequest.lib.php里的text方法中加入以下代码进行文本回复:

//获取哪个公众号发过来的请求
        $mp_id = $_GET[&#39;id&#39;];

        $content = $request[&#39;content&#39;];
        $where[&#39;mp_id&#39;] = $mp_id;
        $where[&#39;keyword&#39;] = $content;
        $data = M(&#39;rule&#39;)->where($where)->find();
        if ($data) {
            //发送消息中有这个关键字
            $reply_id = $data[&#39;reply_id&#39;];
            $type = $data[&#39;type&#39;];

            if ($type == "text") {
                $reply = M(&#39;reply_text&#39;)->find($reply_id);
                $reply_text = $reply[&#39;content&#39;];
                return ResponsePassive::text($request[&#39;fromusername&#39;], $request[&#39;tousername&#39;], $reply_text);
            }
            
        }else{
            return &#39;success&#39;;
        }
Nach dem Login kopieren

代码要一一写的话就有些多了,在此,只给小伙伴们分享以上代码,如果还有其他问题,欢迎留言提问哦~

请大家多多关注,我会时刻更新的!

相关推荐:

PHP微信开发之翻译功能

Stadtwetter mithilfe der PHP-WeChat-Entwicklung abrufen

Das obige ist der detaillierte Inhalt vonAutomatische Textantwort für die PHP-WeChat-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage