25 мар. 2008 г.

Отсылка сообщений в google talk из Oracle

Ответ на комментарий в этом посте.
Прикрутить к Oracle python отсылку соообщений можно легко (начиная с 10g).
В зависимости от операционной системы содадим либо shell скрипт, либо bat. Для примера я использовал Oracle XE на Windows XP. Создаем сначала python скрипт с параметром для текста сообщения:

import sys,os,xmpp
cl=xmpp.Client('gmail.com',debug=[])
cl.connect()
cl.auth('your_name','your_password')
cl.send(xmpp.protocol.Message('your_friend@gmail.com', sys.argv[1]))
cl.disconnect()

Создаем простенький bat-файл (send2gtalk.bat)

c:\Python25\python.exe c:\tmp\send2gtalk.py %1


Дальше в sqlplus выполняем:
exec dbms_scheduler.create_program('SEND2GTALK', 'EXECUTABLE', 'C:\tmp\send2gtalk.bat', 1, FALSE);
exec dbms_scheduler.define_program_argument('SEND2GTALK', 1, 'MESSAGE_TEXT', 'VARCHAR2');
exec dbms_scheduler.enable('SEND2GTALK');
exec dbms_scheduler.create_job('JOB_SEND2GTALK', program_name=>'SEND2GTALK');
exec dbms_scheduler.set_job_argument_value('JOB_SEND2GTALK', 1, '"test text"');
exec dbms_scheduler.run_job('JOB_SEND2GTALK');


Всё. Для отсылки сообщения нужно вызывать последние две команды:
exec dbms_scheduler.set_job_argument_value('JOB_SEND2GTALK', 1, '"test text number 2"');
exec dbms_scheduler.run_job('JOB_SEND2GTALK');


Примечание для Oracle Xe: В оракл XE по-умолчанию служба шедулера выключена. Поэтому для работы нужно стартануть сервис OracleJobSchedulerXE.

Комментариев нет: