Интеграция 1С 8.2 и Asterisk (упр. формы)

Оборудование - Телефония, SIP

1C8 Asterisk интеграция телефония

32
Пример интеграции на управляемых формах.
Работа с телефонией в тонком клиенте.

Решение сделано на основе внешней компоненты ROM-Asterisk.dll от simplit

Огромное спасибо пользователю Олег Ризванов за его труд и бесценные комментарии.

 

Итак, перейдем к делу.

 

В: что это такое ?

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

 

В: Как это работает?

О: При запуске конфигурации инициализируется внешняя dll, далее через неё идёт подключение к АТС Asterisk. Возможность хранить для каждого конкретного пользователя 1С свои настройки для подключения к АТС (которых может быть несколько)

 

В: а если я захочу что-то исправить?

О: Разработка не представляет из себя ничего сложного. Функционал бесплатной панели телефонии для 1С и Asterisk перекочевал в модуль упр.приложения, пару общих модулей, а также добавлен один справочник (настройки подключения к АТС) и один регистр сведений (настройки АТС для пользователей)

 

В: как установить\интегрировать?

О: Как сказано выше - разработка не представляет из себя ничего сложного. Можете "сравнить\объединить...", а можете и ручками. Последний вариант, конечно предпочтительнее. Т.к. будете знать, куда копать если захотите что-то допилить, а работы всего на пару минут

 

Рассмотрим интеграцию подсистемы "Телефония" на типовой УТ 11. Блок объединения конфигурации рассматривать не будем - там всё просто.

В панели разделов появится новая подсистема, а конфигурация встретит вас сообщением:

Если для пользователя не заданы настройки

 

Далее, заходим в подсистему телефония и задаем настройки:

- в справочнике "Виды АТС" указываем настройки подключения к IP АТС

- в регистре сведений "Настройки пользователей АТС" указываем связку какой пользователь какую АТС использует, его персональный внутренний номер и контекст

После этого перезапускаем 1С.

Система попробует подключить внешнюю компоненту (dll). По умолчанию забит путь C:\Windows\System32\, если dll-ки там нет, то конфигурация попытается самостоятельно сохранить туда файлик ROM-Asterisk.dll

 

После этого, нужно запуститься в толстом клиенте. Это необходимо для того, чтобы 1C зарегистрировала внешнюю компоненту в реестре Windows (можете зарегить самостоятельно, тогда запуск в толстом клиенте не потребуется).

Опять запускаем 1С (теперь можно в тонком клиенте), если всё прошло успешно - вы увидите внизу всплывающие окна, о том что всё ОК :)

В противном случае, система выдаст вам сообщение об ошибке.

Алгоритм такой:

1) проверка настроек для данного пользователя

2) подключение внешней компоненты

3) инициализация объекта

4) подключение к АТС

 

Если какой-то этап завален, дальше не взлетит. О чём вам скажут сообщения об ошибке.

В: Как звонить (совершать исходящие вызовы)?

О: В общем модуле "вТелефонияКлиент" есть экспортная процедура "Звонить" с одним единственным параметром, куда передаётся номер телефона. Завязывайте на неё любую кнопку в вашей конфигурации

 

Обработку входящего звонка допиливайте самостоятельно в модуле упр.приложения через процедуру "ОбработкаВнешнегоСобытия"

Далее, обработка звонков ограничивается только вашей фантазией. Можно завязать любое логирование событий, вплоть до фиксирования длительности звонка и т.д. и т.п.

Enjoy :)

P.S. на самую лучшую в мире разработку не претендую, вполне возможны косячки Tongue Out

32

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

Наименование Файл Версия Размер
tel.cf
.cf 183,74Kb
28.10.13
192
.cf 183,74Kb 192 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. oleg.rizvanov 223 28.10.13 19:03 Сейчас в теме
Вообще-то, я Олег Ризванов, а не Олег Ривзанов :)
2. CeHbKA 216 29.10.13 09:00 Сейчас в теме
(1)упс, очепятался :[
исправил :)
3. CagoBHuK 31 30.10.13 16:09 Сейчас в теме
Управляемые формы подразумевают работы и в Linux-клиенте в том числе. Ваша разработка работает в нем? А в браузере?
4. CeHbKA 216 30.10.13 17:14 Сейчас в теме
(3)
1 - управляемые формы работают в линухе и веб-клиенте
2 - внешняя компонента (она же ROM-Asterisk.dll) написана с помощью COM-технологии
3 - внешняя компонента не работает в веб-клиенте и в линухе тоже, потому что она COM

Надеюсь ответил на все вопросы :)
5. CagoBHuK 31 30.10.13 17:48 Сейчас в теме
(4) В таком случае принципиальных отличий от прочих разработок на эту тему не вижу. Серьезное ограничение - работа только в винде. Плюса не заслуживает.
6. CeHbKA 216 30.10.13 18:01 Сейчас в теме
Вы кажется невнимательно читаете. Причем, очень часто. Внешняя компонента - не моя разработка.

