fetion-robot是基于web飞信接口的飞信机器人(一小段ruby脚本)。最初目标是做一个可以发新浪微博的飞信机器人。 目前实现了
做应答机器人最合适
源码仅仅145行--意味着任何人都可以很容易地修改以便于自用
本脚本目标定位于应答机器人,所以我会尽量不增加不必要的功能,保证代码量不膨胀。
最新源码http://code.google.com/p/fetion-robot/
#! /usr/bin/ruby
#author newdongyuwei@gmail.com
$KCODE = 'UTF-8'#解决中文乱码问题
%w(rubygems fileutils sinatra sinatra/base net/http net/https json).each{|lib|require lib}
class FetionRobot < Sinatra::Base
@@Version = 0
enable :sessions
use Rack::Static, :urls => ["/images","/css","/js" ], :root => "public"
set :environment, :development
set :run, true
def request(path,method,body,headers,hasVersion)
if not body
body = "ssid=#{session['webim_sessionid']}"
end
if not headers
headers = {
'Referer' => 'https://webim.feixin.10086.cn/',
'Content-Type' => 'application/x-www-form-urlencoded'
}
end
http = Net::HTTP.new('webim.feixin.10086.cn', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE # turn off SSL warning
if hasVersion
path = "#{path}?Version=#{@@Version}"
@@Version = @@Version + 1
end
if method == 'GET'
return (resp, data = http.get(path, nil))
else
return (resp, data = http.post(path, body,headers))
end
end
def get_code_img
resp, data = request( '/WebIM/GetPicCode.aspx?Type=ccpsession','GET',nil,nil,false)
dir = File.join(File.dirname(__FILE__),"public","images")
FileUtils.mkdir_p(dir)
File.open(File.join(dir,"fetion_code.jpeg"), "wb"){|file|
file.write(resp.body)
file.close
}
cookie = resp.response['set-cookie'].split(';')[0]
session['ccpsession'] = cookie
end
def get_personal_info
resp, data = request( "/WebIM/GetPersonalInfo.aspx",'POST',nil,nil,true)
puts data
info = JSON(data)
if info['rc'] == 200
self.get_contact_list()
end
end
def get_contact_list
resp, data = request( "/WebIM/GetContactList.aspx",'POST',nil,nil,true)
info = JSON(data)
puts data
if info['rc'] == 200
self.keep_alive
end
end
def keep_alive
Thread.new {
loop {
puts "---------------------------------keep_alive-----------------------------------"
resp, data = request( "/WebIM/GetConnect.aspx",'POST',nil,nil,true)
info = JSON(data)
puts info['rc']
puts resp,data
if info['rc']== 200
info['rv'].each do|item|
data = item['Data']
if item['DataType'] ==3 and data
self.send_msg(data['fromUid'],data['msg']+' - -feedfack')#ping-pong-test
end
end
end
sleep 5
}
}
end
def send_msg(to='660122812',msg='test中文',isSendSms='0')
puts '--------------------send msg ------------------------------'
body = "To=#{to}&IsSendSms=#{isSendSms}&msg=#{msg}&ssid=#{session['webim_sessionid']}"
resp, data = request( "/WebIM/SendMsg.aspx",'POST',body,nil,true)
info = JSON(data)
puts data
if info['rc']== 200
puts 'send msg ok!'
end
return data
end
get '/' do
self.get_code_img()
"<form action='/login'>\
<LABEL for='UserName' >手机或飞信号</LABEL><input name='UserName'/>\
<LABEL for='Pwd' >密码</LABEL><input name='Pwd'/>\
<LABEL for='Ccp' >验证码</LABEL><input name='Ccp'/>\
<img onclick='window.location.reload(true)' src='/images/fetion_code.jpeg' />\
<input type='submit' value='登录飞信'/>\
</form>"
end
get '/login' do
body = "UserName=#{params['UserName']}&Pwd=#{params['Pwd']}&OnlineStatus=400&Ccp=#{params['Ccp']}"
puts body
headers = {
'Cookie' => session['ccpsession'],
'Referer' => 'https://webim.feixin.10086.cn/',
'Content-Type' => 'application/x-www-form-urlencoded'
}
resp, data = request( "/WebIM/Login.aspx",'POST',body,headers,false)
puts data
rc = JSON(data)['rc']
if rc == 200
webim_sessionid = resp.response['set-cookie'].split('webim_sessionid=')[1].split(';')[0]
session['webim_sessionid'] = webim_sessionid
puts webim_sessionid
self.get_personal_info()
'login ok!'
else
redirect "/"
end
end
end
FetionRobot.run!({:port => 3000})
分享到:
相关推荐
设计与实现部分基于python的智能应答机器人的设计与实现.pdf设计与实现部分基于python的智能应答机器人的设计与实现.pdf设计与实现部分基于python的智能应答机器人的设计与实现.pdf设计与实现部分基于python的智能...
基于python的智能应答机器人的设计与实现的研究背景及研究意义.pdf
基于Hadoop、Nodejs的智能应答机器人 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目...
其次,提出了一种交互式的云服务交互接口,采用机器人的协议应答方式实现异构协议的自适应匹配;然后,详细阐述了服务机器人云服务平台的开发关键方法。最后,通过所搭建的服务机器人云服务平台进行实验,测试了所设计的...
基于socket server java 机器人,最初是连接飞信 做自动应答机器人。学习socket server 可参考。
人工智能-hadoop
基于python的智能应答机器人的设计与实现的研究背景及研究意义.docx
机器人取名为Season house,他的主要功能是预测用户当时的心情或用户性格。类似于占卜类分析游戏。过程为:机器人感应用户到来,屏幕上出现交互界面。用户刷卡或投币后,在屏幕上出现一些简单的问答题目。根据这些...
一个基于图灵机器人实现的Android智能应答APP
基于FPGA的有源应答器C1接口设计.pdf
客服机器人资料在线聊天机器人 集成图灵智能应答接口 解压直接运行即可
基于VB的CTI电话语音应答系统源码.zip
基于多网融合的自动应答软件设计.docx
通过skype 的接口,实现呼叫和播放语音文件