IE2017

Jabber клиент (xmpp) для мгновенного обмена сообщениями, NativeAPI внешняя компонента (ВК) для 1С (версия 3.0) платформы x32, x64 (работает на клиенте и сервере)

Программирование - Внешние компоненты

Внешняя компонента для 1С предприятие, для мгновенного обмена сообщениями, написана по технологии NativeAPI (не требует регистрации в системе как COM компоненты). Это полноценный Jabber клиент для 1С (xmpp протокол). Работает на платформах x32 и x64 на клиенте и сервере, в том числе и на сервере приложений, в фоновом сеансе и регламентных заданиях.

Версия 3.0

1. Видео о том, что примерно можно реализовать с помощью компоненты (все ответы от робота приходят из 1С)

2. Видео о работе компоненты

Для работы компоненты нужно объявить переменную и создать в ней компоненту

Например: 

Перем Об;
Процедура ПриОткрытии(Отказ)
	
	ПодключитьВнешнююКомпоненту("C:\JabberClient.dll", "Jabber", ТипВнешнейКомпоненты.Native);
	Об = Новый("AddIn.Jabber.JabberClient");
	Результат = Об.Создать("jabber.ru", "5222", "test_my_jabber", "test_my_jabber");
	//ПодключитьОбработчикОжидания("ПроверитьСообщения",1); Можно подключить обработчик и получать все приходящие сообщения или обрабатывать очередь вручную
	
КонецПроцедуры

Дальше работаем как с обычным объектом. 

В архиве содержится набор компонент x32 и x64, а также база-пример с реализованной в ней подсистемной.

Подсистема написана для полного понимания как устроен принцип работы с компонентой, ее код полностью открыт. Она реализована с целью продемонстрировать и раскрыть все возможности продукта. Подсистема написана в соостветсвии с системой стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8 и может использоваться для внедрения в свою конфигурацию по желанию.

Для того чтобы сообщения приходили и в Jabber компоненту и в клиент, нужно на клиенте убрать ресурс и выставить приоритет 0, то же самое нужно сделать и в компоненте либо иначе поиграться с настройками приоритетов и ресурсов.

Об.Ресурс = "";

Например настройки PSI:

Настройки PSI

Или QIP

Результат:

Если вы хотите чтобы входящие сообщения приходили только в клиент, минуя Jabber компоненту. То можете задать имя ресурса или выставить приоритет выше нуля в клиенте... Внимание!! Как только Jabber клиент будет отключен, все сообщения автоматически пойдут в Jabber компненту, т.к. она будет иметь следующий приоритет и все еще будет оставаться онайлн

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

С помощью компоненты можно реализовать например работу с базой 1С наприямую из чата. Например создать аккаунт и подключить его к базе 1С. При отправке определнного сообщения в чат в базе будут происходить те или иные события, напирмер формироваться отчетность или еще что либо (что угодно), а вам будет возвращаться уведомление и выполнятся та или иная задача!

Код внешней компоненты полностью закрыт. Модификация кода, декомпиляция в каком либо виде запрещена.

Код подсистемы Jabber написан на языке 1С и полностью открыт. Может модифицироваться и применяться по своему усмотрению.

Работает на всех версиях платформы начиная с 8.2 и выше (на момент публикации проверялось начиная от 8.2.19.130 включительно до 8.3.10.2252)

Срок действия бесплатной технической поддержки 60 календарных дней. В техническую поддержку входит:

  • Разъяснение работы тех или иных функций, свйоств и методов компоненты (они в полной мере описаны в подсистеме 1С).
  • Помощь в подключении, настройке, регистрации, активации  и использовании продукта

После окончания срока бесплатной технической поддержки имеется возможность получить платную техэническую поддердку, по стоимости 700 р. в час, не более 3 часов в месяц.

Причины купить

Данная компонента значительно облегчит жизнь в части работы с Jabber серверами из 1С. Мгновенный обмен сообщениями позволяет выполнять различного рода задачи в 1С, напирмер выполнять по команде из чата то или иное задание, формировать отчетность, отправлять документы пользователям. Или просто организовать интеграцию с Вашим джабер сервером из Вашей базы 1С.

