首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》9.1 客服接口

关灯直达底部

当用户和公众号产生特定动作的交互时,微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前为48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

目前允许的动作列表如下。

1)用户发送信息。

2)点击自定义菜单(仅有点击推事件、扫码推事件、扫码推事件且弹出“消息接收中”提示框这三种菜单类型会触发客服接口)。

3)关注公众号。

4)扫描二维码。

5)支付成功。

6)用户维权。

开发者可以直接构造文本和图文消息回复给用户。而音乐、图片、语音、视频这四种消息则需要先获得素材的media_id,这可以从用户发送过来的消息中获得,也可以通过上传多媒体文件来获得。

发送客服消息的接口如下。


https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN  

发送各种类型的客服消息介绍如下。

1.向用户发送文本

向用户发送文本的数据格式如下。


{    "touser":"OPENID",    "msgtype":"text",    "text":    {         "content":"Hello World"    }}  

该数据的参数说明如表9-1所示。

表9-1 客服接口文本消息的参数说明

向用户发送文本消息的代码实现如下。


$access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVfA36tftME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag";$openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";$data = '{    "touser":"'.$openid.'",    "msgtype":"text",    "text":    {         "content":"Hello World"    }}';$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$result = https_request($url, $data);var_dump($result);function https_request($url, $data){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    curl_setopt($curl, CURLOPT_POST, 1);    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $result = curl_exec($curl);    if (curl_errno($curl)) {        return 'Errno'.curl_error($curl);    }    curl_close($curl);    return $result;}  

上述代码执行后,效果如图9-1所示。

2.向用户发送图文

向用户发送图文时,发送的数据格式如下。


{    "touser":"OPENID",    "msgtype":"news",    "news":{        "articles": [        {            "title":"Happy Day",            "description":"Is Really A Happy Day",            "url":"URL",            "picurl":"PIC_URL"        },        {            "title":"Happy Day",            "description":"Is Really A Happy Day",            "url":"URL",            "picurl":"PIC_URL"        }        ]    }}  

该数据的参数说明如表9-2所示。

表9-2 客服接口图文消息的参数说明

向用户发送图文消息的代码实现如下。


$access_token = "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oLVPpjqs9BhvzwPj5A-vTYAX3GLc";// 发送图文$data = '{    "touser": "'.$openid.'",     "msgtype": "news",     "news": {        "articles": [            {                "title": "深圳天气预报",                 "description": "",                 "picurl": "",                 "url": ""            },             {                "title": "12月04日 周三 13℃~23℃ 多云 微风",                 "description": "",                 "picurl": "http:// discuz.comli.com/weixin/weather/d01.jpg",                 "url": ""            },             {                "title": "12月05日 周四 16℃~24℃ 晴 微风",                 "description": "",                 "picurl": "http:// discuz.comli.com/weixin/weather/d00.jpg",                 "url": ""            },             {                "title": "12月06日 周五 16℃~24℃ 多云 微风",                 "description": "",                 "picurl": "http:// discuz.comli.com/weixin/weather/d01.jpg",                 "url": ""            }        ]    }}';$result = https_request($url,$data);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;} 

上述代码执行后,效果如图9-2所示。

图9-1 微信公众号发送文本消息

图9-2 微信公众号发送图文消息

3.向用户发送音乐

向用户发送音乐时,数据格式如下。


{    "touser":"OPENID",    "msgtype":"music",    "music":    {        "title":"MUSIC_TITLE",        "description":"MUSIC_DESCRIPTION",        "musicurl":"MUSIC_URL",        "hqmusicurl":"HQ_MUSIC_URL",        "thumb_media_id":"THUMB_MEDIA_ID"     }}  

该数据的参数说明如表9-3所示。

表9-3 客服接口音乐消息的参数说明

发送音乐消息的代码实现如下。


$access_token = "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oLVPpjqs9BhvzwPj5A-vTYAX3GLc";// 发送音乐$data = '{    "touser": "'.$openid.'",     "msgtype": "music",     "music": {        "title": "最炫民族风",         "description": "凤凰传奇",         "musicurl": "http:// 122.228.226.40/music/zxmzf.mp3",         "hqmusicurl": "http:// 122.228.226.40/music/zxmzf.mp3",         "thumb_media_id": "b8as-GpA_EFqVoPY7vPT3fpVZBWJb27K77De2dc_0FZml-UExlTMP7        IVMz89uh3W"    }}';$result = https_request($url,$data);var_dump($result);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;}  

