Технические аспекты создания ботов для CommFort 3.20

Здесь обсуждаются графические оболочки, боты, языковые файлы и другие дополнения к CommFort 3.
Закрыто
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Технические аспекты создания ботов для CommFort 3.20

Сообщение Maxim Mirgorodsky »

В данной теме просьба обсуждать только процесс создания ботов и вопросы с ним связанные. Все другие сообщения будут сразу же удаляться.
Последний раз редактировалось Maxim Mirgorodsky 16:37, 16.05.2007, всего редактировалось 1 раз.
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Прежде всего, напомню: механизм, реализованный в 3.10 - временный. Это значит что как только будут реализованы более совершенные методы, этот будет убран. Механизм создан на основе идеи пользователя Shurup: http://www.commfort.com/rus/forum/viewt ... =2771#2771.

Информация, необходимая для написания программы-дополнения к CommFort client содержится в текстовом файле: http://www.commfort.com/tmp/bots_inf.txt.

К сожалению, нормального тестирования данной функциональности провести не удалсь, поэтому при обнаружении проблем походу будем доводить что надо :).

Хотелось бы попросить авторов программам в требованиях не забывать указывать, что работать данные программы будут только при условии подключения к зарегистрированному серверу версии 3.10.

Перед написанием программы-дополнения убедитесь, что загружена последняя версия CommFort client. Разные версии 3.10 отличаются только кодом, относящимся к ботам. На данный момент последняя версия:
http://www.commfort.com/tmp/commfort_cl ... _patch.rar
Последний раз редактировалось Maxim Mirgorodsky 09:10, 21.05.2007, всего редактировалось 1 раз.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

В принципе догадываюсь каким будет ответ но все же спрошу... если программа клиент использует для общения с ботом лиш один порт то получается только лишь один бот может быть запущен в связке с одним клиентом?
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Да.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

При отправке в чат сообщений клавишей F9 в пакете для бота передаются данные пользователя, но сам текст сообщения не передаётся и равен нулю.

Очень хотелось бы чтоб когда пользователь отправляет картинку то в сообщении для бота передавалось бы что то типа текста - "картинка".
Узнать же адрес (в первую очередь порт), по которому необходимо
отправлять UDP пакеты к клиенту чата можно по первому пакету,
генерируемому программой CommFort client при подключении к серверу.
Не совсем понятно с этим моментом каким должен быть пакет который переедает инфу о порте для приёма...
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

При отправке в чат сообщений клавишей F9 в пакете для бота передаются данные пользователя, но сам текст сообщения не передаётся и равен нулю.

Действительно. Сегодня исправлю и опубликую обновление. Обновления для ботов буду публиковать в виде нового файла commfort.exe, распространять придется эту exe вместе с ботом. Конечно не очень удобно, зато гибкость полная :).

Очень хотелось бы чтоб когда пользователь отправляет картинку то в сообщении для бота передавалось бы что то типа текста - "картинка".

А разве не передается "[image]"?

Не совсем понятно с этим моментом каким должен быть пакет который переедает инфу о порте для приёма...

Речь идет о пакете с идентификатором "3". Он отправляется чатом всякий раз когда успешное подключение к серверу осуществляется. По нему как раз можно поймать порт клиента коммфорта.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

Maxim Mirgorodsky писал(а): А разве не передается "[image]"?
Странно у меня вроде не передавался вообще пакет... Приду домой буду смотреть :roll:
Maxim Mirgorodsky писал(а): Речь идет о пакете с идентификатором "3". Он отправляется чатом всякий раз когда успешное подключение к серверу осуществляется. По нему как раз можно поймать порт клиента коммфорта.
Спасибо теперь все понятно :)
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Действительно, пакет с "[image]" отправлялся лишь в тех случаях когда картинка публиковалась своя.

http://www.commfort.com/tmp/commfort_cl ... _patch.rar

- устранен недочет с текстом по F9.
- устранен недочет с [image].
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

Чет не получается отправлять боту пакеты т.е. отправлять то отправляю но никакой реакции не вижу
вот например пакет

Код: Выделить всё

32 00 00 00 04 00 00 00 6D 61 69 6E 02 00 00 00 3A 29
| код 50    |длин канал| назв канал|длин сообщ| текст сообщения
      50         4        main            2         :)
отправляю его на порт с которого клиент шлёт пакеты для бота и ничего :( что я неправильно делаю?
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

А точно именно с того адреса, который указан в настройках коммфорта? Там можно напутать со 127.0.0.1/адресом сетевого интерфейса, так что можно поэкспериментировать с этим.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

Адрес указан точно... еще небольшое уточнение... пакет должен обязательно приходить тоже с того порта который указан в настройках клиента чата или важно только, что с того же самого IP?

Если не трудно можно ли выложить простенький примерчик где бы было два поля ввода это название канала и текст и который отсылал бы пакеты клиенту чата допустим с кодом 50.
Я надеюсь это поможет мне выявить в чем у меня проблема... на крайний случай можно будет сделать два дампа пакетов и найти в чем же неувязочка.
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Адрес указан точно... еще небольшое уточнение... пакет должен обязательно приходить тоже с того порта который указан в настройках клиента чата или важно только, что с того же самого IP?

Да, обязательно. И с того же порта, и с того же IP.

Сегодня постараюсь проверить, может все-таки в коде приема пакетов ошибка.
Последний раз редактировалось Maxim Mirgorodsky 17:26, 20.05.2007, всего редактировалось 1 раз.
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Проверил, код приема UDP сообщений работает нормально.

Рекомендации:
1 Откажитесь от 127.0.0.1, используйте только реальные интерфейсы.
2 Убедитесь, что вызывается WinSock команда bind (т.е. что программа-бот привязывается именно к тому интерфейсу и порту, который указан в настройках клиента чата).
3 Попробуйте воспользоваться тестовым сообщением 3.10b:

http://www.commfort.com/tmp/commfort_cl ... _patch.rar

- добавлена функция отладки, если клиенту чата отправить UDP пакет с содержимым "test" и этот пакет пройдет все фильтры, соответствующее сообщение отобразится в events.
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Сообщение -=SJ=- »

Проверил. Тестовое сообщение принимается на ура... значит проблема все таки в сформированном пакете.
Публикация сообщения в канал:
--
число(50) + текст(название канала) + текст(сообщение)

Код: Выделить всё

32 00 00 00 04 00 00 00 6D 61 69 6E 02 00 00 00 3A 29
| код 50    |длин канал| назв канал|длин сообщ| текст сообщения
      50         4        main            2         :) 
Может сюда надо ещё что то дописывать? Потому что пакет идет именно такой каким я его создавал... я проверял снифером.
Maxim Mirgorodsky
Администратор
Сообщения: 6867
Зарегистрирован: 09:56, 27.06.2005

Сообщение Maxim Mirgorodsky »

Действительно, ошибка в модуле конвертирования коммфорта. Нда, даже простейшие функции нельзя в спешке писать и не проверив досконально по завершении...

http://www.commfort.com/tmp/commfort_cl ... _patch.rar

- исправлена ошибка, приводящая к неправильной идентификации приходящих пакетов
Закрыто