Достоинства

  • Мгновенные сообщения реализованные через внешнее событие
  • Оффлайн сообщения
  • Работает напрямую с сервером Jabber из 1С. 
  • Многопоточность
  • Конференции
  • Прием/отправка файлов
  • Различные методы аутентификации
  • Работа с контакт листом и авторизацией
  • Работа с одного аккаунта одновременно. Можно одновремнно работать из Jabber клиента и из Jabber компоненты (и даже из нескольких разных Jabber компонент которые подключены в разных местах).
  • Работает на всех версиях платформы начиная с 8.2 и выше (на момент публикации проверялось включительно до 8.3.10)

Гарантия возврата денег

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Скачать файлы

Наименование Файл Версия Размер
JabberNativeAPI_x32_x64
16.05.2017
3.0 3000 руб.

Моментальная
доставка

Техническая поддержка (стоимость услуги за 1 час работы)
16.05.2017
700 руб.

См. также

Комментарии
1. Дмитрий Шерстобитов (DitriX) 2480 24.10.15 08:25 Сейчас в теме
Во, вот теперь именно то, что нужно :) Огромное спасибо. И цену поставьте не 1$m, а 5 или 10, она достойна этого :)
2. Александр Синиченко (nytlenc) 82 24.10.15 15:04 Сейчас в теме
3. Сергей Филькин (FSerg) 63 27.10.15 18:48 Сейчас в теме
При попытке выполнить: Об.Соединиться();
платформа вылетает с ошибкой (Win 7 32bit Eng)
8.3.6.2100
4. Александр Синиченко (nytlenc) 82 28.10.15 03:29 Сейчас в теме
(3) FSerg, Об.Создать("Сервер", "Порт", "Логин", "Пароль"); предварительно объявляли? Если да проверяйте внимательно параметры Логин, Пароль, Сервер, Порт, попробуйте с этими учетными данными предварительно авторизоваться с помощью обычного jabber клиента, авторизация проходит? Какой метод аутентификаци используется на сервере, PLAIN, SASL?
5. Сергей Филькин (FSerg) 63 10.11.15 13:49 Сейчас в теме
(4) nytlenc, Обработку запускал из вашего же демо-примера.
На сервере протокол точно не PLAIN, потому что хотел делать это модных сейчас Slack и HipChat.
Но в любом случае, какой бы протокол и ответ сервера не был - не очень клево что валится платформа.
6. Александр Синиченко (nytlenc) 82 12.11.15 17:50 Сейчас в теме
(5) FSerg, исправил компоненту, добавил обработчики исключений - теперь не валит платформу, а также выдает сообщение об ошибке, напишите почту в личку, я вышлю Вам (и все кто качал пишите в личку или на почту с указанием логина на infostart отправлю) новую компоненту, чтобы не перекачивать платно тут.
7. Василий Тёркин (1С_Мастер) 60 22.12.15 17:01 Сейчас в теме
На линукс сервере компонента, к сожалению, подключаться отказывается. Жаль
8. Александр Синиченко (nytlenc) 82 23.12.15 04:31 Сейчас в теме
(7) 1С_Мастер, Компонента писалась под Win x32, x64. Пока так и не смог добиться того, чтобы она заработала на сервере. И вообще пока не нашел ни одной компоненты xmpp которая работала бы на сервере.
9. Александр Синиченко (nytlenc) 82 25.12.15 04:06 Сейчас в теме
(7) 1С_Мастер, Переработал компоненту, теперь работает и на сервере. Попробую теперь запустить ее на Linux.
10. zavedeev (zavedeev) 15.01.16 20:48 Сейчас в теме
11. Александр Синиченко (nytlenc) 82 18.01.16 03:57 Сейчас в теме
(10) zavedeev, исходники не даю. Нигде не написано, что в архиве есть исходники или их Вам дадут.
12. Александр Тарасюк (Aletar) 18.02.16 05:58 Сейчас в теме
Добрый день.

Компонента работает. Но если имя пользователя на русском (у нас имя совпадает с учетной записью AD), то не происходит подключения к серверу (у нас openfire). При этом демонстрационная конфигурация говорит, что подключение выполнено, но при этом состояние оффлайн. Попытка подключения (кнопка Подключить) ситуацию не меняет. Если же при этом попробовать отправить сообщение, то платформа падает (версия 8.2.19.121).

Когда имя пользователя задано латиницей, все нормально.
13. Александр Синиченко (nytlenc) 82 18.02.16 09:26 Сейчас в теме
(12) Aletar, добрый день. Я попробую разобраться в ситуации. Быть может дело в кодировке. Но это уже копаться надо в самой компоненте. Я напишу и выложу обновление как будет результат.
14. it it (it@1c-usoft.ru) 20.02.16 12:56 Сейчас в теме
С talk.google.com не получается настроить. Кто то пробовал?
15. Александр Синиченко (nytlenc) 82 22.02.16 15:14 Сейчас в теме
(12) Aletar, Проверено на jabber.ua совместно с TLS. Все работает прекрасно. Попробуйте зарегистрируйте там пользователей с русскими именами, код:

Компонента = ПолучитьМакетССервера(); //Получаем макет компоненты с сервера
	ИмяФайлаКомпоненты = ПолучитьИмяВременногоФайла("dll"); //Получаем имя файла в который сохраним компоненту
	Компонента.Записать(ИмяФайлаКомпоненты); //Сохраняем компоненту в файл
	ПодключитьВнешнююКомпоненту(ИмяФайлаКомпоненты, "j3321", ТипВнешнейКомпоненты.Native); //Подключаем компоненту
	Об = Новый("AddIn.j3321.JabberClient"); //Вызываем класс из компоненты
	
	Результат = Об.Создать("jabber.ua", "5222", "тест_май_джабер2@jabber.ua", "*************ПАРОЛЬ_Я_СКРЫЛ**********", Истина); // Создаем экземпляр Jabber клиента с шифрованием
	Об.ОтправитьСообщение("тест_май_джабер@jabber.ua", "Тестовое сообщение из 1С!");
	Результат = Об.ПолучитьСообщения(); // Обязательно получить сообщения прежде чем выходить в онлайн с помощью Об.Соединиться(), чтобы не потерять сообщения которые
	                                    // были отправлены нам в оффлайн. Команда Об.ПолучитьСообщения() выведет нас в онайн и сразу вернет список сообщений в "Резултат"
	Если ЗначениеЗаполнено(Результат) Тогда // Если есть какая-то строка, значит получили сообщения, будем обрабатывать
		Попытка
			МассивСообщений = ПеревестиСтрокуНаСервере(Результат); // Переводим получнную из компоненты строку в массив 1С	
			Для Каждого Сообщение Из МассивСообщений Цикл
				Лог = "Сообщение от: " + Сообщение.Отправитель + ", текст сообщения: " + Сообщение.Сообщение + Символы.ПС + Лог;
			КонецЦикла;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Элементы.Подключиться.Доступность = Истина;
	Элементы.Отключиться.Доступность = Истина;
	Элементы.СписокПользователей.Доступность = Истина;
	Элементы.СостояниеКлиента.Доступность = Истина;
	Элементы.ОтправитьСообщение.Доступность = Истина;
	Элементы.Версия.Доступность = Истина;
...Показать Скрыть
16. Александр Синиченко (nytlenc) 82 22.02.16 15:50 Сейчас в теме
(14) it@1c-usoft.ru, Исправлено. Перекачайте компоненту будет работать с talk.google.com (не забудьте включить шифрование)
17. it it (it@1c-usoft.ru) 24.02.16 15:02 Сейчас в теме
Соединение проходит нормально.
Все функции работают.
Но.
К аккаунту на talk.google.com подключент через qip. Сообщения проходят. Но сообщения на hangouts не проходят.
В чем может быть проблема?
18. Александр Синиченко (nytlenc) 82 28.02.16 15:48 Сейчас в теме
(17) it@1c-usoft.ru, Нет не в курсе.
19. Алексей Б (windsurf) 30 15.05.16 20:39 Сейчас в теме
Спасибо за Вашу разработку! Получилось запустить компоненту, но сильно не хватает пары вещей:
1) инфы о статусе контактов (онлайн/офлайн) - не понятно кому можем писать, а кому бессмысленно
2) На jabber сервере, кроме логина контакта, хранится и его представление (удобочитаемое имя) - вот его бы тоже вытаскивать
20. Александр Синиченко (nytlenc) 82 25.05.16 04:37 Сейчас в теме
(19) windsurf, я попробую что-нибудь придумать.
21. Константин Манычев (kostyaCD) 10.11.16 16:32 Сейчас в теме
Благодарю за компоненты и хотел бы узнать не поменялось ли что-то касательно Онлайн\Оффлайн. И интересует можно ли как-то отправлять свой статус на сервер, чтоб и остальные видели, что я в онлайне?
22. Александр Синиченко (nytlenc) 82 14.11.16 17:12 Сейчас в теме
(21) kostyaCD, не поменялось ничего касательно оффлайн/онлайн, этот момент пока в разработке. По поводу статуса, клиент при подключении отправляет автоматически уведомление, что он онлайн и переходит в статус "Готов поболтать". Таким образом все видят что вы онлайн если подключены или оффлайн если нет.
23. Константин Манычев (kostyaCD) 22.11.16 13:14 Сейчас в теме
Хм... Странно, вроде подключаюсь и могу писать, а на другом устройстве все-равно в оффе. И еще хотел спросить есть ли способ с помощью этой компоненты добавлять пользователей в контакт лист? Не нашел что-то такого метода.
24. Константин Манычев (kostyaCD) 24.11.16 12:20 Сейчас в теме
И еще хотел спросить. Есть свой сервере, маковский. Не удается получить список существующих пользователей, я так понимаю потому-что оно там должно у них подтягивать всех кто на этом сервере. И не получить/отправить сообщение. Схожая проблема есть у клиента PSI+, но Spark работает и вроде нормально с этим сервером. На самом деле не сильно разбираюсь во всех этих джабберах и хотел поинтересоваться, может что-то подскажете, что им на сервере подкрутить или как компоненту поднастроить?
25. Александр Синиченко (nytlenc) 82 30.11.16 17:37 Сейчас в теме
(23) Добавил функцию добавления пользователей в контакт лист. см. описание
26. Александр Синиченко (nytlenc) 82 30.11.16 17:37 Сейчас в теме
(24) к сожалению на счет сервера не подскажу
27. sergej anonymous (ksv74) 85 08.12.16 23:20 Сейчас в теме
Под какую платформу файл выгрузки?
Не получается загрузить.
Ошибка "Не верный формат для загрузки информационной базы"
28. Александр Синиченко (nytlenc) 82 09.12.16 09:29 Сейчас в теме
(27) 8.3 попробуйте последнюю версию платформы
29. Рубеж рубеж (rubezh) 13.12.16 13:30 Сейчас в теме
Подскажите, какие-нибудь параметры при отправке сообщений еще можно задавать? Интересует установка типа сообщения, что-то вроде type=>"chat". Потому как иначе выглядит как рассылка.
30. Александр Синиченко (nytlenc) 82 14.12.16 05:10 Сейчас в теме
31. Рубеж рубеж (rubezh) 14.12.16 09:53 Сейчас в теме
(30) Здорово, спасибо! Новую версию как можно будет получить?
32. Александр Синиченко (nytlenc) 82 16.12.16 17:45 Сейчас в теме
(31) Напишите почту в личку, получите компоненту
33. Информационно-технического развития Служба (SITR-utyos) 569 30.01.17 17:35 Сейчас в теме
Пробовал поиграться в тестовой базе. Выяснил, что не работает &насервере версия ВК x64.dll из архива. Та, что в dt в макете x64 - сообщения отправляет. Платформа 1С 8.3.9 x64, Windows server 2008 x64.

