IE2017

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

Оборудование - Телефония, 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
155
.cf 183,74Kb 155 Скачать

См. также

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

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

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

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

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