Итак, задача:
Запустить на сервере 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): исправил найденные ошибки в клиенте и конфигурации, добавил чат-боту аватар