А по поводу плюса - от Вас и не надо ;)
7. Жолтокнижниг 245 31.10.13 09:44 Сейчас в теме
а что нового по сравнению с панелью от simplit, очередная гуёвая переработка?
user718181; +1 1 Ответить
8. CeHbKA 216 04.11.13 13:00 Сейчас в теме
(7) в описании к публикации есть вся необходимая информация. Гуёвая или негуёвая - каждый для себя решает сам. Качайте - смотрите.
9. oleg.rizvanov 223 06.06.14 03:09 Сейчас в теме
Тихо и незаметно Simplit выпустил NativeAPI-версию ROM-Asterisk + новый релиз COM-версии

Из нового:
- Поддерживается сторона сервера
- Можно нарастить глубину очереди событий
- Можно перенаправлять ошибки во внешнее событие

Возможно, стоит пересобрать эту обработку под ROM-Asterisk-Native?
ironn; h00k; +2 Ответить
10. CeHbKA 216 06.06.14 09:12 Сейчас в теме
(9) oleg.rizvanov, ого-го! Нифигасебе :)
Вот это новость :)
Возможно, стоит пересобрать эту обработку под ROM-Asterisk-Native?

Конечно стоит, ща шапку подредактирую и займусь в свободное время

Спасибо!
11. necsoft 1 13.05.16 00:01 Сейчас в теме
Доброй ночи!

Беру демо конфу - все работает. Встраиваю в свою (самописная) через сравнение и объединение и вылетает на Функция Login(Логин,Пароль), а именно при выполнении Если глТелефония.Подключено=1 Тогда

// Авторизация в Asterisk Manager API
//
// Возвращаемое значение: 1-команда отправлена, 0-нет
//
&НаКлиенте
Функция Login(Логин,Пароль)
//    ДокументОбъект = РеквизитФормыВЗначение("Объект"); 
	Если ПустаяСтрока(Логин) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Login(). Не указан параметр <Логин>";
		Сообщение.Сообщить(); 
		Возврат 0;
	КонецЕсли; 

	Если ПустаяСтрока(Пароль) Тогда
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Login(). Не указан параметр <Пароль>";
		Сообщение.Сообщить(); 
		Возврат 0;
	КонецЕсли; 

	Если глТелефония.Подключено=1 Тогда
		CRLF = Chars.CR + Chars.LF;
		СтрокаКоманды= "Action: Login"+CRLF+
		"Username: "+Логин+CRLF+
		"Secret: "+Пароль+CRLF+CRLF;
		Возврат ВыполнитьКоманду(СтрокаКоманды);
	КонецЕсли; 

	КонецФункции // Login
Показать


Буду благодарен за помощь!
12. CeHbKA 216 13.05.16 09:51 Сейчас в теме
(11) necsoft, видимо объединили так :)
Посмотрите отладчиком, что из себя представляет значение глТелефония во время ошибки
15. alex_tmn 09.12.16 13:22 Сейчас в теме
(11)Доброго дня, подскажите, не нашли ли вы решение вашей проблемы?
В моей конфигурации аналогичная проблема
13. Rustig 1003 14.06.16 17:55 Сейчас в теме
(0) добрый день. где можно скачать внешнюю компоненту ROM-Asterisk.dl ?
14. CeHbKA 216 15.06.16 10:20 Сейчас в теме
(13) Rustig, привет
компонента вшита в конфигурацию + в шапке есть ссылка на сайт разработчика компоненты
16. user718181 26.09.18 10:06 Сейчас в теме
Что за "профессионал" писал эту обработку? Ошибка на ошибке. ПодключитьОбработчикОжидания("вТелефонияКлиент.Автоподключение",30,Ложь); в глобальном модулe не работает.
18. CeHbKA 216 26.09.18 13:39 Сейчас в теме
(16) писал я. 5 лет назад.

Из всех скачавших, ошибка на ошибке, только у вас.
Если не нравится - сделайте сами.
Если можете сами - зачем вам чужое?

P.S. вежливость - залог успеха
P.P.S. не думал, что подобные вещи до сих пор актуальны
P.P.P.S. удачи вам в нелёгкой работе, дальше будет ещё "веселее" :)
19. user718181 26.09.18 14:13 Сейчас в теме
(18) Самому и пришлось писать, потому - что в том виде, как это выложено - это не взлетит
20. Rustig 1003 26.09.18 14:47 Сейчас в теме
(19) возьмите стержень кода, остальное доделаете, будьте Профи!
17. user718181 26.09.18 10:40 Сейчас в теме
ОтключитьОбработчикОжидания("ПереподключитьТелефонию") - в модуле управляемого приложения это что вообще? Даже процедуры такой нет в конфе
Оставьте свое сообщение