




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】微信开发消息应答的技巧有哪些
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this
is
a
test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11886.jpg
图片消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this
is
a
url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>语音消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml><xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[腾讯微信团队]]></Recognition>
<MsgId>1234567890123456</MsgId>
</xml><xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11889.jpg<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[shortvideo]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>地理位置消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11891.jpg链接消息<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>/upload/information/20201208/260/11893.jpg/upload/information/20201208/260/11894.jpg
///
<summary>
///
获取用户发送的消息
///
</summary>
///
<param
name="postString"></param>
private
void
ResponseXML(string
postString)
{
//使用XMLDocument加载信息结构
XmlDocument
xmlDoc
=
new
XmlDocument();
xmlDoc.LoadXml(postString);
XmlElement
rootElement
=
xmlDoc.DocumentElement;//获取文档的根
XmlNode
MsgType
=
rootElement.SelectSingleNode("MsgType");
//获取消息的文本类型
RequestXML
requestXML
=
new
RequestXML();//声明实例,获取各个属性并赋值
requestXML.ToUserName
=
rootElement.SelectSingleNode("ToUserName").InnerText;//公众号
requestXML.FromUserName
=
rootElement.SelectSingleNode("FromUserName").InnerText;//用户
requestXML.CreateTime
=
rootElement.SelectSingleNode("CreateTime").InnerText;//创建时间
requestXML.MsgType
=
MsgType.InnerText;//消息类型
///对消息的不同类型进行赋值
if
(requestXML.MsgType
==
"text")
{
//赋值文本信息内容
requestXML.Content
=
rootElement.SelectSingleNode("Content").InnerText;
}
if
(requestXML.MsgType.Trim()
==
"location")
{
///赋值地理位置纬度,经度,地图缩放比例,地理位置说明
requestXML.Location_X
=
rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y
=
rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale
=
rootElement.SelectSingleNode("Scale").InnerText;
requestXML.Label
=
rootElement.SelectSingleNode("Label").InnerText;
}
if
(requestXML.MsgType.Trim().ToLower()
==
"event")
{
///赋值事件名称和事件key值
requestXML.EventName
=
rootElement.SelectSingleNode("Event").InnerText;
requestXML.EventKey
=
rootElement.SelectSingleNode("EventKey").InnerText;
}
if
(requestXML.MsgType.Trim().ToLower()
==
"voice")
{
///赋值语音识别结果,赋值之前一定要记得在开发者模式下,把语音识别功能开启,否则获取不到
requestXML.Recognition
=
rootElement.SelectSingleNode("Recognition").InnerText;
}
ResponseMsg(requestXML);
}语音识别功能开启如下:/upload/information/20201208/260/11895.jpg
///
<summary>
///
接收消息的实体类
///
</summary>
public
class
RequestXML
{
private
String
toUserName
=
String.Empty;
///
<summary>
///
本公众号
///
</summary>
public
String
ToUserName{get;set;}
///
<summary>
///
用户微信号
///
</summary>
public
String
FromUserName{get;set;}
///
<summary>
///
创建时间
///
</summary>
public
String
CreateTime{get;set;}
///
<summary>
///
信息类型
///
</summary>
public
String
MsgType{get;set;}
///
<summary>
///
信息内容
///
</summary>
public
String
Content{get;set;}
/*以下为事件类型的消息特有的属性*/
///
<summary>
///
事件名称
///
</summary>
public
String
EventName{get;set;}
///
<summary>
///
事件值
///
</summary>
public
string
EventKey
{
get;
set;
}
/*以下为图文类型的消息特有的属性*/
///
<summary>
///
图文消息的个数
///
</summary>
public
int
ArticleCount
{
get;
set;
}
///
<summary>
///
图文消息的标题
///
</summary>
public
string
Title
{
get;
set;
}
///
<summary>
///
图文消息的简介
///
</summary>
public
string
Description
{
get;
set;
}
///
<summary>
///
图文消息图片的链接地址
///
</summary>
public
string
PicUrl
{
get;
set;
}
///
<summary>
///
图文消息详情链接地址
///
</summary>
public
string
Url
{
get;
set;
}
///
<summary>
///
图文消息集合
///
</summary>
public
List<RequestXML>
Articles
{
get;
set;}
/*以下为地理位置类型的消息特有的属性*/
///
<summary>
///
地理位置纬度
///
</summary>
public
String
Location_X
{
get;
set;
}
///
<summary>
///
地理位置经度
///
</summary>
public
String
Location_Y
{
get;
set;
}
///
<summary>
///
地图缩放比例
///
</summary>
public
String
Scale
{
get;
set;
}
///
<summary>
///
地图位置说明
///
</summary>
public
String
Label
{
get;
set;
}
///
<summary>
///
语音消息特有字段
///
</summary>
public
String
Recognition
{
get;
set;
}
}继续关注
ResponseMsg(requestXML);方法如下
private
void
ResponseMsg(RequestXML
requestXML)
{
string
MsgType
=
requestXML.MsgType;
try
{
//根据消息类型判断发送何种类型消息
switch
(MsgType)
{
case
"text":
SendTextCase(requestXML);//发送文本消息
break;
case
"event"://发送事件消息
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("subscribe"))
{
SendWelComeMsg(requestXML);//关注时返回的图文消息
}
else
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("CLICK"))
{
SendEventMsg(requestXML);//发送事件消息
}
break;
case
"voice":
SendVoiceMsg(requestXML);//发送语音消息
break;
case
"location"://发送位置消息
SendMapMsg(requestXML);
break;
default:
break;
}
}
catch
(Exception
ex)
{
HttpContext.Current.Response.Write(ex.ToString());
}
}先来关注发送文本消息,SendTextCase(requestXML);//发送文本消息
///
<summary>
///
发送文本
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendTextCase(RequestXML
requestXML)
{
string
responseContent
=
FormatTextXML(requestXML.FromUserName,
requestXML.ToUserName,
requestXML.Content);
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
}FormatTextXML方法制定格式
///
<summary>
///
返回格式化的Xml格式内容
///
</summary>
///
<param
name="p1">公众号</param>
///
<param
name="p2">用户号</param>
///
<param
name="p3">回复内容</param>
///
<returns></returns>
private
string
FormatTextXML(string
p1,
string
p2,
string
p3)
{
return
"<xml><ToUserName><![CDATA["
+
p1
+
"]]></ToUserName><FromUserName><![CDATA["
+
p2
+
"]]></FromUserName><CreateTime>"
+
DateTime.Now.Subtract(new
DateTime(1970,
1,
1,
8,
0,
0)).TotalSeconds.ToString()
+
"</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA["
+
p3
+
"]]></Content><FuncFlag>1</FuncFlag></xml>";
}这样就能实现消息的应答,如果用户点击的按钮,如下代码:
case
"event"://发送事件消息
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("subscribe"))
{
SendWelComeMsg(requestXML);//关注时返回的图文消息
}
else
if
(!string.IsNullOrWhiteSpace(requestXML.EventName)
&&
requestXML.EventName.ToString().Trim().Equals("CLICK"))
{
SendEventMsg(requestXML);//发送事件消息
}
break;
///
<summary>
///
发送响应事件消息
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendEventMsg(RequestXML
requestXML)
{
string
keyStr
=
requestXML.EventKey.ToString();
switch
(keyStr)
{
case
"mypay":
SendPayDetails(requestXML);//发送薪资账单
break;
case
"tianqiyubao":
SendWeaterMessage(requestXML);//发送天气预报
break;
case
"kaixinyixiao":
SendKaiXinMessage(requestXML);//发送开心一笑结果集
break;
case
"updateMessage":
SendUpdateMessage(requestXML);//发送修改信息链接
break;
case
"yuangonghuodong":
SendYuanGongHuoDong(requestXML);//发送学生活动
break;
case
"yuangongtongzhi":
SendYuanGongTongZhi(requestXML);//发送员工通知
break;
case
"youwenbida":
SendWenti(requestXML);//发送员工提交问题链接
break;
case
"mywen":
SendWentiList(requestXML);//发送问题列表链接
break;
case
"PhoneSerices":
SendKeFuMessage(requestXML);//接入客服
break;
default:
String
responseContent
=
String.Empty;
responseContent
=
FormatTextXML(requestXML.FromUserName,
requestXML.ToUserName,"此功能暂未开放!敬请期待!");
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
break;
}
}SendWelComeMsg(requestXML);//关注时返回的图文消息
///
<summary>
///
发送关注时的图文消息
///
</summary>
///
<param
name="requestXML"></param>
private
void
SendWelComeMsg(RequestXML
requestXML)
{
String
responseContent
=
String.Empty;
string
newdate
=
DateTime.Now.Subtract(new
DateTime(1970,
1,
1,
8,
0,
0)).TotalSeconds.ToString();
string
PUrlfileName
=
"/weixin/welcome.jpg";
responseContent
=
string.Format(Message_News_Main,
requestXML.FromUserName,
requestXML.ToUserName,
newdate,
"1",
string.Format(Message_News_Item,
"欢迎关注德桥员工服务中心",
"苏州德桥人力资源创立于2002年...",
PUrlfileName,
"/weixin/WxGsjianjie.aspx"));
HttpContext.Current.Response.ContentType
=
"text/xml";
HttpContext.Current.Response.ContentEncoding
=
Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
}Message_News_Main和Message_News_Item是图文消息格式化
///
<summary>
///
返回图文消息主体
///
<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年CFA特许金融分析师考试金融风险管理实务模拟试题集
- 砂石设备租用合同范本
- 2025年乡村医生考试题库:农村慢性病管理慢性病康复护理试题
- 2025年征信信用修复流程法律法规考试试题
- 2025年成人高考《语文》语言逻辑阅读技巧训练题库试卷
- 2025年宠物训导师职业能力测试卷:宠物训导行业市场前景分析试题
- 2025年房地产经纪人职业资格考试模拟试卷:房地产经纪人职业资格考试冲刺练习
- 商场文员商铺合同范本
- 液压支柱维修合同范本
- 公家房屋装修合同范本
- 新增值税法的变化要点与实务要领
- 2024年电子商务物流挑战试题及答案
- 2025年高考英语二轮复习专题05 阅读七选五(练习)(解析版)
- 门式架搭设方案
- 铁路网络安全知识培训
- 煤矿事故案例警示
- 2025年南通师范高等专科学校高职单招(数学)历年真题考点含答案解析
- 第10课 金与南宋对峙 教案2024-2025学年七年级历史下册新课标
- 2025年自来水笔试题及答案
- 2025年郑州铁路职业技术学院单招职业适应性测试题库及参考答案1套
- 树木移植的施工方案
评论
0/150
提交评论