誰かがこれで私を助けてくれますか? ある言語で単語を受け取り、データベースを調べ、翻訳を取得して送り返すボットを作成したいと思います。共有ホスティングでは不可能ですが、独自のサーバーまたは VDS では可能です。EventMachine や xmpp4r などのライブラリを使用してボットを作成する必要がありますか? はいの場合、一度に多くのリクエストを処理する方法は?
1135 次
1 に答える
1
単語を受信し、データベースを調べて応答を返すのは非常に簡単です。ボットはすべての新しい連絡先を受け入れ、その名簿 (連絡先リスト) に追加する必要があります。
このコードを見てください。Google 翻訳サービスを利用した「Google Bots」のようなボットを作成しました。
require 'rubygems'
require 'xmpp4r-simple'
require 'yaml'
class MonBotTraducteur
def initialize( from='fr', to='en' )
@url = 'http://ajax.googleapis.com/ajax/services/language/translate'
@from = from
@to = to
end
#
def connect
config= YAML::load( File.read( 'config/settings.yaml' ) )
@client = Jabber::Simple.new( config['settings']['jabber']['jid'],
config['settings']['jabber']['password'] )
@client
end
# Translate the received message
def translate( text="" )
params = {
:langpair => "#{@from}|#{@to}",
:q => text,
:v => 1.0
}
query = params.map{ |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
reponse = Net::HTTP.get_response( URI.parse( "#{@url}?#{query}" ) )
repondre( reponse )
end
# Start the bot activity
def demarrer
while true
.received_messages do |msg|
translated_text = translate( msg.body )
@client.deliver( msg.from.to_s, translated_text.to_s )
end
sleep 1
end
end
private
# A method to send back the response
def repondre( reponse )
json = JSON.parse( reponse.body )
if json['responseStatus'] == 200
json['responseData']['translatedText']
else
raise(StandardError, response['responseDetails'])
end
end
end
bot = MonBotTraducteur.new
bot.connect
bot.demarrer
このボットはメッセージを受信し、Google サービスを使用して翻訳し、送信者に送り返します。
PS : 設定には yaml ファイルを使用しました。
よろしくお願いします、
于 2010-12-02T12:25:02.757 に答える