Бесплатная панель телефонии для 1С и Asterisk

Опубликовал oleg.rizvanov в раздел Оборудование - Телефония, SIP

Панель телефонии реализует 2 наиболее востребованные функции при интеграции 1С и Asterisk:
1) При входящем звонке, видеть в 1С номер звонящего
2) Звонить прямо из 1С по нажатию кнопки

Зачем?

Как правило, при интеграции 1С и Asterisk, клиенты в первую очередь хотят 2 основные вещи:

  1. При входящем звонке, видеть в 1С номер звонящего
  2. Звонить прямо из 1С по нажатию кнопки

Поэтому, «Панель телефонии» реализует именно эти две наиболее востребованные функции.

Реализация

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

Это хороший и главное – работающий пример, на базе которого можно создать что-то свое. Супер-обработку писать никто не старался – это просто пример использования. В сообществе 1С много талантливых людей, которые напишут лучше.

Результат

В общем, к делу…

Внешняя компонента реализует асинхронный неблокируемый сокет, основанный на событиях.

Свойства компоненты:

  • Подключено / Connected – состояние подключения к Asterisk
  • ВнутреннийНомер / Extension – внутренний номер, для которого отслеживается событие входящего звонка
  • Контекст / Context – контекст Asterisk-а для исходящих звонков
  • Версия / Version – версия внешней компоненты

Методы компоненты:

    • Подключиться / Connect (,< Port>,,) - подключиться к Asterisk AMI
    • Отключиться / Disconnect( ) - отключиться от AMI
    • Звонить / Dial () - позвонить абоненту с номером

В 1С, события полученные от Asterisk-а доступны в обработчике ОбработкаВнешнегоСобытия(Источник, Событие, Данные)

Пару слов о событиях

Asterisk шлет события текстовыми пакетами. Работать в 1С с текстом неудобно, поэтому был написан парсер, который преобразует текст в массив типа «Соответствие».

Работать сразу стало легко, например:

КтоЗвонитНомер = ДанныеСобытия.Получить("CallerIDNum");
КтоЗвонитИмя = ДанныеСобытия.Получить("CallerIDName");

А теперь слайды :)

И небольшие комментарии к слайдам.

Закладка «Набор» - здесь все просто

«Строка набора» - поле, для номера вызываемого абонента. Проверку на «только цифры» намерено не делали, потому что, у Asterisk-а еще бывают Skype / GoogleVoice каналы. У нашего есть.

Закладка

Закладка «Настройки»

Здесь живут сохраняемые настройки подключения к Asterisk AMI и свойства внешней компоненты

Закладка

Адрес, Порт, Логин, Пароль - обязательные поля, а иначе как подключаться к Asterisk AMI?

ВнутреннийНомер - обязательный, внутренний номер, за которым будет следить текущий сеанс 1С. Если пусто, то и следить не за кем.

Контекст - необязательный, но лучше указать явно. Нужен для выполнения исходящих звонков. Обычно, "from-internal"

Закладка «Файл»

Скорее всего, понадобится только один раз, при установке ВК. Сама внешняя компонента загружена в объект «Макет» обработки.

Путь к файлу ВК - обязательный, используется в методе ЗагрузитьВнешнююКомпоненту()

Закладка

Поддержка

На форуме Simplit или в комментариях к этой статье.

P.S.

Чтобы все завелось, нужно подрихтовать один из конфиг-файлов Asterisk-a. Работы там максимум на 5 минут. Плюс куча времени на «допроситься админа» это сделать.

Ссылки для админа: раз, два

P.P.S.

Исправлены 2 мелких бага, поэтому в имя файла добавлен суффикс -v2

Файлы

Наименование Файл Дата Размер Кол. Скачив.
free-phone-panel-v2
.zip 102,78Kb
30.03.12
317
.zip 30.03.12 102,78Kb 317 Скачать
free-phone-panel.zip
.zip 102,78Kb
30.03.12
85
.zip 30.03.12 102,78Kb 85 Скачать

См. также

Лучшие комментарии

21. oleg.rizvanov 29.03.2012 20:39
(19) jorikfon,
По разработке молодцы.

Среди плюсов нет пользователя jorikfon
Ответили: (22)
# Ответить
17. sergeyshik 29.03.2012 11:05
В компании франчайзи "МИКО" очень хорошо пытаются поднять эту тему. Там есть для вас полезные дальнейшие пути усовершенствования. Сайт www.miko.ru много красивостей позволяет такая надстройка особенно к crm, облегчает жизнь менеджерам на раз)))
Ответили: (18) (19)
+ 1 [ jorikfon; ]
# Ответить
12. oleg.rizvanov 23.03.2012 22:45
(11) Zoomby,
Без проблем.
Моя прошлая статья: 1C+Asterisk. Пример интеграции
Документация по AMI: Asterisk Manager API
+ 1 [ Zoomby; ]
# Ответить

Комментарии

1. zipik 23.03.2012 15:02
Это управляемое приложение?
Ответили: (2) (5)
# Ответить
2. Zoomby (файл скачал) 23.03.2012 15:05
(1) похоже на обычное приложение
(0) т.е. нужен будет только сервер Аsterisk ? А какой - программный или железный?
Ответили: (6)
# Ответить
3. zipik 23.03.2012 15:32
нужно чтоб под вебклиент работало..
Ответили: (7)
# Ответить
4. zipik 23.03.2012 15:33
есть под веб?
# Ответить
5. oleg.rizvanov 23.03.2012 15:38
(1) zipik,
Обработка выполнена в режиме обычного приложения. Но, ничего не мешает использовать управляемую форму. Управляемую просто не делали.
# Ответить
6. oleg.rizvanov 23.03.2012 15:40
(2) Zoomby,
Нет разницы какой Asterisk. Единственное требование - наличие AMI (Asterisk Management Interface)
Ответили: (11)
# Ответить
7. oleg.rizvanov 23.03.2012 15:41
(3) zipik,
Под веб-клиентом работать не будет, потому что, тип ВК = COM
Возможно, будет NativeAPI, но не прямо сейчас
# Ответить
8. forurchik 23.03.2012 15:56
ооо прикольно...обязательно по пробую
# Ответить
9. maestro_ (файл скачал) 23.03.2012 16:12
У меня не загружается ВК? Есть идеи?
Ответили: (10)
# Ответить
10. oleg.rizvanov 23.03.2012 16:43
(9) maestro_,
Это же COM. Смотрите путь, реестр.
# Ответить
11. Zoomby (файл скачал) 23.03.2012 22:15
(6)
Единственное требование - наличие AMI (Asterisk Management Interface)


А можно подробнее, не понимаю. Или ссылки где почитать об этом.
Ответили: (12)
# Ответить
12. oleg.rizvanov 23.03.2012 22:45
(11) Zoomby,
Без проблем.
Моя прошлая статья: 1C+Asterisk. Пример интеграции
Документация по AMI: Asterisk Manager API
+ 1 [ Zoomby; ]
# Ответить
13. Mottor 26.03.2012 00:02
Какие требования к конфигурации?
Ответили: (14)
# Ответить
14. oleg.rizvanov 26.03.2012 01:10
(13) Mottor,
Никаких
# Ответить
15. amiralnar 26.03.2012 17:07
Как она справляется с нестандартной настройкой диалплана, или с трансфером посредством телефона, а не астера?
Ответили: (16)
# Ответить
16. oleg.rizvanov 26.03.2012 17:39
(15) amiralnar,
А разве должна?
Панель телефонии реализует 2 наиболее востребованные функции при интеграции 1С и Asterisk:
1) При входящем звонке, видеть в 1С номер звонящего
2) Звонить прямо из 1С по нажатию кнопки


С этим справляется pro-версия, но она не фришная.
+ 1 [ amiralnar; ]
# Ответить
17. sergeyshik 29.03.2012 11:05
В компании франчайзи "МИКО" очень хорошо пытаются поднять эту тему. Там есть для вас полезные дальнейшие пути усовершенствования. Сайт www.miko.ru много красивостей позволяет такая надстройка особенно к crm, облегчает жизнь менеджерам на раз)))
Ответили: (18) (19)
+ 1 [ jorikfon; ]
# Ответить
18. oleg.rizvanov 29.03.2012 14:28
(17) sergeyshik,
Спамить нехорошо
Ответили: (19)
# Ответить
19. jorikfon 29.03.2012 19:18
(17) sergeyshik,
Спасибо за хорошио отзыв о МИКО, нам приятно что пользователи нас хвалят, значит мы на правильном пути.

(18) oleg.rizvanov,
Это не наш сотрудник, честно :)

По разработке молодцы.
Правильно ли я понимаю что в поле внутренний номер не нужно указывать технологию SIP, IAX?

Пробовали ли работу компонента на большом количестве пользователей 50-100? Как к этому относится сервер телефонии?
Ответили: (20) (21)
# Ответить
20. oleg.rizvanov 29.03.2012 20:32
(19) jorikfon,
К Мико отношусь нормально. Несколько раз отправлял к вам клиентов и просил их передать привет Николаю Бекетову :) Донесли мой привет? :)
По разработке молодцы.
Спасибо.

Правильно ли я понимаю что в поле внутренний номер не нужно указывать технологию SIP, IAX?

Правильно, потому что, только SIP. Про IAX многие даже не слышали.

Пробовали ли работу компонента на большом количестве пользователей 50-100? Как к этому относится сервер телефонии?

Конечно. Но, при таком количестве нужен AMI-proxy, штатному AMI становится плохо от кол-ва подключений.
Особенно через HTTP. У Мико как раз соединение через http. У Simplit-а через TCP/IP.

Кстати, Астериск недавно признался в критикал-уязвимости AMI через HTTP
Так сказать, людям на заметку
# Ответить
21. oleg.rizvanov 29.03.2012 20:39
(19) jorikfon,
По разработке молодцы.

Среди плюсов нет пользователя jorikfon
Ответили: (22)
# Ответить
22. jorikfon 29.03.2012 21:09
(21) oleg.rizvanov,
Сделал ;)
# Ответить
23. yoyoman 04.04.2012 07:03
О! Как раз то что нужно! Спасибо!
Ответили: (24)
# Ответить
24. oleg.rizvanov 04.04.2012 12:24
(23) yoyoman,
Всегда пожалуйста
Ответили: (25)
# Ответить
25. zekrus (файл скачал) 16.04.2013 12:56
(24) oleg.rizvanov, ROM-Asterisk-Lite : Ошибка при установлении подключения: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. Пробовал два порта 5060 и 5038 (брендмауер отключен), SJphone 1.65 подключается без вопросов.
Ответили: (26)
# Ответить
26. oleg.rizvanov 16.04.2013 19:43
(25) zekrus,
1) Lite-версия была одной из первых. Сейчас, правильнее будет воспользоваться полнофункциональной версией, она тоже бесплатна.
2) ROM-Asterisk работает через AMI-подключение, а не через SIP-подключение. Подробнее вы можете прочитать здесь.
# Ответить
27. Ramos 13.05.2013 12:05
При каждом событии в панели сообщений в 1С всплывает сообщение "Источник=ROM-Asterisk". Можно ли его отключить?
Ответили: (28)
# Ответить
28. oleg.rizvanov 13.05.2013 14:07
(27) Ramos,
1) Воспользуйтесь полнофункциональной версией
2) Отключить вывод сообщений можно в обработчике внешнего события
Ответили: (46)
# Ответить
29. gosizo (файл скачал) 21.05.2013 18:30
Пытаюсь адаптировать обработку под управляемое приложение (вернее сделал новую нарисовав интерфейс и перенеся функционал) и первое с чем столкнулся - никак не хочет подключатся компонента. Саму компоненту в винде зарегистрировал , в свойствах ярлыка 1С поставил галку "Запуск под админом", несколько раз перед этим запускал в обычном приложении (позвонить не удалось, но на подключение не ругалось). Вызов процедуры подключения перенес из процедуры ПриОткрыти в процедуру ПриСозданииНаСервере. Все процедцры модуля обработки перенес в модуль формы (что бы легче было обращатся)
Это код вызова
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗагрузитьКомпонентуТелефонии();
Результат=ИнициализироватьТелефонию();
Если Объект.Автоподключение Тогда
ПодключитьсяНажатие(Неопределено);
КонецЕсли;
КонецПроцедуры

не проходит условие

Если ПодключитьВнешнююКомпоненту("Addin."+ИмяВК)=Ложь Тогда
Сообщить("Не удалось подключить внешнюю компоненту для связи с Asterisk в режиме тонкого клиента");
Сообщить("Если это первый запуск, то нужно войти в режиме толстого клиента");
Возврат Ложь;
КонецЕсли;
Ответили: (32)
# Ответить
30. gosizo (файл скачал) 21.05.2013 18:31
Подскажите, что не так делаю?
Ответили: (33)
# Ответить
31. gosizo (файл скачал) 21.05.2013 18:32
пробовал на опереционках Win 7 и Windows2008 результат одинаковый
# Ответить
32. oleg.rizvanov 21.05.2013 22:50
(29) gosizo,
Этот вариант подключения описан в синтакс-помощнике. Важное место я выделил для вас жирным шрифтом
Синтаксис:

ПодключитьВнешнююКомпоненту(<ИдентификаторОбъекта>)
Параметры:

<ИдентификаторОбъекта> (обязательный)

Тип: Строка.
Идентификатор объекта внешней компоненты в виде ProgID (Programmatic Identifier) реестра MS Windows (например: "AddIn.Scanner").
Должно соответствовать информации, находящейся в регистрационной базе данных системы (Registry).
Описание варианта метода:

Компонента должна быть выполнена по технологии COM и зарегистрирована в реестре MS Windows.
Эти компоненты совместимы с компонентами 1С:Предприятия 7.7.
Внимание! Вариант метода не работает на сервере и во внешнем соединении.
# Ответить
33. oleg.rizvanov 21.05.2013 22:52
(30) gosizo,
Выполняйте код на клиенте
# Ответить
34. gosizo (файл скачал) 22.05.2013 07:47
спасибо
# Ответить
35. gosizo (файл скачал) 22.05.2013 09:37
Еще вопрос: где хранить переменную Телефония ?
# Ответить
36. gosizo (файл скачал) 22.05.2013 09:41
Попробовал создать реквизит Телефония с произвольным типом данных - вываливается с ошибкой, что Com объект не может быть реквизитом формы
# Ответить
37. gosizo (файл скачал) 22.05.2013 10:37
подскажите правильно ли я понимаю, что Объект Телефония можно создавать только на Клиенте ?
Телефония = Новый ("AddIn.ROM-Asterisk");

Если да как его хранить для последующих вызовов ?
Ответили: (38)
# Ответить
38. oleg.rizvanov 22.05.2013 11:31
(37) gosizo,
На сервере подключать ВК можно. Цитита из синтакс-помощника:
Сервер может работать со всеми компонентами. Компонент кэшируется на сеанс работы сервера

Только, зачем компонента нужна на сервере? Смысл? Допустим, вы получили событие о входящем звонке на клиентское устройство (телефон/софтфон). Как вы потом передадите управление с сервера на клиента?

Варианты хранения на клиенте могут быть разные, зависит от того, какое время жизни объекта вас интересует. Например, модуль управляемого приложения, модуль формы...
Ответили: (68)
# Ответить
39. gosizo (файл скачал) 22.05.2013 11:38
Для начала как сделать, что бы она была доступна в модуле формы? А в дальнейшем в моделе управляемого приложения (что бы подгружалась при запуске 1С)
Ответили: (40)
# Ответить
40. oleg.rizvanov 22.05.2013 11:53
(39) gosizo,
&НаКлиенте
Перем Телефония;
# Ответить
41. gosizo (файл скачал) 22.05.2013 11:56
спасибо, буду дальше пробовать . Пока еще на чем-нибудь не споткнусь :-))))
# Ответить
42. gosizo (файл скачал) 24.05.2013 15:19
перенес большую часть функционала в отдельный глобальный модуль и разметил на формах (где есть откуда брать номер телефона) клавишу Звонить. Т.е. обработка уже не используется. Теперь встал вопрос где можно отлавливать внешнее событие ври поступлении входящего звонка (ведь форма может быть открыта любая - справочник, документ или может на тот момент все будет в 1С закрыто)?
# Ответить
43. gosizo (файл скачал) 24.05.2013 15:26
"или может на тот момент все будет в 1С закрыто" - имеется ввиду если нет открытых окон в 1С
# Ответить
44. gosizo (файл скачал) 24.05.2013 15:28
стоило задать вопрос и кажется сам нашел ответ - такое событие есть в модуле управляемого приложения
Ответили: (45)
# Ответить
45. oleg.rizvanov 24.05.2013 15:39
(44) gosizo,
Абсолютно верно
# Ответить
46. Ramos 24.05.2013 21:45
(28) oleg.rizvanov, сделал и то и другое - все-равно выводит
Ответили: (47)
# Ответить
47. oleg.rizvanov 25.05.2013 13:21
(46) Ramos,
Воспользуйтесь отладчиком
Ответили: (48)
# Ответить
48. Ramos 25.05.2013 21:49
(47) oleg.rizvanov, Мне кажеться, это на уровне dll-ки
# Ответить
49. gosizo (файл скачал) 26.06.2013 08:07
Если автор не против могу выложить обработку адаптированную под управляемые формы со ссылкой на первоисточник
Ответили: (51)
# Ответить
50. lamelioss 26.06.2013 09:58
Идея хороша) на днях будет внедрение, судя по всему будем писать аналог под веб-клиент. Автору респект! =)
Ответили: (52)
# Ответить
51. oleg.rizvanov 26.06.2013 10:35
(49) gosizo,
Конечно выкладывайте. Я только ЗА!
# Ответить
52. oleg.rizvanov 26.06.2013 10:40
(50) lamelioss,
Под веб-клиент не заработает. Компонента реализована как COM-объект.
Native API уже есть, но пока даже не бета.

Для веб-клиента лучше использовать SIP-клиент: http://infostart.ru/public/189328/
Ответили: (53)
# Ответить
53. lamelioss 26.06.2013 10:56
(52) oleg.rizvanov, спасибо за совет, будем тестить =) по итогам внедрения отпишусь
# Ответить
54. servs 02.07.2013 12:58
У всех пользователей должен быть один и тот же логин и пароль при подключении компоненты к серверу?
Ответили: (55)
# Ответить
55. oleg.rizvanov 02.07.2013 13:35
(54) servs,
Это вы сами должны решить. Можно всех под одним и тем же пользователем, а можно разбить по группам в зависимости от набора прав.
Ответили: (56)
# Ответить
56. servs 02.07.2013 13:47
(55) сделал один для всех, FreePBX пишет:
tcptls.c: Unable to launch helper thread: Too many processes
Пользователей не больше 50.
Ответили: (57)
# Ответить
58. gosizo (файл скачал) 05.08.2013 16:28
(oleg.rizvanov) Здравствуйте! Столкнулся с проблемой: если пользователь использует компоненту с ограниченными правами, то при записи каких либо объектов 1С виснет намертво, если ему дать полные права , то работает нормально. Функционал вашей обработки я включил в конфигурацию УТ11 (выделив для того дополнительный общий модуль), с недавнего времени в базу стали добавлять пользователей с ограниченными правами, тут и выявилась проблема. Не могу найти где его клинит , отключил для обработку внешнего события для астерикс - не помогло.
Ответили: (59)
# Ответить
59. gosizo (файл скачал) 05.08.2013 16:36
+(58) Причем, я попробовал закомментировать почти все , что относится к Астериксу в ПриНачалеРаботыСистемы и оставил только вызов ЗагрузитьКомпонентуТелефонии() - и все равно виснет. Комментирую и ее и тогда 1С работает нормально.
Ответили: (60)
# Ответить
60. oleg.rizvanov 05.08.2013 16:50
(59) gosizo,
Разрешите пользователю создавать COM-объекты. Если не ошибаюсь, то это права "Automation"
Ответили: (61)
# Ответить
61. gosizo (файл скачал) 06.08.2013 13:36
(60) Пожалуйста посмотрите личные сообщение на сайте инфостарта, я отписал туда. Проблема до сих пор актуальна.
Ответили: (62)
# Ответить
62. oleg.rizvanov 06.08.2013 15:12
(61) gosizo,
1) Вы просто получаете слишком много событий от Asterisk и все они попадают в 1С. Соответственно, 1С не успевает их обрабатывать. Поставьте фильтр на класс событий Asterisk, плюс фильтр внешней компоненты.
2) Почитайте статьи в блоге, посмотрите Вики и Форум. Большинство из вопросов, которые вы задали уже обсуждались.
# Ответить
63. gosizo (файл скачал) 08.08.2013 13:45
в таком случает должно помогать отключение подписки на события, но это не помогает
ставлю 0
ПодписатьсяНаВнешниеСобытия(0);

или совсем убираю строку, но результат тот же - виснет
# Ответить
64. gosizo (файл скачал) 08.08.2013 16:40
кажется нашел, буду проверять еще , что бы не сглазить
# Ответить
65. gosizo (файл скачал) 09.08.2013 11:58
Похоже все дело было в том, что я подключал компоненту в ПриНачалеРаботыСистемы. Перенес в другое место и все заработало
# Ответить
66. vki_kostya 02.10.2013 21:20
Здравствуйте, подскажите пожалуйста.
Установил компоненту, зарегистрировал. Установил настройки астериска в соответствии с рекомендациями. Пытаюсь сделать звонок, на исходящем телефоне раздается звонок, беру трубку, а там занято. звонка на телефоне абонента нет.
Где искать косяк?
История по событиям:
Event: Newchannel
...
Event: NewAccountCode
...
Event: NewCallerid
...
Event: Newstate
ChannelStateDesc: Ringing
...
Event: Newstate
ChannelStateDesc: Up
...
Событие завершения звонка и закрытие канала
Event: Hangup
Cause-txt: Normal Clearing
Ответили: (67)
# Ответить
67. oleg.rizvanov 03.10.2013 01:15
(66) vki_kostya,
1) Не видно события Dial или Bridge. Думаю, вам нужно посмотреть более подробный лог Asterisk.

P.S.
Если что-то не получается, то откройте ветку на форуме Simplit. Здесь я бываю достаточно редко, а там кто-то всегда есть
# Ответить
68. Жолтокнижниг 23.10.2013 19:24
(38) oleg.rizvanov,
На сервере подключать ВК можно. Цитита из синтакс-помощника

http://wiki.simplit.info/doku.php/community/rom-asterisk
http://simplit.com.ua/forum/viewtopic.php?f=5&t=968

что-то я сомневаюсь что можно использовать на сервере, выше в ссылках написано почему
причина использования - выполнение звонков, без регистрации на каждой машине/нет админских прав/

вылечилось написанием собственной компоненты.
# Ответить
69. AVVG 27.11.2013 11:58
Какая внешняя компонента используется? Rom-Asterisk?
# Ответить
70. JaroslavBayev (файл скачал) 06.02.2014 15:52
Добрый день , может и не совсем по теме вопрос, но помогите разобраться - Подключили вашу компоненту, подключаться она подключается, слушать то же слушает, а вот при исходящем вызове происходит следующее звонит сиптелефон оператора, оператор берет трубку и связь тут же обрывается.... Причем нормально закрывается в логах все хорошо - вызов завершен... Я так понимаю, что не происходит инициализация второго канала, можете что-то посоветовать? Хотел посмотреть настройки AMI, но тут беда стоит железный АТС MyPBX U510 и настроек AMI я не нашел...
Ответили: (71)
# Ответить
71. oleg.rizvanov 06.02.2014 16:28
(70) JaroslavBayev,
Задайте свой вопрос на форуме Simplit
# Ответить
72. JaroslavBayev (файл скачал) 06.02.2014 16:31
Уже задал просто продублировал в надежде на более быстрое решение.
# Ответить
73. KostyaLavr 12.03.2014 13:34
Добрый день. Есть какие новости по поводу этой компоненты для работы в веб-клиенте?
# Ответить
74. Aspirant 22.07.2014 16:59
Контекст можно увидеть в диалплане? Покажите пример?
[nn-office]
exten => _XXX,1,Ringing
same => n,Dial(SIP/169-${EXTEN},,tT)
same => n,Hangup
это оно?

не получается позвонить (пример отправляемой команды):
Action: Originate
Channel: SIP/759
Context: nn-office
Exten: 89175111111
Priority: 1
Callerid: 759
Timeout: 30000
Async: false
# Ответить
75. Aspirant 22.07.2014 17:30
заработало, забыл 169- добавить на внутренний номер. У меня получилось соединить стороннюю программу с клиентом, чего не хватает чтобы сделать это в 1с, тоесть разговаривать через 1с?
# Ответить
76. oleg.rizvanov 06.06.2015 14:01
Поддержка бесплатных версий ROM-Asterisk прекращена
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл