首頁 後端開發 php教程 PHP微信開發之微信訊息自動回覆下所遇到的坑 微信漂流瓶自動回覆 微信自動回覆大全 微信群自動回

PHP微信開發之微信訊息自動回覆下所遇到的坑 微信漂流瓶自動回覆 微信自動回覆大全 微信群自動回

Jul 29, 2016 am 08:49 AM
微信開發 自動回覆

微信回覆原理:

當普通微信用戶向公眾帳號發送訊息時,微信伺服器首先收到用戶發送的訊息;

然後將用戶資訊和訊息打包成XML格式的資料包,再將這個XML資料包透過POST方法提交到開發者設定的URL上。

疑問一:為何使用$GLOBALS["HTTP_RAW_POST_DATA"]保存POST過來的數據,而非$_POST數組?

回答:

POST只能保存標準的資料類型,對於XML、SOAP或Application/Octet-steam之類的內容則無法解析。

而$GLOBALS["HTTP_RAW_POST_DATA"]和$_POST是一樣的,如果POST過來的資料PHP能夠識別,則可以用$GLOBALS["HTTP_RAW_POST_DATA"]來接收。

疑問二:simplexml_load_file()各參數和回傳值是什麼?

回答:

參數意義

string:需要處理的XML字串。

class:用來指定新對象,通常設定為"SimpleXMLElement",產生一個簡單XML元素的類別。

options:指定附加的Libxml參數,通常設定為常數LIBXML_NOCDATA,表示把CDATA設定為文字節點。

ns:一般省略

is_prefix:一般省略

函數執行完成後傳回SimpleXMLElement類別的物件。

功能:公眾號只接受文字訊息,且做出對應的文字回覆。

<span><&#63;php 
define("TOKEN","weixin"); 
$weixinObj = new Wechat(); 
$weixinObj->valid(); 
class Wechat{ 
public function valid(){ 
$echoStr = $_GET['echostr']; 
//如果是第一次接入 
if($this->checkSignature() && $echoStr ){ 
echo $echoStr; 
exit; 
}else{ 
$this->responseMsg(); 
} 
} 
//校验方法 
private function checkSignature(){ 
$signature = $_GET['signature']; 
$timestamp = $_GET['timestamp']; 
$nonce = $_GET['nonce']; 
$token = TOKEN; 
$tmpArr = array($token, $timestamp, $nonce); 
sort($tmpArr); 
$tmpStr = implode($tmpArr); 
$tmpStr = sha1($tmpStr); 
if($tmpStr == $signature){ 
return true; 
}else{ 
return false; 
} 
} 
/* 普通文本消息 
<xml> 
<ToUserName><![CDATA[toUser]]></ToUserName> 
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<CreateTime>1348831860</CreateTime> 
<MsgType><![CDATA[text]]></MsgType> 
<Content><![CDATA[this is a test]]></Content> 
</xml> 
*/ 
public function responseMsg(){ 
//获取微信服务器POST请求中的数据 
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
if( !empty($postStr) ){ 
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 
$fromUser = $postObj->FromUserName; 
$toUser = $postObj->ToUserName; 
$keyword = trim($postObj->Content); 
$time = time(); 
$template = "<xml> 
<ToUserName><![CDATA[%s]]></ToUserName> 
<FromUserName><![CDATA[%s]]></FromUserName> 
<CreateTime>%s</CreateTime> 
<MsgType><![CDATA[%s]]></MsgType> 
<Content><![CDATA[%s]]></Content> 
</xml>"; 
if( strtolower($postObj->MsgType)!='text' ){ 
$msgType = "text"; 
$content = "我只接受文本消息"; 
}else{ 
$msgType = "text"; 
if( !empty($keyword) ){ 
$content = "您发送的消息是:".$postObj->Content; 
}else{ 
$content = "请输入关键字";//消息为空 
} 
} 
$info = sprintf($template, $fromUser, $toUser, $time, $msgType, $content); 
echo $info; 
}else{ 
echo ""; 
exit; 
} 
} 
}</span> 
登入後複製

功能:公眾號只接受圖片訊息,且做出對應的文字回覆。

