Pull to refresh

Comments 56

Только вчера возился с Asterisk. Тоже с нуля, но с 1.6
Разница в командах CLI и синтаксисе конфигов по сравнению с 1.4 на самом деле чувствуется.
Все отлично написано, только стоит добавить логическую схему организации подключения клиентов и пиров.
Я для дайлпана предпочитаю extensions.ael. Сразу отбрасывается куча текста в конфиге и внешний вид становится более удобочитаемым.
Завтра как раз нужно развернуть Asterisk =)
тоже буду поднимать 1.4 но на FreeBSD
На FreeBSD 1.8 хорошо поднимается. При чём работают и аудиоконференции на meetme и модемы Huawei E150/E1550 (а возможно и другие, которые поддерживаются datacard) в качестве GSM-шлюзов. Только FreeBSD советую не ниже 8.1.
По качеству работы ничего не могу сказать. Работает без сбоев. Несколько раз обновлялся через порты. Но у меня нагрузка близка к нулю — максимум несколько звонков в сутки.
Freebsd 8.1 i386 будет стоять
кстати, что посоветуете/подскажите по части системных требований астериска?

офис — 20 сотрудников, телефоны используются Cisco 7971G, 7940G, 7912G-CH1

Сейчас посмотрю что в портах и отпишусь, что буду ставить
tavda# pkg_info|grep asterisk
asterisk18-1.8.2.3 An Open Source PBX and telephony toolkit

По нагрузке ничего не скажу. У меня только 3 телефона: D-link DPH-150, D-link DPH-300S, Siemens Gigaset C470 IP и временами софтфоны.
Начал ставить 1.8.2.3, он в портах
Если интересно, некоторые мелочёвки для себя описывал на www.tavda.net. Может пригодится или будет что добавить.
Кстати не указал FXO gateway у меня будет Cisco SPA8800
Если с портов планируется ставить — можно смело 1.6 ставить! единственный нюанс, потом отключить загрузку модуля chanh323.so — у меня с ним в .dumped выпадал. а в остальном даже как-то приятнее работать чем в 1.4 (хотя сам начинал с 1.4), потом дополнить его кодеками G729 и ему-подобными и можно смело звонить в мир!)
пока не будет приемлемого и бескровного добавления и настроек факсов — * будет на вторых ролях, как бы это не звучало печально…
По факсам мне тоже весь мозг вынесли. В результате обсуждения было решено воспользоваться сторонним факс-сервисом породы fax2email-email2fax. Это недорого и покрывает крайнюю необходимость в отправке факса. Например, в налоговую.
На мой взгляд дешевле будет коробочка типа pap2t и обычный аналоговый факсовый аппарат — это для отправки. А с приемом астериск и сам прекрасно справится.
у меня с факсами проблем нету (t.38) — 500 человек абонентов, проблемы были, пока не заменили оконечку на стороне абонентов, после этого уже полгода как жалоб небыло
Не жадничайте: напишите статью (-:
Да, пожалуйста, опишите как настраиваются факсы без железных плат.
Без железных плат вопрос с факсами обычно решается вопросом к провайдеру «t.38 держите?» и установкой патча, для корректной работы с t.38. А вот с платами и аналогавыми линиями приходиться иногда играться с уровнями громкости — что бы и dtmf бегал и факсы шуршали.
Еще можно настроить связку IAXModem + hylafax +WinHylafax (для ПК под виндой) — оттестировал на asterisk1.6 (с портов) +FreeBSD 7.2. и факсимильный аппарат в ТФОП. отправляются факсы путем «отправить на печать» в приложениях ПК, а прием можно настроить прямо на почту. приходят TIF-ки вполне-таки хорошего качества.
Я сознательно избегаю любого железа для сохранения мобильности. По BCP простой АТС не должен превышать 2-х часов в любом случае, кроме глобальной катастрофы. Хотя, если поднять резервную АТС без факсового функционала, то это устроит всех, тем не менее, дополнительные настройки усложняют развёртывание на запасном хосте.
В данном случае имеется ввиду что факсимильный аппарат стоял в другой конторе и я на нем просто тестил астер. со стороны asterisk никаких железок не пришлось доставлять.
насчет резервов — можно много чего придумать, смотря как раздут бюджет и насколько хватает фантазии :) можно все конфиги засунуть в БД, поставить зеркалирование БД, и несколько резервных АТС, которые будут «присасываться» к БД и дергать оттуда конфиги. Тоже некая экономия времени на развертывание(учитывая что большинство конфигов в БД).
Добро пожаловать на Хабр!
1. Версии Астериска 1.4 и 1.6 сейчас уже отходят на второй план, уступая версии 1.8. Если Вы начинаете с нуля, то начинайте с 1.8.
2. Приведите диалплан к нормальному виду, пусть в нём описываются непосредственно направления звонка без префиксов. Сделайте в отдельном контексте обработку, которая сначала вырезает префиксы «99» из набираемого номера и после этого отправляйте номер на обработку. Например так
[zebra]
include => 99-cut
;Belorussia
exten => _37517XXXXXXX,1,Dial(SIP/zebra/${EXTEN})
;Ukraine
exten => _380XXXXXXXXX,1,Dial(SIP/zebra/${EXTEN})
[99-cut]
exten => _99XXXXXXXXXXXX,1,Goto(${EXTEN:2},1)
3. Как у Вас звонки на мобильные направления попадают в экстеншн «99+XXXXXXX», если «99» это выход на внешнюю линию (для абонентов внутренней АТС)? Если человек использует SIP с мобильного и набирает номер, то на АТС этот номер придет в виде +XXXXXX, и в Ваш экстеншн он не попадёт.
4. В диалплане имеет смысл выделять общие блоки (например межгород) и выделять их в отдельный контекст. Далее диалплан пишется так, чтобы звонки, поступающие в этот контекст с разных направлений проходили разную обработку. Т. е. при звонке с сотовых — вырезался плюсик. С внутренней сети — «99».
5. Обязательно нужно разделить входящие и исходящие направления звонков. Не использовать контекст default по умолчанию для осуществления исходящих звонков Multifon. Эти и другие моменты связанные с безопасной настройкой Asterisk'а очень хорошо расписаны здесь
Спасибо за замечания.
Сегодня вечерком проверю/попробую.

