Хочу предложить один из вариантов интеграции jabber-уведомлений в систему — разработать jabber-бот, задачей которого будет следить за каталогом в файловой системе и, при появлении файлов, отсылать их содержимое адресату, указанному в файле.
Проект, который Вы можете скачать во вложении (Visual Studio 2010), основан на библиотеке agsXMPP — программной библиотеке, с помощью которой можно реализовать как клиентскую, так и серверную часть XMPP. В настоящий момент agsXMPP считается устаревшей и ей на смену была разработана MatriX. Но она в отличие от agsXMPP распространяется только на коммерческих условиях.Двойная лицензия позволяет использовать её в проектах с закрытым исходным кодом.
Программа запускается в режиме обычного приложения, с возможностью сворачивания в трей. При необходимости, возможно переписать в режим службы, но это уже оставлю на усмотрение читателя.
Обратите внимание, логин-пароль jabber-бота и другие параметры подключения прописаны в коде приложения — опять же, в рамках моих нужд.
Настройка путей
В коде прописан путь C:jabber, в который программа должна иметь права на чтение и удаление файлов.
Для пользователей эта папка прописывается как сетевая (возможно скрытой, через $), с доступом на создание файлов.
Формат файла
Текстовый файл, расширение .txt, текст в UTF-8
1-я строка: адресат в jabber (пример: admin@jabber.ru)
2-я строка и последующие: текст сообщения.
Пример использования
//Адресат — спр. «Пользователи»
Процедура УведомлениеВЧат(Адресат, Текст) Экспорт
попытка
т = новый ТекстовыйДокумент;
// внимание, нижеследующий блок нужно заменить на свой
// для переданного пользователя нужно получить логин
// например, свойство пользователя
jabber = ПолучитьJabberАдрес(Адресат);
т.ДобавитьСтроку(jabber + «@192.168.0.3»); // адресат
Если ТипЗнч(Текст) = Тип(«СписокЗначений») тогда
Для каждого тмп из Текст Цикл
т.ДобавитьСтроку(тмп);
КонецЦикла;
Иначе
т.ДобавитьСтроку(Строка(Адресат) + «, » + Текст);
КонецЕсли;
т.Вывод = истина;
// также не забудьте правильно указать каталог
т.Записать(«\SERVERJABBER»+Строка(новый УникальныйИдентификатор()) + «.txt», КодировкаТекста.UTF8);
исключение
// обработка нехватки прав на файловый вывод и т.п.
конецПопытки;
КонецПроцедуры
Использование в коде в исключениях:
Попытка
… куча кода …
Исключение
// сразу узнаем!!!
_СистемныеОповещения.УведомлениеВЧат(Справочники.Пользователи.НайтиПоНаименованию(«Админ»), ОписаниеОшибки());
КонецПопытки
Одно из удобных применений — это использование в длительных регламентных заданиях, когда хочется узнать статус текущего процесса. Для этого необходимо в код разместить периодический вызов jabber-оповещения, например: «Перепровожу УУУ док. из ХХХ». Также, т.к. программа вынесена из 1С, ее возможно использовать в других приложениях, способных сформировать текстовый файл в указанном формате.
Прикольная штучка спамить наверно можно?
Ну в пределах контакт-листа робота можно. 🙂
выкладывал файлы на диск C:Jabber, но файлы не берутся почему-то ботом, в итоге — не работает ничего… подключение происходит, судя по коду VS2010, исключение не вызывается…. сообщение первое выводит SEND to адрес джаб-сервера и всё… так одна строка и висит… пробовал джаббер, миранду и 1С на одном компе
файлы создавал txt, первую строку имя_пользователя@адрес джаббера, вторая строка — текст… и другие выкладывал файлы, типа имя_пользователя@имя.домена — файлы не берутся и не удаляются и ничего не отправляется… бот в миранде должен быть в онлайне? — у меня он в онлайн не выходил… но и ошибки при подключении не было в VS2013.
c Openfir-ом не дружит…
Прекрасно работает с версией Openfire 3.8.2, года три уже как. Правда, OF не обновлял, может на новых и не работает.
Бот всегда должен быть в онлайне. За счет этого осуществляется быстрая отправка множества сообщений адресатам.
(8) не получается его завести… уже изучил питон (xmpp) и написал почти уже свой бот на нем — коннект, прием от бота (pywin32) и отправка уже получилась (и тоже через службу залепил).