微信公众号,用户消息接收与回复

韩昊杰
2022-04-07 / 0 评论 / 153 阅读 / 正在检测是否收录...
当用户在公众号内发送消息时,我们可以在服务器配置完好的前提下,通过相关代码,接收用户发送的信息,并予以相应的回复!

代码如下

<?php

// 接收用户发送消息(二选一)
// $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//全局变量  存的用户的发送的信息 
$postStr = file_get_contents("php://input");    // 但是有的服务器 如果使用 $GLOBALS 接不到值 使用
// 存储用户发送的消息
file_put_contents('data.txt',$postStr);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);// 数据对象
$fromUsername = $postObj->FromUserName;    // 发送者 信息
$toUsername = $postObj->ToUserName;        // 接受者  信息 公众号
$msgtype = $postObj->MsgType;         // 获取消息的类型 
$keyword = trim($postObj->Content);        // 接收发送的文本
$EventKey = $postObj->EventKey;        // 获取click事件的值 公众号

// 按键回复
if($EventKey == 'music'){
    echo  '<xml>
        <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
        <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
        <CreateTime>'.time().'</CreateTime>
        <MsgType><![CDATA[music]]></MsgType>
        <Music>
        <Title><![CDATA[我要找到你]]></Title>
        <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description>
        <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl>
        <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl>
        </Music>
        </xml>';
}

// 接收消息回复
switch($keyword){
    case 1:
        // 回复文本 
        $str = '<xml> 
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> 
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName> 
            <CreateTime>'.time().'</CreateTime> 
            <MsgType><![CDATA[text]]></MsgType> 
            <Content><![CDATA[世界很大,我想去看看]]></Content> 
            </xml>';
        break;
    case 2:
        // 回复图片消息 
        $str = '<xml>
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
            <CreateTime>'.time().'</CreateTime>
            <MsgType><![CDATA[image]]></MsgType>
            <Image>
            <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的图片id]]></MediaId>
            </Image>
            </xml>';
        break;
    case 3:
        // 回复语音消息
        $str = '<xml>
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
            <CreateTime>'.time().'</CreateTime>
            <MsgType><![CDATA[voice]]></MsgType>
            <Voice>
            <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的语音消息id]]></MediaId>
            </Voice>
            </xml>';
        break;
    case 4:
        // 回复视频消息
        $str = '<xml>
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
            <CreateTime>'.time().'</CreateTime>
            <MsgType><![CDATA[video]]></MsgType>
            <Video>
            <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的视频消息id]]></MediaId>
            <Title><![CDATA[那些年]]></Title>
            <Description><![CDATA[回不去的曾经!]]></Description>
            </Video> 
            </xml>';
        break;
    case 5:
        // 回复音乐消息
        $str = '<xml>
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
            <CreateTime>'.time().'</CreateTime>
            <MsgType><![CDATA[music]]></MsgType>
            <Music>
            <Title><![CDATA[我要找到你]]></Title>
            <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description>
            <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl>
            <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl>
            </Music>
            </xml>';
        break;
    // 回复图文消息
    case 6:
        $str = '<xml>
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName>
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName>
            <CreateTime>'.time().'</CreateTime>
            <MsgType><![CDATA[news]]></MsgType>
            <ArticleCount>1</ArticleCount>
            <Articles>
            <item>
            <Title><![CDATA[图文消息标题:往前走,亦或回头]]></Title> 
            <Description><![CDATA[图文消息描述:一生的旅程]]></Description>
            <PicUrl><![CDATA[图片链接,支持JPG、PNG格式,较好的效果为大图360200,小图200200]]></PicUrl>
            <Url><![CDATA[点击图文消息跳转链接]]></Url>
                </item>
            </Articles>
            </xml>';
        break;
    default:
        // 回复文本 
        $str = '<xml> 
            <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> 
            <FromUserName><![CDATA['.$toUsername.']]></FromUserName> 
            <CreateTime>'.time().'</CreateTime> 
            <MsgType><![CDATA[text]]></MsgType> 
            <Content><![CDATA[请回复数字:【1 2 3 4 5 6】以体验不同的功能]]></Content> 
            </xml>';
        break;
}

echo $str;

0

评论 (0)

取消