Отправка сообщений в Jabber из Django

3750 2


Задача:
 Организовать оповещение по протоколу XMPP(Jabber) о произошедшем в Django-приложении событии.
Например, о добавлении новой записи в базу данных.

Условия: Windows 2008 server, Apache 2.2, Jabber server Openfire 3.6.4

Как всегда просто используя "передовой опыт старших товарищей" задача решена не была, пришлось доставать бубен и начинать танцы. В итоге: "Ура! Зарработало!".

Решение:

1. Устанавливаем: dnsPython и xmpppy;

2. Добавляем в папку нашего приложения файл xmpp_send.py со следующим содержимым:

# -*- coding: utf-8 -*-
import xmpp,time
def Jsend(usr, msg):
jidparams={}
jidparams['jid']= 'Ник отправителя@адрес jabber сервера'
jidparams['password'] = 'пароль'
jid=xmpp.protocol.JID(jidparams['jid'])
cl=xmpp.Client(jid.getDomain(),debug=[])
con=cl.connect(('адрес jabber сервера',5222), use_srv=False)
if not con:
print 'could not connect with: ' + jid.getDomain()
sys.exit()
auth=cl.auth(jid.getNode(),jidparams['password'],resource=jid.getResource())
if not auth:
print 'could not authenticate!'
sys.exit()
 
id=cl.send(xmpp.protocol.Message(usr, msg))
time.sleep(1)  
cl.disconnect()

3. В views.py там где мы инициируем запись в базу данных добавляем:

from django.conf import settings
from application.xmpp_send.py import Jsend
...
if settings.JABBER_SEND:
    msg = u'Содержание сообщения'
    send = Jsend('Ник получателя@адрес jabber сервера', msg)
...  

4. В settings.py добавляем:

...
JABBER_SEND = True
...

5. Перегружаем сервер и все должно работать.

P.S. Вроде мелочь, а удобно и приятно :)

Комментарии

16 июня 2012 г. 20:39 owlman
Спасибо за отзыв. Очень приятно получать такие! :о)
16 июня 2012 г. 20:15 ScumeSleply
Здравствуйте! Классный у Вас сайт. Мне очень понравился )))

Контактные данные

+7 (903) 612-13-42
 Россия, г. Москва