简答的自动回复消息完成了,有很多人都不知道关注自动发送给用户消息是怎么实现的,那么我今天分享一下关注成功后自动发送消息的实现。
看到微信api里面也有介绍到事件推送,那么这个关注事件是如何使用的呢? 今天不废话,直接上代码:
<?php
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();
class wechatCallbackapiTest {
public function responseMsg() {
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if(!empty($postStr)) {
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
switch($RX_TYPE) {
case "text" :
$resultStr = $this->receiveText($postObj);
break;
case "event" :
$resultStr = $this->receiveEvent($postObj);
break;
default :
$resultStr = "unknow msg type: " . $RX_TYPE;
break;
}
echo $resultStr;
} else {
echo "";
exit();
}
}
private function receiveText($object) {
if (!empty($object)){
$fromUsername = $object->FromUserName;
$toUsername = $object->ToUserName;
$keyword = trim($object->Content);
$time = time();
//自动回复图文消息
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>3</ArticleCount>
<Articles>
<item>
<Title><![CDATA[测试标题1]]></Title>
<Description><![CDATA[测试内容啊1!]]></Description>
<PicUrl><![CDATA[https://cache.yisu.com/upload/information/20200302/44/7084.jpg]]></PicUrl>
<Url><![CDATA[http://www.baidu.com]]></Url>
</item>
<item>
<Title><![CDATA[哈哈,标题]]></Title>
<Description><![CDATA[内容标题]]></Description>
<PicUrl><![CDATA[https://cache.yisu.com/upload/information/20200302/44/7085.jpg]]></PicUrl>
<Url><![CDATA[http://www.discuz.com]]></Url>
</item>
<item>
<Title><![CDATA[12345哈哈,标题]]></Title>
<Description><![CDATA[798465789内容标题]]></Description>
<PicUrl><![CDATA[https://cache.yisu.com/upload/information/20200302/44/7084.jpg]]></PicUrl>
<Url><![CDATA[http://www.google.com]]></Url>
</item>
</Articles>
<FuncFlag>1</FuncFlag>
</xml> ";
if(!empty( $keyword )){
$msgType = "news"; //类型 news:图文消息、text:文本消息 event:事件
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function receiveEvent($object) {
$contentStr = "";
switch($object->Event) {
case "subscribe" :
$contentStr = "欢迎关注社区管家!我们可以常联系了!!";
break;
}
$resultStr = $this->transmitText($object, $contentStr);
return $resultStr;
}
private function transmitText($object, $content, $flag = 0) {
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
return $resultStr;
}
}
?>
如果有的童鞋不明白的话,可以留言给我! 我会不定期给大家解决问题!
欢迎留言
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。