<span><&#63;php 
define("TOKEN","weixin"); 
$weixinObj = new Wechat(); 
$weixinObj->valid(); 
class Wechat{ 
public function valid(){ 
$echoStr = $_GET['echostr']; 
//如果是第一次接入 
if($this->checkSignature() && $echoStr ){ 
echo $echoStr; 
exit; 
}else{ 
$this->responseMsg(); 
} 
} 
//校验方法 
private function checkSignature(){ 
$signature = $_GET['signature']; 
$timestamp = $_GET['timestamp']; 
$nonce = $_GET['nonce']; 
$token = TOKEN; 
$tmpArr = array($token, $timestamp, $nonce); 
sort($tmpArr); 
$tmpStr = implode($tmpArr); 
$tmpStr = sha1($tmpStr); 
if($tmpStr == $signature){ 
return true; 
}else{ 
return false; 
} 
} 
/* 接收图片消息格式 
<xml> 
<ToUserName><![CDATA[toUser]]></ToUserName> 
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<CreateTime>1348831860</CreateTime> 
<MsgType><![CDATA[image]]></MsgType> 
<PicUrl><![CDATA[this is a url]]></PicUrl> 
<MediaId><![CDATA[media_id]]></MediaId> 
<MsgId>1234567890123456</MsgId> 
</xml> 
*/ 
public function responseMsg(){ 
//获取微信服务器POST请求中的数据 
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
if( !empty($postStr) ){ 
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 
$fromUser = $postObj->FromUserName; 
$toUser = $postObj->ToUserName; 
$time = time(); 
$msgType= $postObj->MsgType; 
$picUrl = $postObj->PicUrl; 
$mediaId = $postObj->MediaId; 
$template = "<xml> 
<ToUserName><![CDATA[%s]]></ToUserName> 
<FromUserName><![CDATA[%s]]></FromUserName> 
<CreateTime>%s</CreateTime> 
<MsgType><![CDATA[%s]]></MsgType> 
<Content><![CDATA[%s]]></Content> 
</xml>"; 
if( strtolower($msgType)!='image' ){ 
$msgType = "text"; 
$content = "我只接受图片消息"; 
}else{ 
$msgType = "text"; 
if( !empty( $picUrl ) ){ 
$content = "图片链接为:".$picUrl."\n"; 
$content .= "媒体id:".$mediaId; 
}else{ 
$content = "请发送图片";//消息为空 
} 
} 
$info = sprintf($template, $fromUser, $toUser, $time, $msgType, $content); 
echo $info; 
}else{ 
echo ""; 
exit; 
} 
} 
}</span>
登入後複製

以上是小編給大家分享的微信訊息自動回覆下所遇到的坑的相關知識,希望對大家有所幫助!

以上就介紹了PHP微信開發之微信訊息自動回覆下所遇到的坑,包括了微信開發,自動回覆方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

閒魚怎麼設定自動回覆 設定自動回覆方法 閒魚怎麼設定自動回覆 設定自動回覆方法 Mar 13, 2024 am 10:50 AM

閒魚能夠輕鬆的滿足所有人的使用,大家都可以在這裡購買需要的商品,也能夠在這裡售賣自己的閒置物品,輕鬆的賺回錢來,非常的划算,有需要的小伙伴們,都可以使用起來,將自己已經不需要的閒置物品都賣掉,既可以騰出空間來,還可以拿到錢,自由的設定價格,別人可以直接的購買,有時價格不滿意又想要的話,也會找你談價格,或者了解更加詳細的商品信息,這時候我們沒有回复的話,就有可能會失去一個客戶,所以我們可以設置一些自動回复,這樣可以有效的幫助大家在一些時候留住客戶,非常有用,小編在這裡為你們提供設定自動回覆的方

QQ自動回覆怎麼設定? QQ自動回覆設定步驟 QQ自動回覆怎麼設定? QQ自動回覆設定步驟 Mar 15, 2024 pm 03:13 PM

QQ是一款廣受歡迎的社群軟體,它不僅支援文字、語音、視訊等多種溝通方式,也具備豐富的個人化設定功能。其中,自動回覆功能就是一項非常實用的設置,它可以在你忙碌或無法及時回覆訊息時,自動為好友發送預設的回覆內容,避免了因未能及時回覆而帶來的尷尬。這樣,當你忙碌或暫時離開時,QQ就會自動為好友發送預設的回复,讓你在享受社交樂趣的同時,也能輕鬆應對各種場景。 QQ自動回覆怎麼設定? QQ自動回覆設定步驟1、解鎖手機,開啟QQ應用,在首頁訊息頁面,輕輕點選左上角的【狀態】圖標,或長按自己的【頭像】,即刻進入

