
рд▓реЗрдЦ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ XMPP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (Jabber) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рдВрджреЗрд╢ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, XMPP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдорд╛рдВрдб рднреЗрдЬрдХрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ
рдПрдХреНрд╕рдПрдордкреАрдкреА (рдПрдХреНрд╕рдЯреЗрдВрд╕рд┐рдмрд▓ рдореИрд╕реЗрдЬрд┐рдВрдЧ рдФрд░ рдкреНрд░реЗрдЬреЗрдВрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓), рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдЬреЗрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ - рдПрдХреНрд╕рдПрдордПрд▓-рдЖрдзрд╛рд░рд┐рдд, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдирд┐рдХрдЯ рддреНрд╡рд░рд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛, рдореБрдлреНрдд-рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдкрд╛рда рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрд╡рд╛рдЬ, рд╡реАрдбрд┐рдпреЛ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдПрдЖрдИрдПрдо, рдЖрдИрд╕реАрдХреНрдпреВ, рдбрдмреНрд▓реНрдпреВрдПрд▓рдПрдо рдФрд░ рдпрд╛рд╣реВ рдЬреИрд╕реЗ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рддреНрд╡рд░рд┐рдд рд╕рдВрджреЗрд╢ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХреНрд╕рдПрдордкреАрдкреА рдПрдХ рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд, рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдФрд░ рдУрдкрди рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдХреЛрдИ рднреА рдЕрдкрдирд╛ рддреНрд╡рд░рд┐рдд рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп XMPP рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред XMPP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрдИ рдирд┐рдЬреА рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ XMPP рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓реЗ рд╣реИрдВред рдЗрдирдореЗрдВ рдлреЗрд╕рдмреБрдХ, рдЧреВрдЧрд▓ рдЯреЙрдХ, рдпреИрдВрдбреЗрдХреНрд╕, рд╡реАрдХреЙрдиреНрдЯреЗрдХреНрдЯ рдФрд░ рд▓рд╛рдЗрд╡рдЬрд░реНрдирд▓ рдЬреИрд╕реА рдХрд╛рдлреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдПрдХ рдЬреИрдмрд░ рдЦрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрдХреНрд╕рдПрдордкреАрдкреА рдХреЛ рдПрдХ рдЬреИрдмрд░ рдХрд╣рддрд╛ рд╣реВрдВ), рддреЛ рдЖрдк рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ
Jabber.ru рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛
Google рдЯреЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдмрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА "рдкреБрд░рд╛рдиреЗ" рдПрдХ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдорд┐рд░рд╛рдВрдбрд╛ рдпрд╛
рдХреНрдпреВрдЖрдИрдкреА, рдХрд░реЗрдВрдЧреЗ ред
рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?
рдореИрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
- рдЯреВрдЯреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрдм рдореЗрд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 404 рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдФрд░ рдЙрд╕ рд╕рдВрдХреНрд░рдордг рдХреЗ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред
- рдорд╛рд▓, рднреБрдЧрддрд╛рди, рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрддреНрдХрд╛рд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдПред
- рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЗрдЪреНрдЫрд╛ рдлрд╝реЙрд░реНрдо" рднрд░рддреЗ рд╕рдордпред
рдореИрдВ рд░реЗрд▓ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рджреЗ:
- рдЖрд╡реЗрджрди рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрдврд╝рдиреЗ рдФрд░ рдПрдХ рд▓рдВрдмреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд░реЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдЬрд┐рд╕реЗ рдмрд╣реБрдд рдХрдо рд╣реА рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдареАрдХ рд╣реИ, рдЖрдк рдЗрди рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХ рд╕рд╛рд╣рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрд▓ + рдПрдХреНрд╕рдПрдордкреАрдкреА рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реА рдЕрдкрд▓реЛрдб рдХрд░рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪреИрдЯ рдХрд░рдирд╛, рдЖрджрд┐ред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
рд╣рдореЗрдВ
XMPP4R рд░рддреНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕реЗрдЯ рдХрд░реЗрдВ:
рдордгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ xmpp4r
рдореБрдЭреЗ рддреБрд░рдВрдд рдзреНрдпрд╛рди рд╣реЛрдЧрд╛ рдХрд┐ рдордгрд┐ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдиреАрдЪреЗ рдмрд╣реБрдд рд╣реА рдЕрд╕реНрдерд┐рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреИрдмрд░ рдЦрд╛рддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╡рд╣ рдкрддрд╛ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ рдФрд░ рдЖрдкрд╕реЗ рдЖрдЬреНрдЮрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдПрдХ рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛
рдХрдиреЗрдХреНрд╢рди рдФрд░ рд░реЛрдмреЛрдЯ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рдореИрдВ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣рдорд╛рд░реА рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛)ред
require "xmpp4r" robot = Jabber::Client::new(Jabber::JID::new("robot@xmpp.ru")) robot.connect robot.auth("password")
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдБ рд╕реНрдкрд╖реНрдЯ рд╣реИ,
рд░реЛрдмреЛрдЯ @ xmpp.ru рдЬреИрдмрд░ рдЦрд╛рддреЗ рдХрд╛ рдкрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИ,
рдкрд╛рд╕рд╡рд░реНрдб рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рд╣реИред рдЕрдм рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред
message = Jabber::Message::new("you@xmpp.ru", ", !") message.set_type(:chat) robot.send message
рдЬрд╣рд╛рдБ рдЖрдк
@xmpp.ru рдЖрдкрдХрд╛ рдЬреИрдмрд░ рдПрдбреНрд░реЗрд╕ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред рдПрдХ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рд╣реА рдЖрдкрдХреА рдЯреНрд░реЗ рд╕реЗ рдкреЙрдк рдЕрдк рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд░реЛрдмреЛрдЯ рдХреЛ (рдЬреИрдмрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред рдпрд╛рдиреА рд░реЛрдмреЛрдЯ рдСрдирд▓рд╛рдЗрди рд╣реЛрдЧрд╛, рдЬреИрдмрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЧреНрд░реАрди рд▓рд╛рдЗрдЯ рдСрди рд╣реЛрдЧреАред
robot = Jabber::Client::new(Jabber::JID::new("robot@xmpp.ru")) robot.connect robot.auth("password") robot.send(Jabber::Presence.new.set_show(nil))
рдЕрдм, рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдЪрдХреНрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдЙрд╕реА рд╕рдордп, рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рдВрджреЗрд╢ рд╕рд╣реА рдкрддреЗ рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдХреБрдЫ рдШреБрд╕рдкреИрдард┐рдП рд░реЛрдмреЛрдЯ рдХреЛ рдХрдорд╛рдВрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
robot.add_message_callback do |message| # if message.from.to_s.scan("you@xmpp.ru").count > 0 # case message.body # when "hello" message = Jabber::Message::new("you@xmpp.ru", " !") message.set_type(:chat) robot.send message when "restart" File.open(Rails.root.to_s + "/tmp/restart.txt", "a+") end else # message = Jabber::Message::new("you@xmpp.ru", " !") message.set_type(:chat) robot.send message end end
"рд╣реИрд▓реЛ" рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░реЛрдмреЛрдЯ рд╣рдореЗрдВ
рд╣реИрд▓реЛ рдХрд╣реЗрдЧрд╛, рдФрд░ рдЬрдм рдпрд╣
"рдкреБрдирд░рд╛рд░рдВрдн" рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рддреЛ рдпрд╣ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдпрджрд┐ рдпрд╣ рдпрд╛рддреНрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдЧрд╛ред
рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд░реЛрдмреЛрдЯ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдФрд░ ... рдорд░ рдЧрдпрд╛ред рдЙрдкрдпреБрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдХрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдореИрдВ рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд░ рдмрд╛рд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд░реЛрдмреЛрдЯ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдПрдХ рдбреЗрдорди рд▓рд┐рдЦрд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдПрдХреНрд╕рдПрдордкреАрдкреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░реЛрдмреЛрдЯ рдХреЛ рд░рд┐рдмреВрдЯ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░реВрдмреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
"xmpp_daemon.rb" , рдФрд░ рдЗрд╕реЗ
"config / initializers" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдЬреЛ рдЗрд╕реЗ рд░реЗрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
#coding: utf-8 require "xmpp4r" class Xmpp # @@my_xmpp_address = "you@xmpp.ru" # - @@robot_xmpp_address = "robot@xmpp.ru" #- @@robot_xmpp_password = "password" # - @@site_name = "sitename.ru" # , # xmpp- def self.connect @@robot = Jabber::Client::new(Jabber::JID::new(@@robot_xmpp_address)) @@robot.connect @@robot.auth(@@robot_xmpp_password) end # def self.message(text) self.connect message = Jabber::Message::new(@@my_xmpp_address, "[#{@@site_name}]\n#{text}") message.set_type(:chat) @@robot.send message end # def self.listen self.connect @@robot.send(Jabber::Presence.new.set_show(nil)) @@robot.add_message_callback do |message| # if message.from.to_s.scan(@@my_xmpp_address).count > 0 # case message.body # when "hello" Xmpp.message " !" when "restart" Xmpp.message "..." File.open(Rails.root.to_s + "/tmp/restart.txt", "a+") end else # Xmpp.message " !" end end end end Xmpp.listen
рдЕрдм, рдХрд┐рд╕реА рднреА рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
Xmpp.message ", !"
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдореИрдиреЗрдЬрд░реБ -
рдЬрд╝рдХрдЧреЛ -
рдПрдирд╕реНрдкреЗ