по третьему пункту: абоненты на мобильниках используют встроенную функцию rewrite. Т.е. они выбирают номер из записной книги а rewrite добавляет к номеру 99 для звонка через сип.
Вообще для описания extensions рекомендую посмотреть в сторону ael — куда более логичный синтаксис. Так же прочитайте про penalty в очередях — и ваш конфиг сократится в разы.
пожар в здании – я поднимаю виртуалку с Астериском на любом хостинге, который умеет их импортировать, и просто сообщаю клиентам новый IP АТС.

А если вы дадите своему серверу еще и хостнейм, то при «пожаре» просто смените адрес в DNS — и привет :-)
время распространения DNS по сети оставляет желать лучшего. У многих локальных провайдеров время обновления DNS насмерть зашито в собственных конфигах и может быть сколь угодно большим.
Например, один провайдер города Нижний Тагил до сих пор отправляет клиентов, запрашивающих один мой домен, по адресу, с которого сервер съехал уже полгода как.
Там видимо провайдер — кеширующий прокси без возможности обратиться наружу. И это печально, что такие еще есть.
Заведите собственный ДНС сервер. И все дела. А обзванивать все филиалы во всех странах — это не тру.
Огромное Вам спасибо. Многое из статьи мне пригодится. У Вас получилась хорошая и удобная компиляция, того что можно сделать с помощью asterisk.
Что вы имели ввиду, говоря: "… весь Тайвань в drop ушел, судя по iptables."?
Что, что… С открытым портом SIPа на сервер периодически начинается паломничество народа, пытающегося подобрать логин-пароль для подключения к серверу… Ну а тот самый модуль — банит на автомате за такое!
Так что то и обозначает — Тайвань весь побанили!
поднимал 1.6 и 1.8, правда собирал с chan_h323 с репозиториев. Из минусов — при нагрузке больше 150 звонков начинает страдать… опять же G711<->G729 очень много ресурсов ест. 1.8 правда еще не пробовал под нагрузкой.
Спасибо за статью. Хотя я и считал себя знакомым с астериском, но из статьи пометил для себя несколько моментов, о которых раньше даже и не задумывался.
Молодца! нас, «Звезданутых», должно быть больше и больше! И тогда мы таки покажем кузькину маму МГТСу и прочим «добрым» личностям из всяких там опсосов, ставящих охренительные цены на роуминг и межгород!

Из свежачка: Очередь вызовов в Астериске — мне пока не надо, но для организации — может пригодиться!

> Если вдруг что-то случается, не важно что именно – будь то новый Московский блэк-аут или просто пожар в здании – я поднимаю виртуалку с Астериском на любом хостинге, который умеет их импортировать, и просто сообщаю клиентам новый IP АТС. Попробуйте представить время недоступности телефонной связи с обычной телефонией.
Могу посоветовать домен использовать с SRV записями. SIP — один из немногих протоколов, который знает про SRV и умеет ими пользоваться.
Логика такова, что можно задать несколько IP для sip.домен.ru с разным приоритетом: у основного он будет максимальным, а у резервного — меньше. Тогда при падении основного сервера клиентов автоматом перекинет на резервный сервак, а после восстановления основного и отключения резерва — вернёт обратно…

Насчёт удобства и т.д. — вот наверняка с каким-нить финтом ушами Астериск «кратковременное нажатие на рычаг» обработать сможет! Скорее всего — при отбое заносить номер абонента и время отбоя в БД и если повторное поднятие трубки в течении 5, скажем, секунд — переключить на внешний вызов…
Из минусов — понятно, что у USB-трубок старый добрый рычаг отсутствует как класс…
Кстати, я тут еще подумал, что если Ваш мануал претендует на пособие для начинающих, то при описании диалплана в первых строчках должно быть определено, как звонить в экстренные службы (112 или аналогичные), а потом уже всё остальное. И после настройки обязательно проверить работоспособность этого диалплана через
CLI> dialplan show 112@default
Абсолютно все VoIP-операторы указывают в соглашениях, что их связь не годится для вызова экстренных служб в критических ситуациях.

Кроме того, когда в офисе десятки мобильных телефонов, не считаю необходимым заморачиваться по этому вопросу.
>; затем, разрешаем только те, что хотим использовать. Порядок значения не имеет.
Я использую версию 1.4, не думаю что в 1.6 изменилась логика. Порядок как раз значение имеет. На этапе согласования проверяется какие кодеки разрешены у клиента и сервера. Из совпадающих выбирается тот, который указан в конфиге астериска первым.
Спасибо за замечание. Тем не менее, после проверки ваша версия не подтвердилась. Астериск предпочитает alaw 729-му кодеку по необъяснимым причинам, пока не запретишь alaw на клиенте.
Внесу свои 5 копеек насчет факсов.
Ленивый вариант.
Если у вас есть железные факсы, то в 99% случаев стабильно будет идти отправка через G711 (alaw, ulaw), главное, чтобы VoIP-провайдер поддерживал этот кодек.
Все говорят, что это не обязано работать стабильно, а по факту работает. Каждый день отправляем и принимаем факсы (работаем с VoIP уже примерно год, факсы не отправляются у нас только в Яндекс ))
Неленивый вариант.
Курите T38. Кстати, есть дополнение fax for asterisk — digium выдает бесплатно 1 линию для факса, за остальное придется платить.
Через Linksys SPA8000 с отключенным T38 железные факсы заработали ни шатко, ни валко.
Т38 курил, чуть не помер. Ну его в пень. Если когда-нибудь будет хотя бы три-четыре полностью свободных дня — займусь ради галочки.
>… булькающую связь…
Курите шейпинг трафика. Дело скорей всего в том, что канал забит. Вам нужно настроить приоритезацию трафика.
Я уже в своей работе столкнулся с этой проблемой — это решаемо.
Посмотрите шейпинг на основе HTB — он, пожалуй, самый простой.
На всякий случай напомню, что кодеки используют разный канал. Поэтому если канал маленький, то лучше перейти на кодек с низким битрейтом.
Канал отличный, стабильные гарантированные 10МБит. На роутере просто сказано «Для IP-адреса АТС безусловный высший приоритет на все виды трафика».

Косяки только у «Зебры», в этом уже убедились. Когда связь идёт между сотрудниками, даже находящимися в разных странах, связь прекрасна как западный склон Фудзи на закате. Как только в цепочке оказывается «Зебра» — проявляются артефакты. Но, справделивости ради, нужно отметить, что не на всех направлениях проблемы. А там где есть — потихоньку решаются по заявкам.
И еще.
Советую присмотреться к GSM-шлюзам (при сопутствующем изменением диалплана).
Мы в своей работе применяли Termit, сейчас перешли на AddPac.
Это сэкономит ваши деньги на сотовых разговорах.

И еще.
Связь до филиалов у вас идет напрямую через интернет между VOIP-АТС или через провайдеров дополнительных? (извиняюсь, если не увидел из текста)
По идее, между филиалами по VoIP связь должна быть бесплатная — это реализуемо.
Кроме этого, можно сделать вызов конкретного абонента типа 9-<НОМЕР_ФИЛИАЛА>-101.

И еще.
Есть возможность проверить качество связи. Думаю вам это будет актуально (эхо-тест).
; Marco Polo test
exten => 9000,1,Playback(demo-echotest)
exten => 9000,n,Wait(1)
exten => 9000,n,Echo()
exten => 9000,n,Hangup

И еще.
> Поставить какую-нибудь крайне простую систему отчётности по звонкам. Задача стоит всего-лишь во внятной визуализации количества звонков для проверки счетов.
Поставьте FreePBX. Хорошая система, там кстати и FOP тоже есть. Кстати, есть в репозитории от digium. Т.ч. прям щастье.

И еще.
> Поставить систему мониторинга, чтобы в реальном времени отслеживать состояние АТС, звонков, очередей.
Ищите в гугле Asterisk SNMP. Можно будет смотреть состояние через snmpwalk. Дополнительно можете прикрутить визуализатор типа cacti.

И еще.
>Советую присмотреться к GSM-шлюзам
Любые железки в пролёте. АТС живёт в виртуалке.

>Связь до филиалов у вас идет напрямую через интернет между VOIP-АТС или через провайдеров дополнительных?
Все филиалы живут в одной АТС.

>Поставьте FreePBX
FreePBX превращает конфиги АТС в какую-то нечитабельную кашу. По крайней мере, я попробовал в отдельной виртуалке и результат меня удручил. Веб-морда — это прекрасно, но мы же комсомольцы, поэтому будем делать ручками.

SNMP сейчас ковыряю. Скоро допишу, наверное, в статью.
> Любые железки в пролёте. АТС живёт в виртуалке.
Ну и что? Работает-то по SIP! Т.е. по ethernet, физического коннекта не нужно. Цепляете в свитч и всё.
Чтобы не быть голословным, приведу модель — AddPac GS1002 (не рекламы ради!).

> FreePBX превращает конфиги АТС в какую-то нечитабельную кашу.
Согласен, сталкивался. Но зачем ее использовать для этого? ;) Намек думаю вы поняли. Используйте её просто как веб-морду для статистики.
Кстати, вы знаете как сделать «доступную регистрацию», т.е. указать допустим 2 сервера, и подключаться к доступному из них.
Т.е. если не работает один канал, то использовать другой.
вот она обратная сторона жопнсорса…
сколько надо времени потратиь чтобы установить голимую атс…

посмотрите пример норальных продуктов — 3CX.com

я не понимаю нифига тольком в ип телефонии поставил за час и подключил телефоны линсисовские.
и все отлично работает за копейки.

а потратить 2 недели (считаем 100$ в час, 80 часов, итого 8000 уе)
www.3cx.com/ordering/pricing.html — думаю проще готовый продукт купить с поддержкой и сэкономить кучу времени.
неплохой у вас часовой рейт ;)
Использовать Asterisk с реальным IP адресом без установленного и работающего fail2ban — ошибка, которая рано или поздно будет наказана звонками на кубу тыщ на 300 руб. (в лучшем случае).

Поэтому автору респект за упоминание о fail2ban в первых же строках.
Возможно я поздно с комментарием, но мне кажется, что в некоторых макросах можно сократить количество строк «кода», если использовать GotoIf, вместо простого Goto.

Например есть такое:
[macro-dial-ext] ;макрос “что делать при наборе 4-значного экстеншна”

exten => s,1,Answer() ;поднимаем трубку

exten => s,2,Dial(SIP/ext${ARG1},20,tT) ;набираем номер, переданный как аргумент к макросу с таймаутом 20 секунд и разрешаем трансфер звонка любой стороне.

exten => s,3,Goto(s-${DIALSTATUS},1) ;отрабатываем код полученный от приложения Dial.

exten => s-NOANSWER,1,Macro(group-dial,${ARG1:0:2}00) ;перекидываем на группу

exten => s-BUSY,1,Macro(group-dial,${ARG1:0:2}00)

exten => s-CONGESTION,1,Macro(group-dial,${ARG1:0:2}00)

exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1:0:2}00)

exten => _s-.,1,Hangup ;кладём трубку

Заменяем Goto на GotoIf:
[macro-dial-ext] ;макрос “что делать при наборе 4-значного экстеншна”

exten => s,1,Answer() ;поднимаем трубку

exten => s,2,Dial(SIP/ext${ARG1},20,tT) ;набираем номер, переданный как аргумент к макросу с таймаутом 20 секунд

exten => s,3,GotoIf(${DIALSTATUS} = ANSWER?:send-to-group)

exten => s,n(send-to-group),Macro(group-dial,${ARG1:0:2}00) ;перекидываем на группу

exten => s,n,Hangup ;кладём трубку
У меня на некоторых экстенжнах различается разводка в зависимости от статуса.
Но всё-равно спасибо, познавательно.
Да в общем-то я сам это недавно узнал, причем из книги для новичков, которая по сети гуляет «Asterisk — будущее телефонии» :)

Кстати, советую многим её прочитать, хорошая основа по телефонии, причем доступным языком написано.

P.S. Я там в примере своем, кажется забыл еще скобки []. Но не суть :))
UPD: Извиняюсь за форматирование, в предосмотре все было нормально.
Не много некрасиво оформил dialplan в статье. а вообще отличия там простые. 1.4 Long term support. Но скоро тоже уйдет внебытие как и 1.2 1.6 short term support версия. в ней много багов и ей мало кто пользуется. 1.8 long term support много поменялось как в синтаксисе, так и в восзможностях АТС. Но есть проблема с agents. Там нельзя сделать логин агенту статично. Я сильно не копался, но пока не нашел решени.я например ты хочешь построить контакт сентер, но что бы каждый представитель делал логин для отчетности. У меня сейчас стоит 1.8 с последним freepbx + faxserever +imap (fax2mail). Факсы приходят на мой айфон даже по мылу. сори что пишу ответ так поздно. как увидел статью так и отвечаю. успехов в этом деле.
Only those users with full accounts are able to leave comments. Log in, please.