Отправка сообщений в JabberСуббота, Март 20, 2010 г. Некоторые могут задаться вопросом: "А зачем это нужно?". Я использую это решение для отправки отчётов себе на jid из разных программ автоматически выполняющих какие либо действия. Возможно кто-то найдёт другие применения, но это уже не столь важно. Главное создать работающий код. В языке python для работы с xmpp есть одноимённая библиотека xmpp. Подключим её стандартным способом, а также другие которые нам понядобятся для работы. #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import xmpp import time Основной код оформим в виде функции, аргументами которой будут jid получателя и сам текст сообщения. def jsend(toJID, text):
"""Отправка сообщений на jid - jsend(toJID, text)"""
Это необходимо для того, чтобы данный код можно было использовать не только как самостоятельную программу, но и подключать в виде библиотеки. Далее нам необходимо определить jid от имени которого будут отправляться сообщения. Я для этой цели зарегистрировал отдельный, специально для рассылки уведомлений. Указываем jid и пароль к нему. fromJID = 'piggy@support-pc.ru'
password = '********'
Создаём подключение, или выходим из программы с ошибкой если подключиться к серверу не удалось. fromJID = xmpp.protocol.JID(fromJID)
client = xmpp.Client(fromJID.getDomain(),debug=[])
conn = client.connect()
if not conn:
sys.exit(1)
Далее пробуем авторизироваться, и также выходим в случае неудачи. auth = client.auth(fromJID.getNode(), password, resource=fromJID.getResource())
if not auth:
sys.exit(1)
Отправляем сообщение. mesID = client.send(xmpp.protocol.Message(toJID, text))
time.sleep(1)
client.disconnect()
return mesID
Закрываем соединение после короткого ожидания, необходимого для того чтобы сообщение успело уйти до закрытия. Возвращаем из функции id сообщения. time.sleep(1)
client.disconnect()
return mesID
Дальнейший код отработает только если использовать этот скрипт как самостоятельную программу. При запуске jid назначения и само сообщение будут передаваться в виде аргументов. Получим абсолютный путь до скрипта для вывода подсказки к использованию, если он был запущен без необходимых аргументов. if __name__ == "__main__":
name = os.path.basename(sys.argv[0])
if len(sys.argv) < 2:
print name+" JID сообщение"
sys.exit(0)
Если количество аргументов 2 и более то получаем jid назначения из первого, а само сообщение из последующих. Для удобства реализуем возможность брать текст сообщения из стандартного вывода, для этого в качестве второго аргумента передадим символ '-'. toJID = sys.argv[1]
if sys.argv[2] == '-':
text = sys.stdin.read()
else:
text = ' '.join(sys.argv[2:])
Теперь когда у нас есть необходимые для отправки данные вызовем функцию. jsend(toJID, text) Работа со скриптом как с подключаемой библиотекой также проста. Скрипт должен находится в одной директории с вызываемой программой. Подключаем файл, импортируем функцию и используем её. #!/usr/bin/env python # -*- coding: utf-8 -*- from jabbersender import jsend #jabbersender.py имя файла с кодом описанным выше jid = 'vasya@support-pc.ru' mess = 'Привет Вася!!!' jsend(jid, mess) А вот и сам скрипт. | ||
Комментарии (1)
13.03.2012 в 15:02
Не плохая статья, но хотел спросить, а можно ли как нибудь сделать авторизацию на pidgin? Роюсь в интернете найти не могу ничего толкового.
ответить
)
