根据微信http://mp.weixin.qq.com/wiki/index.php 接收消息提供的接口,本人把能接收的消息一一读取了出来,虽然可能会有用不到的,但全部读取出来比将来需用用的时候在找容易,下面代码是最原始的读取,也是本人在调整微信接口时写的,希望对你能有帮助。
这里做个广告,为了更快了解微信本来新建了一个QQ群,群名称是【微信开发技术交流:389075177】,专门用于微信开发和交流,欢迎正在研究微信的童鞋一起加入,一起学习,一起进步!
<%@Language="VBScript" CodePage="65001"%>
<%
'**********************************************
'注意事项
'ASP文件需要以UTF-8的格式保存,否则乱码.
'以下两行代码是为了通过微信接口验证的。
'response.write request("echostr")
'response.end
'**********************************************
dim ToUserName '开发者微信号
dim FromUserName'发送方帐号(一个OpenID)
dim CreateTime '消息创建时间(整型)
dim MsgType 'text
dim Content '文本消息内容
set xml_dom = Server.CreateObject("MSXML2.DOMDocument")'此处根据您的实际服务器情况改写
xml_dom.load request
FromUserName=xml_dom.getelementsbytagname("FromUserName").item(0).text '发送者微信账号
ToUserName=xml_dom.getelementsbytagname("ToUserName").item(0).text '接收者微信账号。即我们的公众平台账号。
MsgType=xml_dom.getelementsbytagname("MsgType").item(0).Text
select case MsgType
case "text" '文本消息
KeyWord=xml_dom.getelementsbytagname("Content").item(0).text
'到数据库查询回复
Sendsql="select * from WeiXin_KeyWord where ReceiveMsgType="&Receivers("id")&" and KeyWord='"&KeyWord&"'"
SendRs.open SendSql,conn,1,3
If Not SendRs.eof Then
'strsend=text(fromusername,tousername,SendRs("ReplyText"))
strsend=ReplyMessage(fromusername,tousername,SendRs("id"))
Else
strsend=text(fromusername,tousername,"你说的是:"&KeyWord)
End If
SendRs.close
case "image" '图片消息
PicUrl=xml_dom.getelementsbytagname("PicUrl").item(0).Text
MediaId=xml_dom.getelementsbytagname("MediaId").item(0).Text
MsgId=xml_dom.getelementsbytagname("MsgId").item(0).Text
Content=" 图片URL;"&PicUrl
Content=Content&" 图片MediaId:"&MediaId
Content=Content&" 图片MsgId:"&MsgId
strsend=text(fromusername,tousername,Content)
case "voice" '语音消息
strsend=text(fromusername,tousername,"你发了我图片语音消息")
MediaId=xml_dom.getelementsbytagname("MediaId").item(0).Text
'语音格式,如amr,speex等
VoiceFormat=xml_dom.getelementsbytagname("Format").item(0).Text
MsgId=xml_dom.getelementsbytagname("MsgId").item(0).Text
Content=" 您发送给我的语音信息\n"
Content=Content&" 语音格式:"&VoiceFormat
Content=Content&" MediaId:"&MediaId
Content=Content&" 此消息ID消息id:"&MsgId
strsend=text(fromusername,tousername,Content)
case "location" '地理位置
Location_X=xml_dom.getelementsbytagname("Location_X").item(0).Text
Location_Y=xml_dom.getelementsbytagname("Location_Y").item(0).Text
'地理位置信息
Labelxxxx=xml_dom.getelementsbytagname("Label").item(0).Text
'地图缩放大小
Scale=xml_dom.getelementsbytagname("Scale").item(0).Text
MsgId=xml_dom.getelementsbytagname("MsgId").item(0).Text
Content=" 您的地理位置:"&Labelxxxx
Content=Content&" <br>地理位置经度:"&Location_Y
Content=Content&" <br>地理位置维度:"&Location_X
Content=Content&" <br>此消息ID消息id:"&MsgId
strsend=text(fromusername,tousername,Content)
case "video" '视频消息
MediaId=xml_dom.getelementsbytagname("MediaId").item(0).Text
'视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
ThumbMediaId=xml_dom.getelementsbytagname("ThumbMediaId").item(0).Text
MsgId=xml_dom.getelementsbytagname("MsgId").item(0).Text
Content=" 你发了我图片视频消息"
Content=Content&" <br>MediaId:"&MediaId
Content=Content&" <br>缩略图:"&ThumbMediaId
Content=Content&" <br>此消息ID消息id:"&MsgId
strsend=text(fromusername,tousername,Content)
case "link" '链接消息
strsend=text(fromusername,tousername,"你发了我图片链接消息")
Title=xml_dom.getelementsbytagname("Title").item(0).Text
Description=xml_dom.getelementsbytagname("Description").item(0).Text
Url=xml_dom.getelementsbytagname("Url").item(0).Text
MsgId=xml_dom.getelementsbytagname("MsgId").item(0).Text
case "event" '事件
strEventType=xml_dom.getelementsbytagname("Event").item(0).text '微信事件
if strEventType="subscribe" then '表示订阅微信公众平台
strsend=""
ElseIf strEventType="unsubscribe" Then'取消订阅
strsend=""
ElseIf strEventType="LOCATION" Then'上报地理位置
'地理位置纬度
Latitude=xml_dom.getelementsbytagname("Latitude").item(0).Text
'地理位置经度
Longitude=xml_dom.getelementsbytagname("Longitude").item(0).Text
'地理位置精度
Precision=xml_dom.getelementsbytagname("Precision").item(0).Text
strsend=gz(FromUserName,ToUserName)
ElseIf strEventType="CLICK" Then'自定义菜单事件
'事件KEY值,与自定义菜单接口中KEY值对应
EventKey=xml_dom.getelementsbytagname("EventKey").item(0).Text
strsend=gz(FromUserName,ToUserName)
ElseIf strEventType="VIEW" Then'点击菜单跳转链接时的事件推送
'事件KEY值,设置的跳转URL
EventKey=xml_dom.getelementsbytagname("EventKey").item(0).Text
strsend=gz(FromUserName,ToUserName)
Else
strsend=text(fromusername,tousername,"我不知什么事件")
end If
end select
response.write strsend
set xml_dom=Nothing
'*************以下代码只是为了调试作用***********
'由于asp不好调试,所有把代码输出到文本文件中,这样就容易多啦!!!
filepath=server.mappath(".")&"\wx.txt"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
set fopen=fso.OpenTextFile(filepath, 8 ,true)
fopen.writeline(strsend)
set fso=nothing
set fopen=Nothing
'****************调试结束************************
'回复文本消息
function text(fromusername,tousername,returnstr)
text="<xml>" &_
"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>" &_
"<FromUserName><![CDATA["&tousername&"]]></FromUserName>" &_
"<CreateTime>"&now&"</CreateTime>" &_
"<MsgType><![CDATA[text]]></MsgType>" &_
"<Content><![CDATA[" & Replace(returnstr,"<br>",VBCRLF) & "]]></Content>" &_
"<FuncFlag>0<FuncFlag>" &_
"</xml>"
end Function
%>