import gobject import logging from gi.repository import TelepathyGLib as Tp logging.basicConfig(level=logging.DEBUG) def message_received_cb(channel, message): logging.debug("Message received") print message def message_sent_cb(channel, message): logging.debug("Message sent") print message def observe_channels(observer, account, connection, channels, dispatch_op, requests, context, user_data): logging.debug("channels observed") for channel in channels: props = channel.borrow_immutable_properties() #these signals never trigger. why? channel.connect('message-received', message_received_cb) channel.connect('message-sent', message_sent_cb) logging.debug("connected to signals") messages = channel.get_pending_messages() for m in messages: print m context.accept() dbus = Tp.DBusDaemon.dup() observer = Tp.SimpleObserver.new(dbus, True, 'Test', True, observe_channels, None) # We want to observe text chats observer.add_observer_filter({ 'org.freedesktop.Telepathy.Channel.ChannelType': 'org.freedesktop.Telepathy.Channel.Type.Text' }) observer.register() main_loop = gobject.MainLoop() main_loop.run()