2018年04月6日网站服务器迁移完成……

微信自定义菜单的click事件推送

微信公众号开发 苏 demo 1152℃

前面我们实践了微信公众号自定义创建菜单的开发,

示例:

$menu = ‘{

“button”:[

{

“type” : “click”,

“name”:  “济南美食”,

“key” : “V1001_JINAN_FOOD”

},

{

“type” :”click”,

“name”:”济南美景”,

“key” :”V1002_JINAN_SENERY”

},

{

“name” :”商务合作”,

“sub_button”:[

{

“type”:”view”,

“name”:”联系我们”,

“url”: “http://tools.libaocai.com/about”

}

]

}

]

}’;

里面的V1001_JINAN_FOOD 和V1002_JINAN_SENERY 是我们定义的事件key。

在自定义菜单创建生效以后,用户点击济南美景、济南美食,触发的click事件,会推送给开发者,开发者就会接收到来自腾讯服务器推送过来的click事件,根据实际情况进行开发处理。

click事件xml代码:

<xml><ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[CLICK]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>

其中的EVENT 就是事件类型,例如CLICK,

EVENTKey 就是事件KEY值,与自定义菜单接口中的KEY值对应。

在wx_sample.php我们需要对接收的消息进行处理,主要是function responseMsg.

例如

public function responseMsg()
{
    $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;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[text]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";
        if($postObj->MsgType=='event'){
            if($postObj->Event == 'CLICK'){
                if($postObj->EventKey == 'V1001_JINAN_FOOD '){

                    $contentStr = "济南美食";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr);
                    echo $resultStr;
                }
                else if($postObj->EventKey == 'V1002_JINAN_SENERY  '){

                    $contentStr = "济南美景";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr);
                    echo $resultStr;
                }
            }
        }

    }else {
        echo "success";
        exit;
    }
}

补充说明

这里只是简单的处理回复单文本消息。

打赏

转载请注明:苏demo的别样人生 » 微信自定义菜单的click事件推送

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)