微信公众平台常用接口-接收用户普通消息
原创微信公众账号接收用户发送的常用的消息类型有文本(包括表情)、图片、语音、地理位置等。下面分别进行介绍。
文本消息
用户向微信公众账号发送文本消息的示例如图 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
- 上一篇:微信公众平台常用接口-消息交互原理分析
- 下一篇:微信公众平台常用接口-自动回复消息
阅读推荐
更多...- 了解:「比女人更了解女人」是对女性最大的尊重 2022-07-16
- 电子书引流的特点、优势及方法是什么? 2022-07-21
- 产品能给顾客带来的好处是解说重点——销售技巧 2023-03-04
- 从礼品到信任,朋友与客户的角色要随时切换 2023-05-22
- 小红书KOL 养成第一步:打造个人 IP,塑造一个可描述的形象 2022-06-28
- 销售产品不是你一个人的独角戏 2023-03-04
- 别说你的产品多优异,客户只在意它是否能解决问题「销售技巧」 2023-03-04
- 微商要巧借百度系列平台引流 2022-07-21
- 应对客户不同反应的策略——销售技巧 2023-03-04
- 田中道信:实践出真知,勤奋有回报——销售技巧 2023-03-04
- 入门方法进行微商文案的基础修炼 2022-07-21
- 业绩增长的规律,你知道吗?提高销售技巧 2023-05-19
- 销售绝招: 锚定效应:饥饿营销,让对方总想第一个得到 2023-05-20
- 破解异议的思路,提高销售技巧 2023-04-01
- 自己不出手,如何让客户主动成交呢?送你一个「权威营销法则」 2023-05-22
- 被忽略的客户:现在被忽略,却可能是未来的明日之星[销售秘籍建议收藏] 2023-05-22
- 接抛球法:如何四两拨千斤,轻松化解客户疑虑,让您的销售业绩高速增长! 2023-05-19
- 成功销售如何刘焙:有一种拼搏叫热爱[销售案例] 2023-04-01