Общие сведения
Существует 2 вида программ-дополнений для CommFort client 4.10: плагины и программы.
Для связи программ с клиентом CommFort используется протокол UDP. Плагины связываются с CommFort путем экспорта функций.
Программы-дополнения
Основан механизм на приеме и передаче UDP пакетов. Для включения обработки и отправки пакетов в клиенте чата необходимо отредактировать в файле Config\UDPAddons.ini следующие строки:
-------------
[UDPAddon_X]
Enabled=1
IP=здесь указывается IP-адрес программы-надстройки
Port=здесь указывается порт программы-надстройки
-------------
Обратите внимание, CommFort client будет принимать и обрабатывать сообщения только с IP-адреса и порта, указанных в данном ini файле.
Узнать же адрес (в первую очередь порт), по которому необходимо отправлять UDP пакеты к клиенту чата можно по первому пакету, генерируемому программой CommFort client при подключении к серверу.
Плагины
В CommFort client 4.10 поддержка плагинов реализована в тестовом режиме.
Плагины представляют из себя обычные динамически загружаемые библиотеки (DLL). Для установки необходимо скопировать файл плагина в папку “Plugins”, созданную в каталоге с программой CommFort client и перезапустить программу. Плагины должны иметь расширение «cfcplug». Например “myplugin.cfcplug”. Очередность работы плагинов определяется по алфавиту (имен файлов).
Для функций плагина необходимо использовать соглашение _stdcall. Так же необходимо отключить декорирование имен экспортируемых функций.
Для ознакомления с типами экспортируемых функций, а так же общей структурой плагина используйте прилагающийся исходный код к плагину “Null”, поставляющийся вместе с данной инструкцией.
Описание состава сообщений
Для описания состава сообщений, отправляемых клиенту чата и принимаемых от него будут использоваться следующие шаблоны:
число(описание): целое десятичное 32 разрядное число. представляет из себя последовательность 4х байтов, содержащих данное числоПри отправке сообщений программой-дополнением по протоколу UDP структура данных имеет следующий вид:
число(ID)+данные, описанные в таблице
Состав сообщений, отправляемых клиентом чата
| Описание | ID | Структура данных | Примечания |
| Подключение к серверу данного клиента, список пользователей которые уже присутствуют в чате | 3 | число(количество пользователей в чате) + пользователь()*количество пользователей в чате | в данном случае пользователь() будет повторяться столько раз сколько пользователей в чате |
| Подключение пользователя | 1 | пользователь() | - |
| Отключение пользователя | 2 | пользователь() | - |
| Сообщение в канале | 5 | пользователь() + текст(название канала) + текст(опубликованное сообщение или состояние) | - |
| Смена темы | 6 | пользователь() + текст(название канала) + текст(новая тема) | - |
| Смена имени | 7 | пользователь() + текст(новый ник) | - |
| Смена состояния | 8 | пользователь() + текст(новое состояние) | - |
| Сообщение в приватный канал | 10 | пользователь() + текст(сообщение) | - |
| Открытие менеджера каналов, ответ запрос списка каналов | 11 | число(количество общих каналов) + (текст(название канала)+число(количество посетителей)+текст(тема))*количество каналов | В данном случае текст(название канала)+число(количество посетителей)+текст(тема) будут повторяться столько раз сколько общих каналов в чате |
| Получение сообщения | 15 | пользователь()+текст(дата и время)+текст(сообщение) | - |
| Список объявлений | 20 | число(количество объявлений) + (число(уникальный идентификатор объявления)+пользователь()+текст(дата и время публикации)+текст(текст объявления))*количество объявений | Отправляется при подключении клиента к серверу и в качестве ответа на сообщение с ID=80. |
| Новое объявление | 21 | число(уникальный идентификатор объявления)+пользователь()+текст(дата и время публикации)+текст(текст объявления) | - |
| Объявление отредактировано | 22 | число(уникальный идентификатор объявления)+текст(новый текст объявления) | - |
| Объявление удалено | 23 | число(уникальный идентификатор объявления) | - |
| Список пользователей в канале | 30 | текст(название канала)+число(количество пользователей в канале)+пользователь()*количество пользователей в канале | Отправляется при входе в общие каналы и в качестве ответа на сообщение с ID=90 |
| Вход пользователя в канал | 31 | текст(название канала)+пользователь() | - |
| Выход пользователя из канала | 32 | текст(название канала)+пользователь() | - |
Состав сообщений, принимаемых клиентом чата
| Описание | ID | Структура данных | Примечания |
| Опубликовать сообщение в канал | 50 | текст(название канала) + текст(сообщение) | - |
| Опубликовать состояние в канал | 51 | текст(название канала) + текст(состояние) | - |
| Наложить ограничение | 52 | число(тип ограничения) + число(тип идентификации) + число(тип анонимности) + число(время в минутах) + текст(учетная запись, либо IP-адрес, либо диапазон IP-адресов) + текст(название канала) + текст(причина ограничения) | типы ограничения: 0 - Запретить доступ к чату, 1 - Запретить доступ к каналу, 2 - Запретить публикацию в канале, 3 - Запретить публикацию картинок, 4 - Запретить публикацию объявлений. типы идентификации: 0 - учетная запись 1 - IP-адрес 2 - диапазон IP-адресов (пример: 192.168.0.0-192.168.0.255) типы анонимности: 0 - обычное ограничение 1 - анонимное ограничение |
| Запросить список пользователей (клиент чата вернет сообщение с идентификатором 3) | 60 | - | |
| Изменить тему канала | 61 | текст(название канала) + текст(новая тема) | - |
| Изменить приветствие канала | 62 | текст(название канала) + текст(новое приветствие) | - |
| Опубликовать сообщение в приват | 63 | пользователь() + текст(сообщение) | Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений. |
| Опубликовать состояние в приват | 64 | пользователь() + текст(состояние) | Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений. |
| Выйти из приватного канала | 65 | пользователь() | - |
| Выйти из общего канала | 66 | текст (канал) | - |
| Создать общий канал или подключиться | 67 | число(режим) + текст (канал) | Режимы: 0 - не отображать в списке каналов/вход для всех 1 - отображать в списке каналов/вход для всех 2 - не отображать в списке каналов/вход только по приглашению 3 - отображать в списке каналов/вход только по приглашению |
| Запросить список каналов | 68 | - | |
| Отправка сообщения | 70 | число(важность)+текст(имя получателя)+текст(сообщение) | Важность: 0 - обычное сообщение 1 - важное сообщение Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений. |
| Запросить список объявлений | 80 | ||
| Опубликовать объявление | 81 | число(срок на который публикуется объявление в минутах)+текст(текст объявления) | текст объявления может быть не более 5000 символов |
| Удалить объявление | 82 | число(уникальный идентификатор объявления) | |
| Запрос списка пользователей в канале | 90 | текст(название канала) | можно получить список пользователей только в том канале в котором находится клиент |