上述代码执行后,效果如图9-3所示。

4.向用户发送图片

向用户发送图片时,数据格式如下。


{    "touser":"OPENID",    "msgtype":"image",    "image":    {        "media_id":"MEDIA_ID"    }}  

该数据的参数说明如表9-4所示。

表9-4 客服接口图片消息的参数说明

发送图片消息的代码实现如下。


$access_token = "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oLVPpjqs9BhvzwPj5A-vTYAX3GLc";// 发送图片$data = '{    "touser":"'.$openid.'",    "msgtype":"image",    "image":    {        "media_id":"jViS8sQUXIh6rTdkz2qUOD5pvChYpp50i9rsLR4YnCm-pqdpiHhz6xbN2KAboScV"    }}';$result = https_request($url,$data);var_dump($result);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;}  

上述代码执行后,效果如图9-4所示。

图9-3 微信公众号发送音乐消息

图9-4 微信公众号发送图片消息

5.向用户发送语音

向用户发送语音时,数据格式如下。


{    "touser":"OPENID",    "msgtype":"voice",    "voice":    {        "media_id":"MEDIA_ID"    }}  

该数据的参数说明如表9-5所示。

表9-5 客服接口语音消息的参数说明

向用户发送语音消息的代码实现如下。


$access_token = "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oLVPpjqs9BhvzwPj5A-vTYAX3GLc";// 发送语音$data= '{    "touser": "'.$openid.'",     "msgtype": "voice",     "voice": {        "media_id": "gAn8fV1hQB8mtLf6X2YTN-3ySaBMlzvbCLAzFUhPQDRVrWA1o9tRCnzxa4bEzUiM"    }}';$result = https_request($url,$data);var_dump($result);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;} 

上述代码执行后,效果如图9-5所示。

6.向用户发送视频

向用户发送视频时,数据格式如下。


{    "touser":"OPENID",    "msgtype":"video",    "video":    {        "media_id":"MEDIA_ID",        "title":"TITLE",        "description":"DESCRIPTION"    }}  

该数据的参数说明如表9-6所示。

表9-6 客服接口视频消息的参数说明

向用户发送视频消息的代码实现如下。


$access_token = "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oLVPpjqs9BhvzwPj5A-vTYAX3GLc";// 发送视频$data = '{    "touser": "'.$openid.'",     "msgtype": "video",     "video": {        "media_id": "zbpy8wXj2UtIKB_56QUddCYLmWPLVeHoKqE94h2-nB9weSU65nVKTpE909Mvi8b5",        "thumb_media_id": "b8as-GpA_EFqVoPY7vPT3fpVZBWJb27K77De2dc_0FZml-UExlTMP7IVMz        89uh3W"    }}';$result = https_request($url,$data);var_dump($result);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;}  

上述代码执行后,效果如图9-6所示。

图9-5 微信公众号发送语音消息

图9-6 微信公众号发送视频消息

7.向用户发送卡券

向用户发送卡券时,数据格式如下。


{    "touser":"oiPuduCHIBb2aHvZoqSm1t7KbXtw",    "msgtype":"wxcard",    "wxcard":{        "card_id":"piPuduM3NHSnSMYgWS-oqGFQbBjM"    }}  

该数据的参数说明如表9-7所示。

表9-7 客服接口卡券消息的参数说明

向用户发送卡券消息的代码实现如下。


$access_token = "O1AEwcSsQQlPjGlDdI-f_yd8u2mRmpYY_knJaqQ5t5Wl9Wr_TXeWaI0--JPwU3hcjX1GdtpjHn4tAJFmgKeJKOH9K4GPVjcyhR1utGkEAd4RSNiAAAXYT";$url = "https:// api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$openid = "oiPuduCHIBb2aHvZoqSm1t7KbXtw";// 发送卡券$data = '{    "touser":"'.$openid.'",    "msgtype":"wxcard",    "wxcard":{        "card_id":"piPuduM3NHSnSMYgWS-oqGFQbBjM"    }}';$result = https_request($url,$data);var_dump($result);function https_request($url, $data = null){    $curl = curl_init;    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;}  

上述代码执行后,效果如图9-7所示。

图9-7 微信公众号发送卡券消息