| Class | ActionMessenger::Messengers::Xmpp4rMessenger |
| In: |
lib/action_messenger/messengers/xmpp4r_messenger.rb
|
| Parent: | ActionMessenger::Messenger |
Creates a new messenger from its config hash.
Hash can contain:
jid: the Jabber ID of this messenger, with resource if you wish. password: the password for this messenger.
# File lib/action_messenger/messengers/xmpp4r_messenger.rb, line 9
9: def initialize(config_hash = {})
10: super(config_hash)
11: @listeners = []
12:
13: # Sanity check the JID to ensure it has a resource, and add one ourselves if it doesn't.
14: jid = config_hash['jid']
15: jid += '/ActionMessenger' unless jid =~ /\//
16:
17: # TODO: Different strategies for staying online (come online only to send messages.)
18: # TODO: Reconnection strategy.
19: # TODO: Multiple mechanisms for sending messages, for Jabber backend swap-out,
20: # but also to unit test the sending code.
21: @client = Jabber::Client.new(Jabber::JID.new(jid))
22:
23: @client.connect
24: @client.auth(config_hash['password'])
25:
26: @client.add_message_callback do |jabber_message|
27: message = ActionMessenger::Message.new
28: message.to = jabber_message.to.to_s
29: message.from = jabber_message.from.to_s
30: message.body = jabber_message.body
31: message.subject = jabber_message.subject
32: message_received(message)
33: end
34: end
Sends a message.
# File lib/action_messenger/messengers/xmpp4r_messenger.rb, line 37
37: def send_message(message)
38: to = message.to
39: to = Jabber::JID.new(to) unless to.is_a?(Jabber::JID)
40: jabber_message = Jabber::Message.new(to, message.body)
41: jabber_message.subject = message.subject
42: @client.send(jabber_message)
43: end