您的位置:首页 > 编程语言 > ASP

asp微信公众号自动回复开发案列之新闻查询机器人

2016-04-09 20:37 471 查看
<%
'**********************************************
'ASP文件需要以UTF-8的格式保存,否则乱码.
'**********************************************

'容错处理
On Error Resume Next

'快速个性化设置
title="某某微信号:新闻查询机器人"		'查询标题
tiaoshu="20"					'显示条数建议20

'查询说明:输入后台设置的条件查询+后台设置的说明
fawoo="查询帮助:"&vbcrlf
fawoo=fawoo&"发: @关键词 查看 [指定关键词的新闻] "&vbcrlf
fawoo=fawoo&"例: @足球 查看 [足球 新闻] "&vbcrlf

'获得echostrs用于接口绑定
echostrs = request("echostr")
if len(echostrs)>0 then
response.write echostrs
response.end()
end if

'得到服务器时间
times=FormatDateTime(Now(),0)					'服务器时间
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		'获得微信的信息类型

msgtype=LCase(msgtype)		'转小写,防止大写小写不匹配

'如果不是MSXML那就接受POST,用于其他第三方接口POST给我们的数据
if msgtype="" then
msgtype="text"
FromUserName=request("FromUserName")
ToUserName=request("ToUserName")
end if

Select Case msgtype

Case "text"
'
msgtext=xml_dom.getelementsbytagname("Content").item(0).text		'获得微信的信息内容
msgidid=xml_dom.getelementsbytagname("MsgId").item(0).text		'获得微信的信息单条微信唯一ID

if msgtext="" then
msgidid=""
msgtext=request("Content")
end if

msgtext=replace(msgtext,"@","")

tite="["&msgtext&"]最新新闻"
urls="http://news.baidu.com/ns?word="&msgtext&"&ie=gb2312&cl=2&rn="&tiaoshu&"&ct=0&tn=newsrss&class=0"

Content=tite&""&vbcrlf&getnews(urls,tousername,tite)

Content=Content&vbcrlf&"检索结果来源:news.baidu.com"

Case "voice"
Content="你的声音很甜美,只是客服美眉暂时无法识别你的【语音】信息!"&vbcrlf&fawoo		'获得语音回复
Case "image"
Content="这是传说中的艳照吧,客服美眉我可是女的,不感兴趣哦!"&vbcrlf&fawoo		'获得图片回复
Case "event"
strEventType=xml_dom.getelementsbytagname("Event").item(0).text		'微信事件
strEventType=LCase(strEventType)					'转小写,防止大写小写不匹配
if strEventType="subscribe" then 					'关注微信
Content="非常感谢你【关注】"&title&"微信自动回复查询机器人!"&vbcrlf&fawoo
ElseIf strEventType="unsubscribe" Then					'取消关注
Content="呜呜呜,干嘛取消【关注】我们!难道我不漂亮么?"&vbcrlf&fawoo
ElseIf strEventType="click" Then					'鼠标点击
Eventvalue=xml_dom.getelementsbytagname("EventKey").item(0).text		'微信事件
Content="鼠标点击事件【“"&Eventvalue&"”】?"&vbcrlf&fawoo
end if
Case "video"
Content="莫非这就是传说中的A片?姐姐我没空看哦!有话直说吧! "&vbcrlf&fawoo		'获得视频回复
Case "music"
Content="哇,很好听的音乐!不过姐很忙没空听,有话直说吧!"&vbcrlf&fawoo		'获得音乐回复
Case "news"
Content="两个凡是:凡是网址都是病毒,凡是新闻我都不会去关注!"&vbcrlf&fawoo		'获得新闻回复
Case "link"
Content="两个凡是:凡是网址都是病毒,凡是网址我都不会去打开!"&vbcrlf&fawoo		'获得链接回复
Case "location"
Content="哎呀喂,别告诉我你的位置哇!我又不会来敲门!"&vbcrlf&fawoo		'获得定位回复
Case Else
Content="客服美眉暂时无法识别你的【"&msgtype&"】信息!"&vbcrlf&fawoo	'获得其他格式信息回复
End Select

if len(Content)>1 then
response.write text(fromusername,tousername,Content)
else
response.write text(fromusername,tousername,fawoo)
end if
set xml_dom=Nothing

'远程得到百度新闻内容
function getnews(urls,tousername,texts)
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", urls, False
xml.Send
Set xmlDom = server.createObject("microsoft.xmldom")
xmlDom.async=False
xmlDom.ValidateOnParse=false
xmlDom.load(xml.responseXML)
if xmlDom.ReadyState>2 Then
set oItem=xmlDom.getElementsByTagName("item")
maxlen=oItem.length-1
if maxlen>tiaoshu then
maxlen=tiaoshu
else
maxlen=maxlen
end if
for i=0 to maxlen
word=oItem(i).childNodes(0).text
news=oItem(i).childNodes.item(0).text
Link=oItem(i).childNodes.item(1).text
Naws=oItem(i).childNodes.item(3).text
newstext=newstext&vbcrlf&"【新闻"&i+1&"】"&vbcrlf
newstext=newstext&"<a href="""&link&""">"&news&"</a>"&vbcrlf  'link
newstext=newstext&"【时间:】"&vbcrlf
'strNow = Year(Naws)&"-"&Month(Naws)&"-"&Day(Naws)
'strNow = strNow&" "&Hour(Naws)&":"&Minute(Naws)&":"&Second(Naws)
newstext=newstext&"["&Naws&"]"&vbcrlf
next
end if
getnews=newstext
end function

'文本回复模版
function text(fromusername,tousername,returnstr)
text="<xml>" &_
"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>" &_
"<FromUserName><![CDATA["&tousername&"]]></FromUserName>" &_
"<CreateTime>"&now&"</CreateTime>" &_
"<MsgType><![CDATA[text]]></MsgType>" &_
"<Content><![CDATA[" & returnstr & "]]></Content>" &_
"<FuncFlag>0<FuncFlag>" &_
"</xml>"
end function

'使用说明:
'
'这是asp微信公众号自动回复开发案列之新闻查询机器人
'可以对任意输入都提示内容及发送使用说明
'比如发送图片,语音,定位信息,文字信息等都会回复信息。
'是各网页爱好者初学微信公众号接口开发的最佳案列
'是微信公众号最实用的一个组件。
'
'主功能:发送@关键词查询对应关键词的新闻
'比如输入:@足球 就会检索百度的海量新闻数据。
'
'
'第一步:
'
'接口文件名可以任意修改(默认是weixinnews.asp)
'代码上传到asp空间(需xmlhttp支持),得到的新的接口地址就是:
'http://你的域名/目录地址/新文件名.asp
'
'
'第二步:配置微信后台
'
'微信公众号平台-->开发者中心-->服务器配置(注意要启用他)
'URL(服务器地址): http://你的域名/目录地址/新文件名.asp (换为你的接口地址)
'Token(令牌): 随意填写
'EncodingAESKey(消息加解密密钥) :随机
'消息加解密方式:明文模式
'
'第三步:你就可以查询测试了
%>
'使用说明:

'

'这是asp微信公众号自动回复开发案列之新闻查询机器人

'可以对任意输入都提示内容及发送使用说明

'比如发送图片,语音,定位信息,文字信息等都会回复信息。

'是各网页爱好者初学微信公众号接口开发的最佳案列

'是微信公众号最实用的一个组件。

'

'主功能:发送@关键词查询对应关键词的新闻

'比如输入:@足球 就会检索百度的海量新闻数据。

'

'

'第一步:

'

'接口文件名可以任意修改(默认是weixinnews.asp)

'代码上传到asp空间(需xmlhttp支持),得到的新的接口地址就是:

'http://你的域名/目录地址/新文件名.asp

'

'

'第二步:配置微信后台

'

'微信公众号平台-->开发者中心-->服务器配置(注意要启用他)

'URL(服务器地址): http://你的域名/目录地址/新文件名.asp (换为你的接口地址)

'Token(令牌): 随意填写

'EncodingAESKey(消息加解密密钥) :随机

'消息加解密方式:明文模式

'

'第三步:你就可以查询测试了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: