溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現(xiàn)php開發(fā)微信接收消息自動判斷及回復相應消息

發(fā)布時間:2021-02-20 16:11:12 來源:億速云 閱讀:364 作者:小新 欄目:移動開發(fā)

這篇文章將為大家詳細講解有關如何實現(xiàn)php開發(fā)微信接收消息自動判斷及回復相應消息,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

微信的api現(xiàn)在己經(jīng)強大到可以隨意調(diào)用我們網(wǎng)站或指定數(shù)據(jù)庫的內(nèi)容進行自能回復現(xiàn)推送消息了,這里就來給大家介紹一個微信開發(fā)的筆記.

發(fā)送1,2,3,7測試相應的消息,菜單模式需要升級為服務號,或者訂閱人數(shù)超過500以上.

1. 用戶發(fā)送的消息都是通過你提交的開發(fā)者URL來接收,這里訂閱號就可以搞定,發(fā)送過來的都是xml格式數(shù)據(jù),需要解析,代碼如下:

$data = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!emptyempty($data)) {//接收消息并處理
$xml = (array)simplexml_load_string($data, ‘SimpleXMLElement', LIBXML_NOCDATA);
return $xml;
}

回復也是需要返回XML的數(shù)據(jù)格式.

2. 主動發(fā)送給用戶消息,查詢用戶信息,創(chuàng)建自定義菜單(現(xiàn)在訂閱號也可以用),以及一些高級功能,都是需要獲取appid 和 AppSecret 以便得到 access_token.

access_token 這東西,除接收信息,每個接口都要用到,access_token 的時間為 7200毫秒過期需要重新獲取.

目前我已經(jīng)實現(xiàn)了,接收消息,自動判斷回復相應消息新聞,創(chuàng)建自定義菜單,點擊自定義菜單后執(zhí)行相應操作,用戶列表之類,感覺目前開發(fā)模式和訂閱模式?jīng)]什么區(qū)別.

這里有一個測試回復的測試例子,代碼如下:

<?php
/**
 * wechat php test
 */
//define your token
define("TOKEN", "你的申請上的token");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
 public function valid()
  {
    $echoStr = $_GET["echostr"];
    //valid signature , option
    if($this->checkSignature()){
     $this->responseMsg();
     exit;
    }
  }
  public function responseMsg()
  {
 //get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    //extract post data
 if (!emptyempty($postStr)){
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $keyword = trim($postObj->Content);
        $time = time();
  $msgType = "text";
        $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    <FuncFlag>0</FuncFlag>
    </xml>";
  if(!emptyempty( $keyword ))
        {
         $contentStr = $this->keyrep($keyword);
   if( emptyempty($contentStr) )
   {
   $contentStr ="你是故意的吧,沒文化真可怕";//你是故意的吧,沒文化真可怕;
   }
   //$contentStr = @iconv('UTF-8','gb2312',$keyword);
         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
         echo $resultStr;
        }else{
         $contentStr = '沒文化真可怕,居然不會打字!';//$this->keyrep($keyword);
         //$contentStr = @iconv('UTF-8','gb2312',$keyword);
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
         echo $resultStr;
        }
    }else {
     echo "";
     exit;
    }
  }
 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;
 }
 }
 function keyrep($key)
 {
 //return $key;
 if( $key=='嗨' || $key=='在嗎' || $key=='你好' ){
  $mt = mt_rand(1,17);
  $array = array(1=>'自殺中,稍后再說...',2=>'有事找我請大叫!',3=>'我正在裸奔,已奔出服務區(qū)',4=>'我現(xiàn)在位置:WC; 姿勢:下蹲; 臉部:抽搐; 狀態(tài):用力中。。。。',5=>'去吃飯了,如果你是帥哥,請一會聯(lián)系我,如果你是美女...............就算你是美女,我也要先吃飽肚子啊',6=>'
洗澡中~謝絕旁觀!!^_^0',7=>'有熊出?],我去誘捕,盡快回來。',8=>'你好,我是500,請問你是250嗎?',9=>'喂!亂碼啊,再發(fā)',10=>'
不是我不理你,只是時間難以抗拒!',11=>'你剛才說什么,我沒看清楚,請再說一遍!',12=>'發(fā)多幾次啊~~~發(fā)多幾次我就回你。',13=>'此人已死,有事燒紙!',14=>'乖,不急哦…',15=>'你好.我去殺幾個人,很快回來.',16=>'本人已成仙?有事請發(fā)煙?佛說有煙沒火成不了正果?有火沒煙成不了仙。',17=>'
你要和我說話?你真的要和我說話?你確定自己想說嗎?你一定非說不可嗎?那你說吧,這是自動回復,反正我看不見其實我在~就是不回你拿我怎么著?'
);
  return $array[$mt];
 }
 if( $key=='靠' || $key=='啊' || $key=='阿' )
 {
  $mt = mt_rand(1,19);
  $array = array(1=>'人之初?性本善?玩心眼?都滾蛋。',2=>'今后的路?我希望你能自己好好走下去?而我 坐車',3=>'笑話是什么?就是我現(xiàn)在對你說的話。',4=>'人人都說我丑?其實我只是美得不明顯。',5=>'A;豬是怎么死的?B;你還沒死我怎么知道',6=>'
奧巴馬已經(jīng)干掉和他同姓的兩個人?奧特曼你要小心了。 ',7=>'有的人活著?他已經(jīng)死了?有的人活著?他早該死了。',8=>'"妹妹你坐船頭?哥哥我岸上走"據(jù)說很傻逼的人看到都是唱出來的。',9=>'我這輩子只有兩件事不會?這也不會?那也不會。',10=>'
過了這個村?沒了這個店?那是因為有分店。',11=>'我以為你只是個球?沒想到?你真是個球。',12=>'你終于來啦,我找你N年了,去火星干什么了?我現(xiàn)在去冥王星,回頭跟你說個事,別走開啊',13=>'你有權保持沉默,你所說的一切都將被作為存盤記錄。你可以請代理服務器,如果請不起網(wǎng)絡會為你分配一個。',14=>'本人正在被國際刑警組織全球范圍內(nèi)通緝,如果您有此人的消息,請撥打當?shù)貓缶娫?#39;,15=>'洗澡中~謝絕旁觀??!^_^0',16=>'嘀,這里是移動秘書, 美眉請再發(fā)一次,我就與你聯(lián)系;姐姐請再發(fā)兩次,我就與你聯(lián)系;哥哥、弟弟就不要再發(fā)了,因為發(fā)了也不和你聯(lián)系!',17=>'
其實我在~就是不回你拿我怎么著?',18=>'你剛才說什么,我沒看清楚,請再說一遍!',19=>'乖,不急。。。');
  return $array[$mt];
 }
 if( $key =='請問' )
 {
  $mt = mt_rand(1,5);
  $array = array(1=>'"我臉油嗎"反光??反正我不清楚',2=>'走,我請你吃飯',3=>'此人已死,有事燒紙!',4=>'喂!什么?。y碼啊,再發(fā)',5=>'笑話是什么??就是我現(xiàn)在對你說的話。');
  return $array[$mt];
 }
 return "";
 }
 function keylist()
 {
 $array = array(1=>'嗨',2=>'你好',3=>'靠',4=>'在嗎',5=>'請問');
 }
}
?>

關于“如何實現(xiàn)php開發(fā)微信接收消息自動判斷及回復相應消息”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

php
AI