gifts2017

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

Опубликовал Арсений Прялкин (CeHbKA) в раздел Оборудование - Телефония, SIP

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

Решение сделано на основе внешней компоненты 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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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

Возможно, стоит пересобрать эту обработку под ROM-Asterisk-Native?
10. Арсений Прялкин (CeHbKA) 06.06.14 09:12
(9) oleg.rizvanov, ого-го! Нифигасебе :)
Вот это новость :)
Возможно, стоит пересобрать эту обработку под ROM-Asterisk-Native?

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

Спасибо!
11. Игорь Мартынюк (necsoft) 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) 13.05.16 09:51
(11) necsoft, видимо объединили так :)
Посмотрите отладчиком, что из себя представляет значение глТелефония во время ошибки
13. г. Казань Рустем Гумеров (Rustig) 14.06.16 17:55
(0) добрый день. где можно скачать внешнюю компоненту ROM-Asterisk.dl ?
14. Арсений Прялкин (CeHbKA) 15.06.16 10:20
(13) Rustig, привет
компонента вшита в конфигурацию + в шапке есть ссылка на сайт разработчика компоненты
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа