ホームページ > バックエンド開発 > PHPチュートリアル > WeChatが自動返信機能を開発、メッセージタイプ判定に失敗、PHP言語で

WeChatが自動返信機能を開発、メッセージタイプ判定に失敗、PHP言語で

WBOY
リリース: 2016-06-20 12:38:20
オリジナル
1339 人が閲覧しました

ユーザーからのさまざまな種類のメッセージに応答する自動応答を作成する プログラムの調整方法に問題があります。
問題: テキスト、画像、音声など、どのようなメッセージを送信しても、「画像メッセージのみを受信します」という応答のみが返されます。これは、プログラムが
を実行していないようです。 ) =="image"){................................この判断
ぜひご覧ください~~~~

<?php// wechat php   //define your token定义接口define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();$wechatObj ->GetImageMsg();//这个要调用自动回复消息!!$wechatObj->valid();class wechatCallbackapiTest{//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>接口验证>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>	public function valid()    {        $echoStr = $_GET["echostr"];        //valid signature , option        if($this->checkSignature()){            header('content-type:text');//在微信样本代码上添加了如此语句,因而接口接成功        	echo $echoStr;        	exit;        }    }        private function checkSignature()    {        // you must define TOKEN by yourself        if (!defined("TOKEN")) {            throw new Exception('TOKEN is not defined!');        }                $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];                        $token = TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        // use SORT_STRING rule        sort($tmpArr, SORT_STRING);        $tmpStr = implode( $tmpArr );        $tmpStr = sha1( $tmpStr );                if( $tmpStr == $signature ){            return true;        }else{            return false;        }    }//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>自动回复消息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  public function GetImageMsg()//自动回复消息    {           $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        if (!empty($postStr))        {                    libxml_disable_entity_loader(true);                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                $fromUsername = $postObj->FromUserName;                $toUsername = $postObj->ToUserName;                $msgType=$postObj->$MsgType;                $picUrl=trim($postObj->PicUrl);                $mediaId=trim($postObj->MediaId);                $time = time();                $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(strtolower($msgType) =="image")                {                                        if(!empty($picUrl)){                           $msgType ="text";                           $contentStr = "图片链接:".$picUrl."\n";                           $contentStr =$contentStr."媒体ID:".$mediaId;                        }else{                            $contentStr = "请发送图片哦";                        }                           }else{                    $msgType ="text";                    $contentStr = "我只接收图片消息";                    }                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                echo $resultStr;        }        else         {            echo "";            exit;        }    }     }?>
ログイン後にコピー


ディスカッションへの返信 (解決策)

おそらく 65 行目は $msgType =$postObj- になるはずです>MsgType;これです
さらに$???があります$???を獲得しました

ありがとう~~~~とても便利です!理解するまでに長い時間がかかりましたが、結果はこうなりました

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート