Перейти к содержимому


Бюджетное решение Asterisk <-> GSM


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 14.05.2011 - 15:57

Уважаемые коллеги!

С удовольствием поделюсь моим практическим опытом в создании VoIP <-> GSM шлюза на PBX Asterisk для linux.
Готов ответить на вопросы.
В Российском сегменте сети существует множество статей на эту тему. Однажды меня заинтересовала статья одного аматера, вот она URL
Не многие демонстрировали свой опыт подобным методом. В моём случае, у меня был ранее опыт с Asterisk. Захотелось подключить GSM.
Купил первый модем Huawei e1550 за 200грн. чёрный от киевской звёздочки. Прошивка 11.608.14.11.174 допускала совершение голосовых вызовов.
Перед покупкой девайса, я читал массу разного экспирианса людей. Был риск купить донгл который не удастся разлочить, включить войс.
Но, войс был. И это радовало. А значит можно было обойтись без разлочки. Она нужна только для использования донгла с иными операторами связи.
Мне было мало приключений и я захотел решить вопрос разлочки сразу. Нет, мне не хотелось искать сомнительные прошивы, пытаться их "всунуть" в модем.
А тем более опыт некоторых экспериментаторов показал, что риск в данном случае не благородное дело. За деньги я решил вопрос с разлочкой. Это
скучная и банальная история, кому интересно в личку. Всё было готово для моего эксперимента. Acterisk будет обращаться к донглу при помощи модуля.
Именно существование этого модуля побудило меня на изыскания.
Модуль DATACARD - URL разработчик Artem Makhutov или модуль DONGLE - URL разработчик некий BG
DONGLE - более прогрессивно развивается и основа его DATACARD. Ознакомьтесь с наиболее полной и развитой веткой форума, по теме URL
Некоторое, не продолжительно время назад, установил на своей станцию модуль DONGLE. Работает. СМСки и голосовая связь нормально функционируют.
А вот те же СМСки в модуле DATACARD не работают. Мессаги кирилицей способны были свалить модуль и в некоторых случаях вылетала вся станция.
Разница в работе модулей есть. В моём случае используется 12 донглов на разных провайдеров. И даже СМС чат прикрутил :)
В данный момент платформа Debian 6, Asterisk всегда собираю из исходников. Модули и всё, что необходимо разумеется так же из исходников.
Если нет желания всё самостоятельно собирать, в репозитарии есть Asterisk. Ну а модуль собранный я могу подбросить. Если заведётся - хорошо.
Такая вот история.

#2 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 14.05.2011 - 19:19

привет,

не отказался бы от твоей помощи!

У меня стоял Астериск 1.4 на Фре, была проблема, когда с 2х сторон одновременно разговариваешь - слышно через слово. Как будто поток одновременно только в одну сторону может идти  :blink:
Шлюзы D-Link.

Теперь поставил 1.8 (DAHDI вроде допилили под фрю, из порта нормально завелся), только начал настраивать. Но уже столкнулся с проблемой. 1.8 ставится сразу с модулями (нет addons отдельно), их 200 штук. Все конфликтуют, конфиги требуют. Я самые конфликтные поотключал (они мне всеравно не нужны). Может у тебя есть список модулей необходимых для 1.8, чтоб только их подгружать? Мне на 1.4 хватало 5-6 модулей всего.

#3 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 14.05.2011 - 20:05

Цитата
От ведь незадача. На ветке 1.6.2 моя станция. Восьмёрку не смотрел, не собирал.
Нет у меня практического опыта с 1.8.x
А вот если такой путь, посмотреть какие порты слушает астериск. Эти данные могут подсказать, что ничего кроме 5060 UDP не понадобится.
Если конечно нет иных условий. Затем сопоставить порт и ответственную службу (модуль) В сопоставлении может помочь поисковик.
Такой метод даст простую штуку - отключение определённых модулей а также зависимых конф. файлов. Правда есть и не приятность.
В любом случае при отключении некоторых модулей необходимо 200 раз перепроверить работу станции, CLI>reload с уровнем debug >5
И ещё. Про GSM. На всяк случай. Модуль DATACARD автор недавно допилил к 1.8 чего нельзя сказать про DONGLE, пока не работает.
И я пока не знаю примеров работы под FreeBSD.

Модули которые не подгружаются на моей станции (modules.conf):
noload => chan_ooh323.so
noload => chan_skinny.so
noload => chan_iax2.so
noload => chan_mgcp.so
noload => chan_unistim.so
noload => chan_gtalk.so
noload => func_enum.so
noload => func_sprintf.so
noload => pbx_ael.so
noload => app_dahdiras.so
noload => app_festival.so
noload => app_minivm.so
noload => res_ael_share.so
noload => res_phoneprov.so
noload => pbx_dundi.so
noload => res_config_ldap.so
noload => res_smdi.so
noload => res_jabber.so
noload => chan_jingle.so
noload => codec_dahdi.so


#4 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 14.05.2011 - 22:30

Запустил 1.8 наконец, правда с минимальными конфигами. Подключил только FXO и пару клиентов. Модули пока больше не отключал.

Скажу сразу - при звонке на город голос не рвется при одновременном разговоре, что не может не радовать  :rolleyes:  Или это в 1.8 что-то допилили, или твоя статья помогла (у меня тоже D-link DVG-7111S, как у автора статьи). Настроил его по всем советам.

Немного конфиги отличаются от 1.4. В конференции надо выбирать комнату теперь (не очень удобно), в 1.4 надо было только представится и нажать #. Не нашел как сделать, чтобы обходится без комнаты.

И при перезапуске пишет такое:

Цитата

-- Reloading module 'pbx_ael.so' (Asterisk Extension Language Compiler)
[May 14 23:17:12] NOTICE[5167]: pbx_ael.c:122 pbx_load_module: Starting AEL load process.
[May 14 23:17:12] NOTICE[5167]: pbx_ael.c:135 pbx_load_module: AEL load process: parsed config file name '/usr/local/etc/asterisk/extensions.ael'.
[May 14 23:17:12] NOTICE[5167]: pbx_ael.c:138 pbx_load_module: AEL load process: checked config file name '/usr/local/etc/asterisk/extensions.ael'.
  == Setting global variable 'CONSOLE-AEL' to '"Console/dsp"'
  == Setting global variable 'IAXINFO-AEL' to 'guest'
  == Setting global variable 'OUTBOUND-TRUNK' to '"Zap/g2"'
  == Setting global variable 'OUTBOUND-TRUNKMSD' to '1'
    -- Registered extension context 'ael-dundi-e164-canonical'; registrar: pbx_ael
    -- Registered extension context 'ael-dundi-e164-customers'; registrar: pbx_ael
    -- Registered extension context 'ael-dundi-e164-via-pstn'; registrar: pbx_ael
    -- Registered extension context 'ael-dundi-e164-local'; registrar: pbx_ael
    -- Including context 'ael-dundi-e164-canonical' in context 'ael-dundi-e164-local'
    -- Including context 'ael-dundi-e164-customers' in context 'ael-dundi-e164-local'
    -- Including context 'ael-dundi-e164-via-pstn' in context 'ael-dundi-e164-local'
    -- Registered extension context 'ael-dundi-e164-switch'; registrar: pbx_ael
    -- Including switch 'DUNDi/e164' in context 'ael-dundi-e164-switch'
    -- Registered extension context 'ael-dundi-e164-lookup'; registrar: pbx_ael
    -- Including context 'ael-dundi-e164-local' in context 'ael-dundi-e164-lookup'
    -- Including context 'ael-dundi-e164-switch' in context 'ael-dundi-e164-lookup'
    -- Registered extension context 'ael-dundi-e164'; registrar: pbx_ael
    -- Registered extension context 'ael-iaxtel700'; registrar: pbx_ael
    -- Registered extension context 'ael-iaxprovider'; registrar: pbx_ael
    -- Registered extension context 'ael-trunkint'; registrar: pbx_ael
    -- Including context 'ael-dundi-e164-lookup' in context 'ael-trunkint'
    -- Registered extension context 'ael-trunkld'; registrar: pbx_ael
    -- Including context 'ael-dundi-e164-lookup' in context 'ael-trunkld'
    -- Registered extension context 'ael-trunklocal'; registrar: pbx_ael
    -- Registered extension context 'ael-trunktollfree'; registrar: pbx_ael
    -- Registered extension context 'ael-international'; registrar: pbx_ael
    -- Including context 'ael-longdistance' in context 'ael-international'
    -- Including context 'ael-trunkint' in context 'ael-international'
    -- Registered extension context 'ael-longdistance'; registrar: pbx_ael
    -- Including context 'ael-local' in context 'ael-longdistance'
    -- Including context 'ael-trunkld' in context 'ael-longdistance'
    -- Registered extension context 'ael-local'; registrar: pbx_ael
    -- Including context 'ael-default' in context 'ael-local'
       > doing dnsmgr_lookup for '172.25.254.200'
    -- Including context 'ael-trunklocal' in context 'ael-local'
    -- Including context 'ael-iaxtel700' in context 'ael-local'
    -- Including context 'ael-trunktollfree' in context 'ael-local'
    -- Including context 'ael-iaxprovider' in context 'ael-local'
    -- Registered extension context 'ael-std-exten-ael'; registrar: pbx_ael
    -- Registered extension context 'ael-demo'; registrar: pbx_ael
    -- Registered extension context 'ael-default'; registrar: pbx_ael
    -- Including context 'ael-demo' in context 'ael-default'
    -- Added extension '~~s~~' priority 1 to ael-dundi-e164
    -- Added extension '~~s~~' priority 2 to ael-dundi-e164
    -- Added extension '~~s~~' priority 3 to ael-dundi-e164
    -- Added extension '_91700XXXXXXX' priority 1 to ael-iaxtel700
    -- Added extension '_9011.' priority 1 to ael-trunkint
    -- Added extension '_9011.' priority 2 to ael-trunkint
    -- Added extension '_91NXXNXXXXXX' priority 1 to ael-trunkld
    -- Added extension '_91NXXNXXXXXX' priority 2 to ael-trunkld
    -- Added extension '_9NXXXXXX' priority 1 to ael-trunklocal
    -- Added extension '_91800NXXXXXX' priority 1 to ael-trunktollfree
    -- Added extension '_91888NXXXXXX' priority 1 to ael-trunktollfree
    -- Added extension '_91877NXXXXXX' priority 1 to ael-trunktollfree
    -- Added extension '_91866NXXXXXX' priority 1 to ael-trunktollfree
    -- Added extension '~~s~~' priority 1 to ael-std-exten-ael
    -- Added extension '~~s~~' priority 2 to ael-std-exten-ael
    -- Added extension '~~s~~' priority 3 to ael-std-exten-ael
    -- Added extension 'a' priority 1 to ael-std-exten-ael

что это за хренотень? у меня в extensions.conf такого нет, я вообще его удалил и создал новый, там всего строк 10  :blink:
и OUTBOND у меня в конфиге стоит DAHDI/g2 а тут ZAP откуда-то вылез.

нашел - это extensions.ael
никогда его не трогал, че с ним делать?

#5 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 14.05.2011 - 22:54

Цитата
В астериске, с версии 1.6.x возникли файлы конфигурации нового формата. Нет острой необходимости использовать эти форматы.
В частности идёт речь о файле extensions.ael - это тоже конфиг диалпланов. Ты же используешь привычный многим формат экстеншенов
в файле extensions.conf Нужно отключить модуль "pbx_ael.so"  (noload => pbx_ael.so) в конфиге modules.conf и перезапуск станции.

Если тебя интересуют конфы на астериске, попробуй так:

extensions.conf

[meeting]
exten => 123,1,MeetMe(123,1dqM)
exten => 123,n,Hangup

В файле meetme.conf не нужно оформлять конфу с номером 123 Ничего не нужно писать про конфу.
В моём примере, конфа создаётся и умирает динамически. С простыми опциями "1dqM"

'1' - отключить все приветствия перед входом в конфу
'd' - динамически создавать конфу
'q' - тихий режим, когда некто выходит из конфы, без beep
'M' - включаем музычку из холда, если только одна персона в конфе

#6 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 16.05.2011 - 15:56

Подключмл FXS-шлюз, DVG-5121SP, опять проблема  :(

При звонке на любой номер, только берешь трубку, сразу обрывает. Эхотест сразу обрывает.

Цитата

-- Executing [600@full:1] Playback("SIP/800-00000031", "demo-echotest") in new stack
  == Spawn extension (full, 600, 1) exited non-zero on 'SIP/800-00000031'

В логах Астериска пусто, хотя дебуг и вербосити 9. Просто как-будто я трубку кладу. В логах ДЛинка пишет, что не может кодеки согласовать (No codecs matching with remote end). Хотя кодек и на Астериске и на шлюзе стоит ulaw. С софтфона нормально звониться, а вот со шлюза - вообще никак...

#7 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 16.05.2011 - 17:04

Я убью тебя, лодочник! :)
Мало, очень мало информации. Но одна проблема точно есть. Кодек.
Рекомендую всегда приоритетным, если это возможно, использовать кодек PCMA (alaw)
A-law используется в Европе и в остальном мире - даже ВИКИ так считает! :)

Взгляни на этот скрин URL
Не важно чем конфигурится девайс, важно, что на скрине виден список приоритезации кодеков.
DVG-5121SP в веб конфиге есть пободное?

Сведущее. В астериске можно глобально кодеки с приоритетом установить или на каждого клиента,транка отдельно.
Вот пример в sip.conf
disallow=all
allow=g722
allow=alaw
allow=ulaw
allow=g729
allow=g723.1
allow=g726
allow=ilbc
allow=gsm
Для клиентов и транков никаких отдельных установок по кодекам. Попробуй.

И ещё. Наблюдай за живым соединением в консольке.
#asterisk -vvvvvr


#8 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 16.05.2011 - 17:44

Просмотр сообщенияSunLab (16.05.2011 - 17:04) писал:

Взгляни на этот скрин URL
Не важно чем конфигурится девайс, важно, что на скрине виден список приоритезации кодеков.
DVG-5121SP в веб конфиге есть пободное?

Есть, все кодеки включены, ulaw первый.

Просмотр сообщенияSunLab (16.05.2011 - 17:04) писал:

Сведущее. В астериске можно глобально кодеки с приоритетом установить или на каждого клиента,транка отдельно.
Вот пример в sip.conf
disallow=all
allow=g722
allow=alaw
allow=ulaw
allow=g729
allow=g723.1
allow=g726
allow=ilbc
allow=gsm
Для клиентов и транков никаких отдельных установок по кодекам. Попробуй.

Так и сделано

Просмотр сообщенияSunLab (16.05.2011 - 17:04) писал:

И ещё. Наблюдай за живым соединением в консольке.
#asterisk -vvvvvr

Эффект - 0. Ничего не выводит, шлюз тупо вешает трубку.

А теперь прикол. Это был экстеншн 800. На второй FXS шлюза подцепил экстеншн - 100. Конфиг полностью с 800 скопировал. Звоню - все работает  :crazy: Что за прикол???

Впринципе без разницы номера, так что все запустилось. Теперь борюсь с эхом, оно опять появилось  :sad:

#9 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 17.05.2011 - 09:25

Помоги, не могу эходав побороть  :(

На FXS-шлюзе я его выключил, стало лучше. Эхо правда ужасное, но зато не рвет голос.

А на FXO выключаю, всеравно рвет. Звоню на городской, каждый гудок состоит из 3х-4х  :?  Кажды несколько милисекунд обрыв, подскажи куда копать !!!

Настройки FXS:
Изображение

Настройки FXO:
Изображение

#10 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 17.05.2011 - 11:23

Привет!

Попробуй по статье сравнение провести URL
Обрати внимание на FXO Impedance. Измени на: Россия или Тайвань. Возникновение эхо напрямую связано с
несбалансированным сопротивлением телефонной линии.

#11 masters

masters

    Бывалый

  • Форумчане
  • PipPipPipPipPipPipPip
  • 1298 сообщений
  • Откуда :Донецкая область
  • Регион услуги:Донецьк
Репутация: 111
Профи

Отправлено 17.05.2011 - 15:04

Просмотр сообщенияSunLab (17.05.2011 - 11:23) писал:

Привет!

Попробуй по статье сравнение провести URL
Обрати внимание на FXO Impedance. Измени на: Россия или Тайвань. Возникновение эхо напрямую связано с
несбалансированным сопротивлением телефонной линии.

Настроено все было по статье.

Поигрался с Listening Volume и Speaking Volume (уменьшил их), стало намного лучше :) Эха нет, но рвутся шумы в трубке (окружающий фон), сам голос слышно нормально, так что пока сойдет. Думаю если еще ими поиграться, можно добиться лучших результатов.

Теперь возникли новые вопросы  :crazy:

1) Шлюз определяет номер по CallerID, можно его как-то передавать абоненту? Сейчас у меня при звонке с города определяется номер 700 (шлюза).

2) Переадресация вызовов. Как это вообще делается? Например я принял вызов, мне надо переадресовать его другому человеку. Надо: чтобы я набрал этого человека, сказал что ему звонят, положил трубку, и только после этого вызов отдался ему. А в это время абонент слушал бы MusicOnHold. Какие вообще кнопки нажимать, чтоб вызов перенаправить?

#12 Гость_SunLab_*

Гость_SunLab_*
  • Гости
Репутация: 0

Отправлено 17.05.2011 - 23:52

В твоём случае наверное интересна функция астериска - парковка. Есть ещё два типа перевода звонка.
В одном случае при переводе на абонента, астериск будет звонить определённое время на него и если вызов не приняли просто вернёт тебе
вызов - мягкий вариант. И другой безусловный перевод звонка.
Парковка - это такой хитрый пул внутренних номеров, динамический. Когда ты припаркуешь звонок, тебе робот астериски произнесёт номер парковочного
номера из пула. А ты можешь другому пользователю сообщить этот номерок и он просто наберёт его и подключится к абоненту висящему на холде.
Информация очень объёмная.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей