微信公众号,智能回复!
1.首先,你需要一个域名!
2.然后需要进行配置!
若想配通,必须要TOKEN验证通过!
<?php
/**
* Created by PhpStorm.
* User: jiqing
* Date: 18-7-19
* Time: 下午6:30
* 处理消息自动回复
*/
class AutoAction extends CommonAction
{
public function index()
{
$timestamp = $_GET[\'timestamp\'];//timestamp其实就是一个时间戳
$nonce = $_GET[\'nonce\'];//nonce是一个随机参数
$token = "vTA2zJ3969BKJGSlJKYJhy22j96GKKlA";//这个token填写你在微信公众平台上写的那个值
$signature = $_GET[\'signature\'];//这个signature其实就是在微信公众平台已经加密好的字符串
$echostr = $_GET[\'echostr\'];
$array = array($timestamp, $nonce, $token);
sort($array);
$tmpstr = implode(\'\', $array);
$tmpstr = sha1($tmpstr);
if ($tmpstr == $signature && $echostr) {
echo $echostr;
exit;
} else {
$this->responseMsg();
}
}
public function responseMsg()
{
$postArr = $GLOBALS[\'HTTP_RAW_POST_DATA\'];
$postObj = simplexml_load_string($postArr);
if (strtolower($postObj->MsgType) == \'event\') {
//如果是关注事件(subscribe)
if (strtolower($postObj->Event == \'subscribe\')) {
//回复用户消息
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = \'text\';
$content = \'欢迎关注 宿迁市面包新语 微信公众号^_^\';
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}
}
//回复纯文本或单图文消息
if (($postObj->MsgType) == \'text\' && trim($postObj->Content) == \'闺蜜\') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$arr = array(
array(
\'title\' => \'闺蜜挑战\',
\'description\' => "参与真假塑料闺蜜活动,免费领取面包",
\'picUrl\' => \'http://xinyu.squmo.com/static/images/lulu.png\',
\'url\' => \'http://xinyu.squmo.com/wx.php/Index/index\',
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>" . count($arr) . "</ArticleCount>
<Articles>";
foreach ($arr as $k => $v) {
$template .= "<item>
<Title><![CDATA[" . $v[\'title\'] . "]]></Title>
<Description><![CDATA[" . $v[\'description\'] . "]]></Description>
<PicUrl><![CDATA[" . $v[\'picUrl\'] . "]]></PicUrl>
<Url><![CDATA[" . $v[\'url\'] . "]]></Url>
</item>";
}
$template .= "</Articles>
</xml> ";
echo sprintf($template, $toUser, $fromUser, time(), \'news\');
} else {
$fromUser = $postObj->ToUserName;//消息从哪里来
$toUser = $postObj->FromUserName;//发送给谁
switch (trim($postObj->Content)) {
case \'兑换码\':
$question_cdkey_model = M(\'question_cdkey\');
$openid = $toUser->__toString(); // 关键将 simplexmlelement object to string
$question_info = $question_cdkey_model->where([\'openid\'=>$openid])->find();
if ($question_info) {
$content = $question_info[\'cdkey\'];
} else {
$content = "抱歉,您还没有参加活动,回复【闺蜜】参与活动";
}
break;
default:
$content = "欢迎品尝面包新语 回复【闺蜜】参与活动";
}
$template1 = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$time = time();
$msgType = \'text\';
echo sprintf($template1, $toUser, $fromUser, $time, $msgType, $content);
}
}
}
很有意思!
他会根据事件,文本做出不同的处理!