C:\>gem install rfetion
Successfully installed macaddr-1.0.0
Successfully installed uuid-2.0.2
Successfully installed rfetion-0.3.4
3 gems installed
要装这么多gem包,如果用虚拟主机的话有时可能有点麻烦
我觉得用plugin 还好方便管理些 把那三个gem 包都卸了
用rfetion 与guid 这两人个插件就可以了
因此rfetion插件中 lib\rfetion.rb文件第二行要注释掉
#lib\rfetion.rb文件第2行 #require 'uuid'
#lib\rfetion\fetion.rb 中第12行 要注释掉并换成
#lib\rfetion\fetion.rb 中第12行 要注释掉并换成 # GUID = UUID.new.generate require 'uuidtools' GUID = UUID.random_create.to_s 同时第24行要换成 def calc_cnonce Digest::MD5.hexdigest(GUID).upcase end
这样就可以了
下面是两人个正确的插件包
如果好友列表中有 不公开手机号的好友可能匹配错误以下方案可以解决
#lib\rfetion\fetion.rb 中get_contacts_info 的正则 修改下下 def get_contacts_info @logger.info "fetion get contacts info" arg = '<args><contacts attributes="all">' @buddies.each do |buddy| arg += "<contact uri=\"#{buddy[:uri]}\" />" end arg += '</contacts></args>' msg = sip_create('S fetion.com.cn SIP-C/2.0', {'F' => @sid, 'I' => next_call, 'Q' => '1 S', 'N' => 'GetContactsInfo'}, arg) + FETION_SIPP curl_exec(next_url, @ssic, msg) response = curl_exec(next_url, @ssic, FETION_SIPP) raise FetionException.new("Fetion Error: Get contacts info error") unless response.is_a? Net::HTTPSuccess # response.body.scan(/uri="([^"]+)".*?mobile-no="([^"]+)"/).each do |contact| # @contacts << {:sip => contact[0], :mobile_no => contact[1]} # end response.body.scan(/<contact.*?<\/contact>/).each do |contact| # @contacts << {:sip => contact[0], :mobile_no => contact[1]} contact.scan(/uri="([^"]+)"/).each do |sip| @contacts << {:sip => sip[0]} end contact.scan(/uri="([^"]+)".*?mobile-no="([^"]+)"/).each do |sip| @contacts.delete_if{ |c| c.has_value?(sip[0]) } @contacts << {:sip => sip[0], :mobile_no => sip[1]} end end # @logger.info " response.body" # @logger.info response.body @logger.info @contacts.inspect @logger.info "fetion get contacts info success" end