Так лучше будет может? )))
Процедура СоздатьНаСервере()
	Если 
		ПодключитьВнешнююКомпоненту("ОбщийМакет.JabCli64", "JabCli", ТипВнешнейКомпоненты.Native)
	Тогда
		Лог = "Компонента загружена" + Символы.ПС + Лог;
	Иначе
		Лог = "Ошибка при загрузке компоненты" + Символы.ПС + Лог;
		Возврат;
	КонецЕсли;
...Показать Скрыть
34. Александр Синиченко (nytlenc) 82 31.01.17 08:06 Сейчас в теме
(33) 64x компонента предназначена только для работы &НаСервере если база запущена на сервере приложений 1С. И только в контексте &НаСервере. Если используется &НаСервере в файловом варианте или &НаКлиенте, не важно какая ОС x64 или x32 (даже если вы запустили это на x64 сервере) то использовать нужно x32 компоненту.
35. Информационно-технического развития Служба (SITR-utyos) 569 31.01.17 10:41 Сейчас в теме
(34)
64x компонента предназначена только для работы &НаСервере если база запущена на сервере приложений 1С.
Так и было. Речь о том, что в поставке получается две разные версии компоненты x64, одна из которых не работает (???).
36. Информационно-технического развития Служба (SITR-utyos) 569 01.02.17 08:32 Сейчас в теме
[quote]Версия 2.0

Переаботан алгоритм. Теперь не нудно вызывать процедуры Создать() и Уничтожить(), это делает конструктор с деструктором при подключении и отключении компоненты. Отлажена работа в фоновм задании и на сервере.[/quote]Правильно понимаю, что для компоненты x64 это тоже неактуально?
37. Александр Синиченко (nytlenc) 82 14.02.17 12:52 Сейчас в теме
(36)
ы x64 это тоже неактуально?


Правильно. Описание актуально для обоих версий компоненты 64 и 32
38. Александр Синиченко (nytlenc) 82 14.02.17 13:18 Сейчас в теме
ВНИМАНИЕ

Компонента х64 РАБОЧАЯ

в базе примере не поправлен вызов функции. Всегда внимательно читайте описание обновления. Было

Результат = Об.ОтправитьСообщение("test_my_jabber1@jabber.ru", "Тестовое сообщение из 1С!");


а нужно

Результат = Об.ОтправитьСообщение("test_my_jabber1@jabber.ru", "Тестовое сообщение из 1С!", "chat");




39. Александр Синиченко (nytlenc) 82 14.02.17 13:23 Сейчас в теме
(35) работают обе компоненты. Для работы брать dll в каталогах. Они самые актуальные.
40. Igor Urinev (woodoo2garik) 16.02.17 16:06 Сейчас в теме
Не получается использовать компоненту, платформа 8.3.9.2170, клиентское приложение. При попытке выполнить ОтправитьСообщение или СписокПользователей результат одинаков: "Ошибка: Access violation at address 09AD24C0 in module 'JabberClient32.dll'. Read of address 0000002C". При вызове метода Создать - ошибка "Метод объекта не обнаружен".
В свойствах JabberClient32.dll указана версия 1.0.0.0, компонента получена с Инфостарта вчера.
41. Александр Синиченко (nytlenc) 82 16.02.17 16:45 Сейчас в теме
(40)
Код в студию. Компонету как подключали? Просто взяли базу пример и попробовали понажимать кнопки? Если так то для начала в макетах базы примера замените компоненты на те что лежат файлами в папке, там актуальные. Сборка версии файла dll и версия компоненты разные вещи. Также рекомендую внимательно прочитать описание в теме.
42. Igor Urinev (woodoo2garik) 16.02.17 17:44 Сейчас в теме
Компонента взята из каталога, размер JabberClient32.dll 1387008 байт. Тестировал на демо-базе, компоненты в макетах заменил на скачанные с Инфостарта (архив получен по электронной почте), в коде указал путь к ним же и заменил адрес сервера и учётные данные на свои. Соединение отрабатывает: "Событие в компоненте на клиенте: Связь установлена 0 OK", но далее при вызове любого метода возвращается указанная выше ошибка. Из самодельной тестовой обработки получается то же самое.
Проверялось на Server 2008 x64 и Windows 7 x32.
43. Александр Синиченко (nytlenc) 82 17.02.17 04:51 Сейчас в теме
(42) вы код так и не предоставили. Я по фотографии не лечу.
44. Igor Urinev (woodoo2garik) 17.02.17 11:56 Сейчас в теме
&НаКлиенте
Перем Об;

