Пишем Jabber-бот

Публикация № 121631

Разработка - Практика программирования

В статье рассмотрен один из способов создания механизма рассылки оповещений посредством Jabber-уведомлений.

Хочу предложить один из вариантов интеграции 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");  // адресат
       
Если ТипЗнч(Текст) = Тип("СписокЗначений") тогда
            Для каждого
тмп из Текст Цикл
               
т.ДобавитьСтроку(тмп);
            КонецЦикла;
        Иначе
           
т.ДобавитьСтроку(Строка(Адресат) + ", " + Текст);
        КонецЕсли;

       
т.Вывод = истина;
        // также не забудьте правильно указать каталог
        т.Записать("\\SERVER\JABBER\"+Строка(новый УникальныйИдентификатор()) + ".txt", КодировкаТекста.UTF8);

    исключение
       
// обработка нехватки прав на файловый вывод и т.п.
   
конецПопытки;
КонецПроцедуры

Использование в коде в исключениях:

Попытка

    ... куча кода ...
Исключение
   
// сразу узнаем!!!
   
_СистемныеОповещения.УведомлениеВЧат(Справочники.Пользователи.НайтиПоНаименованию("Админ"), ОписаниеОшибки());
КонецПопытки

Одно из удобных применений - это использование в длительных регламентных заданиях, когда хочется узнать статус текущего процесса. Для этого необходимо в код разместить периодический вызов jabber-оповещения, например: "Перепровожу УУУ док. из ХХХ". Также, т.к. программа вынесена из 1С, ее возможно использовать в других приложениях, способных сформировать текстовый файл в указанном формате.



Скачать файлы

Наименование Файл Версия Размер
ServerJabberBot.zip

.zip 601,61Kb
20.03.12
40
.zip 601,61Kb 40 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. klel 23.03.12 21:34 Сейчас в теме
Прикольная штучка спамить наверно можно?
2. Dimasik2007 412 23.03.12 22:38 Сейчас в теме
Ну в пределах контакт-листа робота можно. :)
5. EvgeniuXP 17.02.15 19:19 Сейчас в теме
выкладывал файлы на диск C:\Jabber, но файлы не берутся почему-то ботом, в итоге - не работает ничего... подключение происходит, судя по коду VS2010, исключение не вызывается.... сообщение первое выводит SEND to адрес джаб-сервера и всё... так одна строка и висит... пробовал джаббер, миранду и 1С на одном компе
6. EvgeniuXP 17.02.15 19:22 Сейчас в теме
файлы создавал txt, первую строку имя_пользователя@адрес джаббера, вторая строка - текст... и другие выкладывал файлы, типа имя_пользователя@имя.домена - файлы не берутся и не удаляются и ничего не отправляется... бот в миранде должен быть в онлайне? - у меня он в онлайн не выходил... но и ошибки при подключении не было в VS2013.
7. EvgeniuXP 20.02.15 19:24 Сейчас в теме
8. Dimasik2007 412 20.02.15 23:08 Сейчас в теме
Прекрасно работает с версией Openfire 3.8.2, года три уже как. Правда, OF не обновлял, может на новых и не работает.
Бот всегда должен быть в онлайне. За счет этого осуществляется быстрая отправка множества сообщений адресатам.
Прикрепленные файлы:
9. EvgeniuXP 24.02.15 22:46 Сейчас в теме
(8) не получается его завести... уже изучил питон (xmpp) и написал почти уже свой бот на нем - коннект, прием от бота (pywin32) и отправка уже получилась (и тоже через службу залепил).
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    100932    97    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3817    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    4369    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7708    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    263597    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    28416    3    CheBurator    62