如何利用PHP開發自動回覆郵件的功能? 如何利用PHP開發自動回覆郵件的功能? Sep 11, 2023 pm 09:51 PM

如何利用PHP開發自動回覆郵件的功能?隨著電子郵件的廣泛應用,自動回覆郵件的功能成為了許多組織和個人日常工作中的必備功能。利用PHP開發自動回覆郵件功能可以幫助我們節省時間和精力,提高工作效率。在本文中,我們將介紹如何利用PHP開發自動回覆郵件的功能,以便更好地應對郵件回覆的需求。首先,我們需要一個可以傳送和接收郵件的PHP函式庫。 PHPMailer是一個非常流

Outlook2013如何設定自動回覆-Outlook2013設定自動回覆的方法 Outlook2013如何設定自動回覆-Outlook2013設定自動回覆的方法 Mar 05, 2024 pm 02:01 PM

最近很多剛使用Outlook2013的新朋友們,詢問小編Outlook2013怎樣設定自動回覆?下文小編就為大夥帶來了Outlook2013設定自動回覆的方法,讓我們一起來下文看看吧。登陸進去後,會彈出如下介面,點選左上方的檔案進去。彈出如下文件選項介面,點選【自動回復】進去進到自動回復設定介面,預設是沒有勾選自動發送郵件的,咱們可以點擊勾選接下來設定在哪段時間進行自動回复,如下圖所示設置即可最後編輯需要恢復的內容,編輯完成即可點擊確定,然後讓你們的同事發送一個郵件給您,看看效果即可。

ChatGPT Java:如何實現自動回覆功能 ChatGPT Java:如何實現自動回覆功能 Oct 25, 2023 am 08:47 AM

ChatGPTJava:如何實現自動回覆功能,需要具體程式碼範例自動回覆功能在現代科技的發展中變得越來越重要。無論是線上客服、聊天機器人或社群媒體平台,都需要具備自動回覆的能力,以提供即時且高效的服務。本文將介紹如何使用Java程式語言實作自動回覆功能,並提供具體的程式碼範例。在開始之前,我們需要了解如何建立一個基本的ChatGPT模型。 ChatGPT是一個

PHP微信開發:如何實作訊息加密解密 PHP微信開發:如何實作訊息加密解密 May 13, 2023 am 11:40 AM

PHP是一種開源的腳本語言,廣泛應用於網頁開發和伺服器端編程,尤其在微信開發中得到了廣泛的應用。如今,越來越多的企業和開發者開始使用PHP進行微信開發,因為它成為了真正的易學易用的開發語言。在微信開發中,訊息的加密和解密是一個非常重要的問題,因為它們涉及資料的安全性。對於沒有加密和解密方式的消息,駭客可以輕鬆取得其中的數據,對用戶造成威脅

PHP實作郵件自動回覆的方法 PHP實作郵件自動回覆的方法 May 22, 2023 pm 08:21 PM

PHP是一種流行的伺服器端腳本語言,它可以用於實現各種不同類型的應用程序,其中包括郵件自動回覆。郵件自動回覆是一種非常有用的功能,可以用於自動回覆一系列電子郵件,從而節省時間和精力。在本文中,我將介紹如何使用PHP實現郵件自動回覆。第一步:安裝PHP和web伺服器在開始實作郵件自動回覆之前,必須先安裝PHP和web伺服器。對大多數人來說,Apache是​​最常

用PHP開發微信群發工具 用PHP開發微信群發工具 May 13, 2023 pm 05:00 PM

隨著微信的普及,越來越多的企業開始將其作為行銷工具。而微信群發功能,則是企業進行微信行銷的重要手段之一。但是,如果只依靠手動發送,對於行銷人員來說是一件極為費時費力的工作。所以,開發一款微信群發工具就顯得格外重要。本文將介紹如何使用PHP開發微信群發工具。一、準備工作開發微信群發工具,我們需要掌握以下幾個技術點:PHP基礎知識微信公眾平台開發開發工具:Sub

See all articles