Основная мысль такая:
Нужен шлюз который принимает сообщения от пользователей чата и пересылает их внешним клиентам IM, а также принимает сообщения от внешних пользователей IM и пересылает их нужным пользователям в чате.
Это все общее описание. Теперь мои мысли по реализации…
На стороне клиента чата создать доп. Вкладку в контактах, т.е. помимо общих, личных, сделать например “on-line IM”, куда пользователь будет заносить нужные ему номера IM
и по идее удобно чтобы эти номера были в едином списке, но как минимум была возможность сортировки по виду IM icq,jabber и проч, а также у каждого номера слева был соответствующий значок явно определяющий принадлежность IM у аськи ромашка зеленая и проч….
Далее, пользователь выбирает из списка нужного ему пользователя IM, хотя в идеале дать возможность также отправлять незарегистрированным в чате IM клиентам, т.е. тупо номер указыаваешь в каком то поле, указываешь принадлежность и пишешь сообщение.
Сервер чата принимает сообщение, не только сам текст, но и служебную информацию , о том кому это сообщение перенаправить. Передает на шлюз, шлюз по идее сделать встроенным в сам сервер чата. Шлюз является клиентом для различных IM и для него зарегистрированы номера в разных IM и шлюз постоянно находится онлайн.
Получая данные от сервера чата шлюз формирует сообщение в котором в начале сообщения пишет (напишу как мне бы это хотелось видеть, но ессно в идеале сделать несколько разных вариантов) Название Организации, (может быть также должность),полное ФИО, далее текст сообщения , а после сообщения небольшой текст инструкции по обратной отправке сообщения…
Обратная отправка:
В присланном сообщении от пользователя чата пользователю IM, в конце письма писать
ID пользователя и краткую инструкцию по обратной отправке.
Т.е. например
“Id534 Для обратной отправки сообщения адресату укажите в начале сообщения указанный Id пользователя и далее текст сообщения.”
Шлюз получает сообщение, смотрит есть ли ID в начале сообщения, если нет пишет в обратку более подробную инструкцию, или просто типа сообщение не принято, т.к. не указан ID – укажите ID, если же id указан, она принимает сообщение и пересылает уже нужному адресату в чате, естественно не забывая указать от какого номера IM пришло сообщение.
Пожалуй какже интересно было бы сделать дополнительное удобство, такое как статусы IM клиентов. Т.е. те клиетны IM, которые зарегистрированы у пользователей, заносились бы на шлюзе в общий список контактов (без всяких сортировок, тк. Это не нужно). Данная тема нужна исключительно, чтобы шлюз смотрел статус клиентов (всех, которые есть у всех пользователй чата), и выдавал клиентам статусы, чтобы было видно он лайн человек или нет.
Вот собственно и все мысли.
Вообще данная идею думаю не нова, но бизнес диктует свои требования и меня все чаще спрашивают о такой возможности, т.к. icq и прочие IM в нашей сети запрещены, а клиентов и поставщиков работающих чаще все конечно с аськой много, и например закупщикам очень удобно было бы общаться через чат с людьми.