gifts2017

Интеграция 1С и корпоративного jabber-чата + пример конфигурации "Служба заявок"

Опубликовал N (Smallrat) в раздел Программирование - Внешние компоненты

Jabber-клиент, основанный на php, как следствие, без проблем работающий на любой версии Windows.
Модифицирован для управления посредством создания управляющих файлов, то есть 1С в серверном режиме может полноценно взаимодействовать с клиентом без подключения внешних компонент.
Плюс добавлен пример простой конфигурации "Служба заявок", взаимодействие с которой осуществляется через jabber-чат.

Итак, задача:

Запустить на сервере 1С jabber-бота для корпоративного чата, управлять которым будет база 1С в серверном режиме.

Перерыв опубликованные решения, выяснил что получить стабильную работу на внешних компонентах в серверном режиме толком никому не удалось,  кроме одного решения, которое, правда, может только отправлять сообщения (http://infostart.ru/public/121078/), основанное на php-классе, работающем с протоколом XMPP (http://webi.ru/webi_files/xmpp_webi.html).

Было принято решение допилить класс, правда php я вижу в первый раз, но оказалось что это не особо то и сложно.

Что получилось в итоге: добавлена возможность отправлять сообщения из xml-файла, сохранять полученные сообщения, кроме id пользователя также получать с сервера его ник, посылать на сервер время от времени keep-alive пакеты, чтобы не вываливаться в оффлайн, сохранять в файл уведомления о появлении пользователей в онлайне, сохранять в файл ростер пользователей и далее по мелочи еще всякое.

Плюс была написана простенькая конфигурация, реализующая службу заявок в самом примитивном варианте.

 

Об установке: 

клиент представляет из себя 4 файла:

config.ini.php - файл настроек: подключение к серверу, настройки логирования, статус и прочее

index.php - файл запуска клиента: осуществляет подключение, "прослушивание" сервера и чтение управляющих файлов.

xml.class.php - класс для разбора xml (jabber ими общается) - этот файл не модифицировался.

xmpp.class.php - класс для работы с протоколом XMPP, собственно обеспечивает всю работу клиента.

 

Для работы всего этого дела нужна PHP-машина - скачать ее можно тут: http://windows.php.net/download/#php-5.3

или во вложенных файлах (установка не требуется).

Запускаем так: либо связываем расширение php с php.exe и запускаем index.php, либо запускаем php.exe -f %путь к index.php%

После этого в чате должен появиться пользователь, в соответствии с настройками в config.ini.php


Разворачивание клиента на сервере:

(если планируется использование конфигурации, то лучше начать с нее - по тексту ниже):

Ставим/размещаем php-машину.

На сервере Windows 2008 делаем задачу в планировщике задач, в более ранних версиях пытаемся сделать службу - описано тут: http://araxgroup.ru/content/view/114/65/

У меня более ранней нет, так что я я сделал скрины с параметрами задания (системный администратор я так себе, так что возможно галочки я понатыкал не совсем верно, но месяц тестирования проблем не выявил)

 

 

После запуска задания пользователь сервера должен залогиниться в чат.

 

Развертывание конфигурации "Служба заявок":

Конфигурация представляет собой электронный журнал заявок (в примере журнал отдела ИТ). Заявки принимаются через корпоративный чат через бота, представляющего отдел. При получении заявки через чат создается документ-заявка на исполнителей отдела (которые прописаны в табличной части подразделения) и рассылается им уведомление. Как пользователь так и исполнители могут управлять заявками , смотреть свои задачи и т.д. путем ввода команд боту. Список доступных команд можно получить отправив боту команду "!Помощь".

Про прописывание на сервере базы писать не буду, это к ЖКК.

После установки и запуска базы должно заработать регламентное задание, которое каждые 10 секунд должно мониторить папку с клиентом. За путь к папке клиента отвечает константа "Каталог клиента".

Конфигурация писалась для поддержки нескольких подразделений (и нескольких клиентов), но пока работает только с одним (для нескольких надо ее допилить/оттестировать), поэтому в папке клиента будет еще папка с названием пользователя подразделения, где и будут лежать файлы клиента пользователя этого подразделения.

Размещать, лазить в файлы php и править их необязательно - всё можно сделать из формы справочника "Настройки клиента подразделения":  файлы клиента есть в макете в конфигурации, файл настроек сгенерируется автоматически по нажатию кнопки.

Ставим/размещаем php-машину. После этого создаем задачу в планировщике/службу и запускаем ее.

Если всё правильно сделано, то теперь jabber-клиент связан с 1С, и должен присутствовать онлайн в чате. Можно ему отправить слово "!Помощь", чтобы проверить что он работает.

Также в конфигурации есть служебная обработка по управлению jabber-клиентом - с помощью ее можно запустить/остановить клиент, отправить/получить вручную сообщения, получить и загрузить в базу список всех пользователей сервера (ростер).

 

Итого:

Всё это дело тестировалось на связке Windows Server 2008 R2 + Openfire 3.6.4 (w/ntlm patch) + Pandion/QIP. Работает стабильно, в оффлайн не вываливается, при перезагрузке сервера автоматически поднимается.

Вероятно под другие сервера/клиенты придется класс работы с XMPP допилить напильником, потому как сам столкнулся например с тем что клиент QIP общается с сервером немного по другому чем Pandion, отчего некоторые методы не работали.

Всё опубликованное не претендует на роль конечного продукта и кто пожелает может допиливать клиент/ конфигурацию под свои нужды.

 


Upd (26.02.13): исправил ошибку с определением онлайн-статуса пользователей.

Upd (16.05.13): исправил найденные ошибки в клиенте и конфигурации, добавил чат-боту аватар

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

Наименование Файл Версия Размер Кол. Скачив.
Jabber-клиент
.zip 17,08Kb
22.05.13
55
.zip 17,08Kb 55 Скачать
Демо-база "Служба заявок"
.dt 101,18Kb
22.05.13
55
.dt 101,18Kb 55 Скачать
файл конфигурации "Служба заявок"
.cf 92,19Kb
22.05.13
26
.cf 92,19Kb 26 Скачать
PHP-машина
.ZIP 7,08Mb
16.05.13
38
.ZIP 7,08Mb 38 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. q1q1q1 (1С_Мастер) 26.02.13 12:04
В описании клиента идет речь о четырех файлах, а в архиве только 3. Нет файла config.ini.php
2. N (Smallrat) 26.02.13 13:01
да, ошибка. сейчас исправлю. спасибо!
3. Alex Steiner (OrsoBear) 27.02.13 08:24
Подскажите, если я на линуксовом сервере работаю, а клиенты - компьютеры с windows
Будет ли работать такая цепочка?
4. N (Smallrat) 27.02.13 09:06
(3) Про Линукс я только знаю что есть такая ОС :)
Но в целом - Если 1С-сервер работает под линуксом и у него крутится служба, обслуживающая регламентные задания, то препятствий не вижу - никаких методов в 1С, относящихся только к Windows, не требуется, только чтение/запись xml-файлов. Openfire сервер это кроссплатформенное приложение, PHP тоже. Причём все эти компоненты могут крутиться на разных машинах.
На какой платформе клиенты - вообще по идее всё равно, но я тестировал только с Пандионом и QIP-ом, и они показали местами разное поведение, какие-то другие клиенты вреоятно могут работать так, что некоторые методы класса xmpp.class.php придется допилить для того чтобы они заработали с этим клиентом.
5. Alex Steiner (OrsoBear) 27.02.13 09:11
(4) Smallrat, хороший ответ, спасибо!
6. denis denis (denek2004) 28.03.13 13:45
интересное решение..надо попробывать
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа