微信公众平台常用接口-接收用户普通消息
原创微信公众账号接收用户发送的常用的消息类型有文本(包括表情)、图片、语音、地理位置等。下面分别进行介绍。
文本消息
用户向微信公众账号发送文本消息的示例如图 4-1 所示。
图 4-1 用户发送文本消息
用户发送文本消息时,微信公众账号接收到的 XML 数据格式如下所示:
用户发送的文本消息的参数及描述如表 4-1 所示。
表 4-1 文本消息的参数及描述
图片消息
用户向微信公众账号发送图片消息的示例如图 4-2 所示。
图 4-2 用户发送图片消息
用户发送图片消息时,微信公众账号接收到的 XML 数据格式如下所示:
用户发送图片消息的参数及描述如表 4-2 所示。
表 4-2 图片消息的参数及描述
语音消息
用户向微信公众账号发送语音消息的示例如图 4-3 所示。
图 4-3 用户发送语音消息
用户发送语音消息时,微信公众账号接收到的 XML 数据格式如下所示:
用户发送的语音消息的参数及描述如表 4-3 所示。
表 4-3 语音消息的参数及描述
地理位置消息
用户向微信公众账号发送地理位置消息的示例如图 4-4 所示。
图 4-4 用户发送地理位置消息
用户发送地理位置消息时,微信公众账号接收到的 XML 数据格式如下所示:
用户发送的地理位置消息的参数及描述如表 4-4 所示。
表 4-4 地理位置消息的参数及描述
接收消息代码实现
本节将上面的各种消息类型用代码实现并且做出相应的回复处理。代码如下所示:
<?php
//
// 接收用户消息
// 微信公众账号接收到用户的消息类型判断
//
define(「TOKEN」, 「weixin」);
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET[『echostr』])) {
$wechatObj->responseMsg();
}else{
$wechatObj->valid();
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET[「echostr」];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET[「signature」];
$timestamp = $_GET[「timestamp」];
$nonce = $_GET[「nonce」];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
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」: //文本消息
$result = $this->receiveText($postObj);
break;
case 「image」: //图片消息
$result = $this->receiveImage($postObj);
break;
case 「voice」: //语音消息
$result = $this->receiveVoice($postObj);
break;
case 「video」: //视频消息
$result = $this->receiveVideo($postObj);
break;
case 「location」://位置消息
$result = $this->receiveLocation($postObj);
break;
case 「link」: //链接消息
$result = $this->receiveLink($postObj);
break;
default:
$result = 「unknow msg type: 」.$RX_TYPE;
break;
}
echo $result;
}else {
echo 「」;
exit;
}
}
/*
* 接收文本消息
*/
private function receiveText($object)
{
$content = 「你发送的是文本,内容为:」.$object->Content;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 接收图片消息
*/
private function receiveImage($object)
{
$content = 「你发送的是图片,地址为:」.$object->PicUrl;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 接收语音消息
*/
private function receiveVoice($object)
{
$content = 「你发送的是语音,媒体 ID 为:」.$object->MediaId;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 接收视频消息
*/
private function receiveVideo($object)
{
$content = 「你发送的是视频,媒体 ID 为:」.$object->MediaId;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 接收位置消息
*/
private function receiveLocation($object)
{
$content = 「你发送的是位置,纬度为:」.$object->Location_X.「;经度为:
」.$object->Location_Y.「;缩放级别为:」.$object->Scale.「;位置为:」.$object->Label;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 接收链接消息
*/
private function receiveLink($object)
{
$content = 「你发送的是链接,标题为:」.$object->Title.「;内容为:
」.$object->Description.「;链接地址为:」.$object->Url;
$result = $this->transmitText($object, $content);
return $result;
}
/*
* 回复文本消息
*/
private function transmitText($object, $content)
{
$textTpl = 「
在 responseMsg()方法中,先提取消息类型 $postObj->MsgType,从而实现各种消息类型的分离。在类 wechatCallbackapiTest 中,为每种消息类型定义了接收方法函数。在每个方法中,返回消息的主要特征值,组成文本信息作为内容回复。
版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/8919
- 上一篇:微信公众平台常用接口-消息交互原理分析
- 下一篇:微信公众平台常用接口-自动回复消息
阅读推荐
更多...- 阿里铁军的「晚分享」机制「销售技巧」 2023-03-01
- 如何激发消费者参与传播? 2022-07-28
- 销售说话为什么需要套路,提高销售技巧 2023-04-14
- 为了客户满意,我们必须做到「想客户所想」「销售技巧」 2023-03-04
- 顾客说「没带钱」时无须放弃销售 2023-03-04
- 客户没有购买目标,我们帮他寻找方向「销售技巧」 2023-03-04
- 约见客户:这几个声音技巧要记牢 2023-05-22
- [微信创业]怎样才能成为受欢迎的人? 2023-07-11
- 别让自己站在顾客的对立面 2023-07-13
- 遂昌成为绿色企业「创业追逐地」 2024-02-12
- 品牌力量:说服客户的「神助攻」「销售技巧」 2023-03-02
- 微信——亿万级用户逼你致富 2023-07-16
- 病毒式营销——《煎饼侠》傍上《钢铁侠》 2022-07-23
- 原一平:让故事说服客户 2023-03-24
- 改善现金流的重要武器:股权融资 2023-07-16
- 大客户销售,针对善于社交的孔雀型老板,都有哪些点需要注意呢? 2023-05-22
- 直播营销的常用平台有哪些? 2022-07-01
- 公众号名字不利于推广怎么办 2023-07-02