&НаКлиенте
Процедура Соединиться(Команда)

ПодключитьВнешнююКомпоненту("C:\ext\jabber\JabberClient32.dll", "JabCli32", ТипВнешнейКомпоненты.Native); //Подключаем компоненту
Об = Новый("AddIn.JabCli32.JabberClient"); //Вызываем класс из компоненты
Об.Сервер = "openfire.xxx.zzz.ru";
Об.Порт = 5222;
Об.Логин = "test@openfire.xxx.zzz.ru";
Об.Пароль = "987654321";
Об.Ресурс = "";
Об.ИспользоватьШифрование = Истина;
ВнутрСтрокаСМассивомСообщений = Об.ПолучитьСообщения(); // Обязательно получить сообщения в первую очередь чтобы не потерять сообщения которые были отправлены нам в оффлайн.
                                                                                                                                             // далее метод Об.Соединиться() не обязателен - клиент выходит на связь автомактически,
Если ЗначениеЗаполнено(ВнутрСтрокаСМассивомСообщений) Тогда // Если есть какая-то строка, значит получили сообщения, будем обрабатывать
                Попытка
                               МассивСообщений = ПеревестиСтрокуНаСервере(ВнутрСтрокаСМассивомСообщений); // Переводим получнную из компоненты строку в массив 1С            
                               Для Каждого Сообщение Из МассивСообщений Цикл
                                               Лог = "Сообщение от: " + Сообщение.Отправитель + ", текст сообщения: " + Сообщение.Сообщение + Символы.ПС + Лог;
                               КонецЦикла;
                Исключение
                КонецПопытки;
КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьСообщение(Команда)
                
                Результат = Об.ОтправитьСообщение("user1@openfire.xxx.zzz.ru", "Тестовое сообщение из 1С!", "chat");
                Если Результат Тогда
                               Лог = "Сообщение для успешно отправлено" + Символы.ПС + Лог;
                КонецЕсли;
                
КонецПроцедуры

&НаКлиенте
Процедура СписокПользователей(Команда)
                
                СписокПользователей.Очистить();
                Результат = Об.СписокПользователей();
                Если Значениезаполнено(Результат) Тогда
                               Массив = ПеревестиСтрокуНаСервере(Результат);
                               Для Каждого Юзер Из Массив Цикл
                                               СписокПользователей.Добавить(Юзер, Юзер);
                               КонецЦикла;
                КонецЕсли;
                
КонецПроцедуры


При выполнении ОтправитьСообщение() и СписокПользователей() Результат="Ошибка: Access violation at address 09BD24C0 in module 'JabberClient32.dll'. Read of address 0000002C"
...Показать Скрыть
45. Александр Синиченко (nytlenc) 82 17.02.17 12:56 Сейчас в теме
(44)
Соединиться(Команда)


А если так, что говорит?

ПодключитьВнешнююКомпоненту("C:\ext\jabber\JabberClient32.dll", "JabCli32", ТипВнешнейКомпоненты.Native); //Подключаем компоненту
Об = Новый("AddIn.JabCli32.JabberClient"); //Вызываем класс из компоненты;
Об.Сервер = "openfire.xxx.zzz.ru";
Об.Порт = 5222;
Об.Логин = "test@openfire.xxx.zzz.ru";
Об.Пароль = "987654321";
Об.Ресурс = "";
Об.Подключиться();
Если Об.Онлайн Тогда
         Сообщить("Онлайн");
Иначе
        Сообщить("Оффлайн");
КонецЕсли;
...Показать Скрыть


Что сообщает? Больше чем уверен - Оффлайн.
Оставьте свое сообщение