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




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

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

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

Перерыв опубликованные решения, выяснил что получить стабильную работу на внешних компонентах в серверном режиме толком никому не удалось,  кроме одного решения, которое, правда, может только отправлять сообщения (//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): исправил найденные ошибки в клиенте и конфигурации, добавил чат-боту аватар

6 Comments

  1. 1С_Мастер

    В описании клиента идет речь о четырех файлах, а в архиве только 3. Нет файла config.ini.php

    Reply
  2. Smallrat

    да, ошибка. сейчас исправлю. спасибо!

    Reply
  3. OrsoBear

    Подскажите, если я на линуксовом сервере работаю, а клиенты — компьютеры с windows

    Будет ли работать такая цепочка?

    Reply
  4. Smallrat

    (3) Про Линукс я только знаю что есть такая ОС 🙂

    Но в целом — Если 1С-сервер работает под линуксом и у него крутится служба, обслуживающая регламентные задания, то препятствий не вижу — никаких методов в 1С, относящихся только к Windows, не требуется, только чтение/запись xml-файлов. Openfire сервер это кроссплатформенное приложение, PHP тоже. Причём все эти компоненты могут крутиться на разных машинах.

    На какой платформе клиенты — вообще по идее всё равно, но я тестировал только с Пандионом и QIP-ом, и они показали местами разное поведение, какие-то другие клиенты вреоятно могут работать так, что некоторые методы класса xmpp.class.php придется допилить для того чтобы они заработали с этим клиентом.

    Reply
  5. OrsoBear

    (4) Smallrat, хороший ответ, спасибо!

    Reply
  6. denek2004

    интересное решение..надо попробывать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *