Страница 1 из 2

Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 10:41
Sergey_M
Добрый день!
Я уверен, что данная тема обсуждалась, но перекопав половину форума, я так ине нашел подобной темы, так же и в интернете искал, но как то безрезультатно... Поэтому прошу помощи у вас!

Поставлена задача разобраться в IP АТС Asterisk, брал несколько платформ:
- FreeBSD + Asterisk
- AsteriskNOW (FreePBX)
- Elastix Asterisk
Первым хотел поставить именно FreeBSD с астериском, так как на мой взгляд это наиболее верное решение, все таки фря серверная платфома, но не получилось в виду слабого понимания работы этой операционки :(. Вторым вариантом взял AsteriskNOW, как писалось на сайте, полностью готовое решение, но на этапе соединения двух серверов начались траблы и как я понял, связаны с неким лицензированием. Далее мой взгляд пал на Elastix, установка прошла успешно, соединение двух серверов тоже на высоком уровне в отличии от AsteriskNOW, что не могло не порадовать. Далее встал вопрос с возможностью заставить работать 2 тестовых Asteriska через боевой Asterisk компании. (См. рисунок)
VoIP scheme
VoIP scheme
Вызовы на городские линии с телефонов, подключенные к серверам В и С не работают. А телефоны подключенные к боевому Asterisk'у (Server A) звонят нормально...
Возможно проблемы в маршруте или в чем то еще... понять не могу в чем (даже пытался разобрать, что пишут консоли Asterisk'ов, но увы, пока не хватает знаний, что бы понять (((... Подскажите, что вам необходимо, для того, чтобы увидеть полную картину.
ПОЯСНЕНИЕ: Все Asterisk'и настроены через WEB, как я понял, это значит все записи внесены в MySQL серверов...

Даю DIALPLAN'ы всех астерисков
Server A (Outbound Routes):
- Name (9_outside):
(prepend) + prefix [match pattern/CallerID]
()+|[8./]
(8)+7[./]
TRUNK Name -> trunk_to_ZAP_channel_g0 (поток Е1)
- Name (Server B):
(prepend) + prefix [match pattern/CallerID]
()+|[4XXXX/]
TRUNK Name -> trunk_to_serverB
- Name (Server C):
(prepend) + prefix [match pattern/CallerID]
()+|[5XXXX/]
TRUNK Name -> trunk_to_serverC

Server B (Outbound Routes):
- Name (9_outside):
(prepend) + prefix [match pattern/CallerID]
()+|[8XXXXXXXXXX/]
()+|[8./]
TRUNK Name -> trunk_to_serverA
- Name (Server A):
(prepend) + prefix [match pattern/CallerID]
()+|[2XXX/]
TRUNK Name -> trunk_to_serverA
- Name (Server C):
(prepend) + prefix [match pattern/CallerID]
()+|[5XXXX/]
TRUNK Name -> trunk_to_serverС

Server C (Outbound Routes):
- Name (9_outside):
(prepend) + prefix [match pattern/CallerID]
()+|[8XXXXXXXXXX/]
()+|[8./]
TRUNK Name -> trunk_to_serverA
- Name (Server A):
(prepend) + prefix [match pattern/CallerID]
()+|[2XXX/]
TRUNK Name -> trunk_to_serverA
- Name (Server B):
(prepend) + prefix [match pattern/CallerID]
()+|[4XXXX/]
TRUNK Name -> trunk_to_serverB

Пожалуйста подскажите, где именно я ошибаюсь... Понимаю, что вопрос скорее всего в моей некомпетентности, но иначе я бы к Вам не обратился...

Благодарю за внимание.

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 11:11
ded
Сергей,

проблема в том, что многие начинающие (сисадмины?) пытаются овладеть настройкой Астериск за 2-3 дня, искренне не понимают что они не понимают!
Разумный подход - получить знания по этой специфической теме на курсах по Астериск, или искать аутсорсера - интегратора. Лучше компанию, чем одинокого пионэра.
Вы могли бы постигать систему и самостоятельно, используя мнегочисленную литературу, где последовательно изложены азы и примеры. И это было бы хорошо для понимания и настройки одного астериска. А у Вас сразу три. Добавляется непонимание структуры транков, их различных параметров, маршрутов прохождения по этим транкам, контекстов, куда попадают входящие.
Понимания этого у Вас нет, но, вероятно, кажется что не хватает какой-то малости - "волшебный порошок": посыпал - и всё заработало.
Так не будет. :(

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 11:24
Sergey_M
Простите за мой топик, я могу спокойно работать с CISCO CME, там все очень просто и понятно, а вот с Asterisk'ом (я устроился в новую компанию, где хотят на всем с экономить) я никогда дел не имел... и я понимаю многие аспекты работы телефонии в принципе, просто не хватает какой то малости для базовой настройки системы... Отсюда и возник данный топик, отсюда и прошу помощи... Книгу скачал и не одну, и читал их, но именно такого примера там не описано, я уже пробовал настроить и в ручную (но потом мне рекомендовали, что если система работает на мускуле, то лучше настраивать через WEB), и через WEB, транки поднимаются, звонки между АТС ходят, но вот чтобы выпустить вторичные АТС в город, тут мне пока понимания именно самого Asteris'а и не хватает...

И если Вас не затруднит, может ссылку или хотя бы куда копнуть поконкретнее скажите, я понимаю, что что-то не так с роутом происходит, то есть пакет от второстепенного астериска приходит несколько не той формы, какой требуется и основной астер по причине того, что этот пакет не подходит ни под одно условие, просто отбивает и все...

Заранее благодарен.

P.S. Я далеко не начинающий сис. админ, в этой сфере работаю порядка 15 лет, но вот астер попался мне впервые... Не было нужды в нем, всегда работал с CISCO...

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 11:43
ded
Чтобы выпустить вторичные АТС в город - надо принимать транки от серверов В и С в контекст from-internal на сервере А. Назначение таких вызовов должно быть в рамках текущего диалплана сервера А.
То есть набраный номер в город должен уходить в простой форме как с телефона сервера А (основной астер), так и с серверов В и С (на них не должно быть трансформации номера на транках). А там у вас присутствует трансформация.
Это можно и нужно отслеживать в консоли сервера А (основной астер). Выхлоп там внятный и понятный, лучше чем в CME & CUCM, есть опыт.

Если в этой сфере работаете порядка 15 лет, то быстро разберётесь.

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 15:27
Sergey_M
ded писал(а):Чтобы выпустить вторичные АТС в город - надо принимать транки от серверов В и С в контекст from-internal на сервере А.
Я понимаю логику данного этапа, не могу понять, как это реализовать в настройках, перепробовал наверно уже все, что только в голову могло прийти... видимо чего то не понимаю все же...

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 15:34
ded
Всё через вэб интерфейс. На сервере А в разделе Транки должны быть два транка - от В и от С. Лучше - по IAX2.
Параметр там установаить у каждого
context=from-internal

Мониторить попытки входящих транзитных на сервере А в консоли.

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 15:49
Sergey_M
Все именно так и делал, но Asterisk мне пишет (при условиях, что я изменял параметры context=from-peer и context=from-internal в Incoming Settings -> USER Details:) следующее все равно:

Код: Выделить всё

    -- Accepting AUTHENTICATED call from 192.168.0.2:
       > requested format = alaw,
       > requested prefs = (alaw|ulaw|gsm),
       > actual format = ulaw,
       > host prefs = (ulaw|alaw|gsm),
       > priority = mine
    -- Executing [89663198373@from-trunk:1] NoOp("IAX2/aster01-9748", "Catch-All DID Match - Found 89663198373 - You probably want a DID for this.") in new stack
    -- Executing [89663198373@from-trunk:2] Goto("IAX2/aster01-9748", "ext-did,s,1") in new stack
    -- Goto (ext-did,s,1)
    -- Executing [s@ext-did:1] Set("IAX2/aster01-9748", "__FROM_DID=s") in new stack
    -- Executing [s@ext-did:2] Gosub("IAX2/aster01-9748", "app-blacklist-check,s,1") in new stack
    -- Executing [s@app-blacklist-check:1] GotoIf("IAX2/aster01-9748", "0?blacklisted") in new stack
    -- Executing [s@app-blacklist-check:2] Set("IAX2/aster01-9748", "CALLED_BLACKLIST=1") in new stack
    -- Executing [s@app-blacklist-check:3] Return("IAX2/aster01-9748", "") in new stack
    -- Executing [s@ext-did:3] ExecIf("IAX2/aster01-9748", "0 ?Set(CALLERID(name)=44444)") in new stack
    -- Executing [s@ext-did:4] Set("IAX2/aster01-9748", "__CALLINGPRES_SV=allowed_not_screened") in new stack
    -- Executing [s@ext-did:5] Set("IAX2/aster01-9748", "CALLERPRES()=allowed_not_screened") in new stack
    -- Executing [s@ext-did:6] Set("IAX2/aster01-9748", "_RGPREFIX=IT@") in new stack
    -- Executing [s@ext-did:7] Set("IAX2/aster01-9748", "CALLERID(name)=IT@Sergey") in new stack
    -- Executing [s@ext-did:8] Goto("IAX2/aster01-9748", "ext-queues,607,1") in new stack
    -- Goto (ext-queues,607,1)
    -- Executing [h@ext-queues:1] Macro("IAX2/aster01-9748", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("IAX2/aster01-9748", "1?endmixmoncheck") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] NoOp("IAX2/aster01-9748", "End of MIXMON check") in new stack
    -- Executing [s@macro-hangupcall:10] GotoIf("IAX2/aster01-9748", "1?nomeetmemon") in new stack
    -- Goto (macro-hangupcall,s,28)
    -- Executing [s@macro-hangupcall:28] NoOp("IAX2/aster01-9748", "End of MEETME check") in new stack
    -- Executing [s@macro-hangupcall:29] GotoIf("IAX2/aster01-9748", "1?noautomon") in new stack
    -- Goto (macro-hangupcall,s,34)
    -- Executing [s@macro-hangupcall:34] NoOp("IAX2/aster01-9748", "TOUCH_MONITOR_OUTPUT=") in new stack
    -- Executing [s@macro-hangupcall:35] GotoIf("IAX2/aster01-9748", "1?noautomon2") in new stack
    -- Goto (macro-hangupcall,s,41)
    -- Executing [s@macro-hangupcall:41] NoOp("IAX2/aster01-9748", "MONITOR_FILENAME=") in new stack
    -- Executing [s@macro-hangupcall:42] GotoIf("IAX2/aster01-9748", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,45)
    -- Executing [s@macro-hangupcall:45] GotoIf("IAX2/aster01-9748", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,48)
    -- Executing [s@macro-hangupcall:48] GotoIf("IAX2/aster01-9748", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,50)
    -- Executing [s@macro-hangupcall:50] AGI("IAX2/aster01-9748", "hangup.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
    -- <IAX2/aster01-9748>AGI Script hangup.agi completed, returning 0
    -- Executing [s@macro-hangupcall:51] Hangup("IAX2/aster01-9748", "") in new stack
  == Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'IAX2/aster01-9748' in macro 'hangupcall'
  == Spawn extension (ext-queues, h, 1) exited non-zero on 'IAX2/aster01-9748'
    -- Hungup 'IAX2/aster01-9748'

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 16:01
awsswa

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 16:14
Sergey_M
awsswa писал(а):http://awsswa.livejournal.com/19660.html
Прошу прощения, но данная статья к моему случаю не имеет никакого отношения... У меня все Asterisk'и соединяются нормально как по SIP, так и по IAX2 протоколу... Но спасибо, появились еще мысли к размышлению, буду пробовать дальше... Хотя пока при любых настройках входящего роута, астериск пишет, что дозвон происходит с транка...

Re: Звонки с Asteriska сквозь Asterisk на городскую АТС

Добавлено: 23 май 2014, 16:28
Paguk
Посмотрите в сторону исходящей маршрутизации.
Как на боевом, так и на тестовых астерисках.