Частный опыт установки и настройки Asterisk с нуля
Во-первых, дисклаймер
Сначала было слово
В некоторый момент времени моими усилиями стратегия развития инфраструктуры компании была перевёрнута буквально с ног на голову. Были очерчены цели и задачи и стало понятно, что нам нужна динамичная, мобильная серверная инфраструктура, чтобы экономить деньги, чтобы можно было в случае каких-то проблем быстро восстанавливаться и/или подниматься в другом месте, чтобы проще было ухаживать за железом и т.п.
Затем было дело
В общем, на бумаге всё было красиво и легко. Дело встало только за развёртыванием.
Сначала были закуплены два простеньких сервера. Core i7-930, 12GB памяти и по 12ТБ на SATA-дисках. На эти серверы был установлен бесплатный Xen Server и развёрнуты виртуальные серверы и рабочие станции для удалённых сотрудников.
В качестве внешнего хранилища используется QNAP-овский NAS, который достался в наследство.
Терабайтные локальные хранилища нужны только для хранения медиа-банка, который довольно велик. Сами серверы все вместе весят меньше 3-х терабайт.
Одним из серверов стал Asterisk на замену старичку Panasonic TDE-200. Т.к. компании необходима дешёвая связь, прямые номера в разных странах, и бесплатные переговоры между сотрудниками, то альтернативы ему за 12 шекелей в общем-то нет.
День первый: Make World
Развёртывать Asterisk было решено на родной для Citrix Xen операционной системе CentOS. Тот же RedHat, только сбоку. Оговорюсь сразу: я всю жизнь админил Windows, а *nix-ами только “игрался” в виртуалках, не считая пары веб-серверов на железе. Поэтому, данное развёртывание Asterisk в Citrix Xen отдаёт некоторой наивностью с точки зрения умудрённых опытом людей.
В общем, я пошел по проверенному пути: открывается на ноуте подробная how-to инструкция для чайников из официальных мануалов и выполняется на сервере буквально и безинициативно. Играть в героев-наладчиков можно будет позже, когда всё будет настроено и работать в состоянии “по умолчанию” и будет сделан первый full backup.
День второй: yum install asterisk -y
Не то чтобы я был очень удивлён, но, тем не менее, я пошёл к знакомому связисту за советом, когда обнаружил, что живых астерисков аж три практически самостоятельных форка: 1.4, 1,6 и 1.8. У каждого из них свои тараканы и примочки. Т.к. я не обольщался надеждой одолеть астериск с наскоку, то решил поставить версию 1.4, как у друга, дабы иметь максимально возможную совместимость конфигов. Хотя, впоследствии, пришлось подниматься до 1.6 из-за отсутствия поддержки TCP в 1.4, когда возникла такая потребность.
Для этого к CentOS был прилажен digium-овский репозиторий и Asterisk ставился из него.
Установка прошла вполне ожидаемо, без сучка и задоринки. В основном, использовался толковый пошаговый roadmap с voip-info.
Сразу же были поправлены iptables, чтобы разрешить трафик по SIP-портам.
Не сразу же, но будущим поколениям рекомендую установить и настроить немедленно пакет по имени fail2ban. Совершенно не лишняя программа на сервере, выставленном в интернет. У меня через день после установки весь Тайвань в drop ушел, судя по iptables.
День третий: ТЗ на функционал АТС
Начинаем самое интересное – планирование. Перед любым процессом настройки надо записать и структурировать все пожелания заказчика и обязательно подписать соглашение, чтобы избежать в дальнейшем конфликтов вида “нет, я говорил совсем другое”. В моём случае заказчик — это компания, в которой я работаю, но это ничего не меняет. Пишем техническое задание на функционал, обсуждаем его с ответственными людьми, утрясаем разногласия и подписываем финальный вариант.
ТЗ на конфигурацию получилось такое:
- Нумерация телефонов четырёхзначная.
- Первая цифра номера — признак страны расположения офиса.
- Нумерация в каждом отделе начинается с первой цифры очередной сотни.
- Каждый отдел является отдельной звонковой группой.
- Если вызываемый абонент любым образом недоступен для вызова, то звонок перекидывается на всю группу.
- Логика обслуживания входящих вызовов:
1. Поднять трубку.
2. Проиграть приветствие.
3. Проиграть рекламу про текущие акции.
4. Проиграть варианты вызова различных отделов или предложить набрать номер абонента.
5. Начиная с пункта 2 ожидать ввода каких-либо команд.
6. После окончания п.4 ждать ввода команд ещё 10 секунд.
7. В случае отсутствия команд снова проиграть варианты вызова.
8. Если абонент всё-равно тупит, то перекинуть звонок на секретаря. - Пользователям, которым необходим такой сервис, прикрутить голосовую почту. В этом случае, если пользователь любым образом недоступен для вызова, перекинуть звонок на голосовую почту.
- По умолчанию, разрешены вызовы только на Россию и Италию — страны, где в основном работает наша компания. Остальные направления открываются по мере надобности самыми узкими масками, т.к. все мы помним страшные истории про “кубинских телефонистов” и не хотим, чтобы в один прекрасный день у нас АТС внезапно во все свои 50 каналов начала звонить в Сьерра-Леоне по 14 долларов в минуту для каждого канала.
На первый взгляд задание простое, а на практике на его согласование ушло довольно много крови. Особенно, на согласование запрета всех направлений, кроме явно разрешенных. С этим клиенту пришлось согласиться только перед лицом неизбежной, в противном случае, необходимости конфигурации VPN на каждом подключающемся к АТС устройстве. Просто я стараюсь придерживаться максимально простых и понятных конфигураций, а клиенту всегда кажется, что добавить какой-то функционал к системе — это “всего-лишь пару кнопок нажать”.
День четвёртый: nano sip.conf
Начинается самое интересное: процесс конфигурации.
Чтобы не затягивать и без того длинную статью, отягощая её подробным описанием мук начальной конфигурации и последующего тюнинга, я просто покажу текущие мои конфиги с комментариями что к чему.
День пятый: nano extensions.conf
Не менее интересный файлик, в котором прописывается вся логика АТС. Очень полезными для понимания логики dial-plan-ов оказались вот эти статьи: http://inhibitz.ucoz.ru/publ/9-1-0-21, http://asterisk-pbx.ru/wiki/doku.php/asterisk_dialplan
Итак, поехали:
День шестой: nano Voicemail.conf, nano queues.conf
Пришла пора приделать голосовую почту.
Здесь, на самом деле, даже конфиги выкладывать нет смысла, ибо там почти ничего не меняется, а что меняется — глубоко специфично. Главной проблемой для меня была настройка MTA для передачи почты через нестандартный порт и с smtp-авторизацией. Убив пол-дня на курение форумов, в конце-концов поставил exim и настроил передачу почты через него.
Два момента, на которых я хотел бы заострить внимание – голосовые сообщения у меня убиваются на Asterisk-е сразу после отправки. Просто, чтобы не забивали винт. Ибо актуальность такого сообщения измеряется минутами, а заставлять пользователей следить ещё и за голосовым ящиком мне кажется глупым. Кроме того, я поставил формат wav49 для сообщений, т.к. лень было заморачиваться со сжатием файлов в mp3, да и на почтовике суровые правила бесчеловечно поступают с мультимедиа-приложениями – все mp3 заменяются на спектрумовский «Exolon» в виде mp3.
С queues.conf тоже всё просто:
День седьмой: Послесловие
Во-первых, хотелось бы отметить собственные ошибки а так же очевидные минусы такого решения:
– Ошибка: для пользователей был закуплен мешок обычных гарнитур, какие используются дома для общения по скайпу или в TS. Это совершенно неподходящее для офиса решение. Сидеть целый день с воткнутой в ухо гарнитурой обычному человеку очень утомительно. А профессиональные операторские гарнитуры стоят как билет на орбиту. Кроме того, женский коллектив не приемлет гарнитур с оголовьем – “у нас причёски!”. Решение – USB-трубки или настольные SIP-телефоны для тех, у кого хороший бюджет.
– Ошибка: спешка нужна при ловле блох. Если вы не знаете что такое Asterisk и с чем его едят, то лучше начните его изучать прямо сейчас. Изучать тщательно. Потому что эти знания обязательно понадобятся, причём, как обычно, со сроком “чтоб вчера было готово”. Не факт, что вам надо будет ставить именно Asterisk, но общая теория VoIP и конструкций Dial-plan-ов вам очень пригодится. Мне пришлось буквально “пожарными” темпами всё ставить и осваивать на ходу из-за жёсткого конфликта с телефонной компанией-монополистом в нашем офисном центре, поэтому, не обошлось без факапов.
– Надёжность. Пока не отрастил себе седых волос за процессом настройки Asterisk, я мониторю АТС постоянно. Просто я не уверен ещё, всё-ли сделал правильно. Пару раз она у меня без причины переставала обслуживать клиентов и я теперь побаиваюсь оставлять её без присмотра.
– Факсов просто нет. Точнее, они как бы есть, но чисто для галочки. Нормальная работа с факсами очень затруднительна без использования железных плат, которых я избегаю для сохранения мобильности.
– Негарантированное качество связи. На каком бы широком канале вы ни сидели, всё-равно с завидным постоянством вы будете получать претензии на “булькающую связь”. Несмотря на стремительное развитие технологий и расширение каналов передачи данных, всё-равно регулярно случаются проблемы. Самый простой пример: небольшой отель в Италии, в котором находится представитель фирмы. В отель проведены целых 2Мбита ADSL-интернета с аплинком в 256к, который раздаётся бесплатно постояльцам через WiFi. Представитель связывается с офисом, используя данный канал, и связь отвратительна — постоянно булькает и вообще. Просто кто-то в отеле решил запостить в одноклассники пачку 12мпиксельных фотографий. Обычное дело.
– Если бюджет не очень большой и на настольные телефоны не хватает, то пользователям приходится осваивать новые методы работы с телефоном – с помощью программных звонилок типа Zoiper или PhonerLite. Кроме того, набирать *77 для перевода звонка их тоже напрягает, хотят “как раньше”, коротким нажатием на рычаг, которого теперь вообще нет.
– Так же моих пользователей раздражает необходимость набирать номера не “по-старинке” 810(кодстраны)(кодгорода)(телефон), а в формате е164. Я бы мог оставить и 810, но в этом случае номер обычного итальянского отеля становится просто космической длины: 998103912345678901. А в е164 он на три цифры короче.
В общем, подавляющее большинство проблем вызваны нежеланием пользователей жить в эпоху перемен. Начиная с ворчания и заканчивая откровенным саботажем. Я бы мог ещё пару страниц перечислять претензии пользователей, но это будет жёсткий оффтоп. Единственное, что можно порекомендовать в данном случае — планируйте переезд на Asterisk тщательно. Постарайтесь сделать его как можно менее неудобным для пользователей. Бизнесу невыгодно тратить оплачиваемое время людей на их обучение новым штукам, которые могли бы работать по-старому, если бы всё было нормально спланировано.
Теперь плюсы решения:
+ Первый и самый очевидный – деньги. Мне удалось сократить расходы на связь примерно в 15 раз. Раньше средний счёт за телефонию у нас был около 5 тысяч долларов в месяц. За прошедший после внедрения Asterisk месяц даже трёхсот долларов не набежало. Львиная доля экономии — разговоры между сотрудниками в разных странах.
+ Мобильность. Если вдруг что-то случается, не важно что именно – будь то новый Московский блэк-аут или просто пожар в здании – я поднимаю виртуалку с Астериском на любом хостинге, который умеет их импортировать, и просто сообщаю клиентам новый IP АТС. Попробуйте представить время недоступности телефонной связи с обычной телефонией.
+ Просто фантастическая гибкость решения и его почти полная бесплатность. Конечно, мы платим своим временем экономя деньги на решениях “из железной коробки”, но лично мне интересно было узнать, как же всё это работает.
Один вопрос, который я сам себе пару раз задавал и который наверняка бы появился в комментариях, если б я на него не ответил здесь: “Почему не поставил Elastix, FreePBX, PiaF или типа того? По роадмапу за 10 минут ставится и работает годами!” Ответ простой: за веб-мордой не видно леса. Да, это удобно, но чтобы преодолеть функционал веб-морды, придётся править нестандартные конфиги, рискуя поломать всё к чёрту одной запятой. А я даже близко не могу представить, что нам понадобится через год. Кроме того, с веб-мордой никогда не узнаешь что и как работает. Поэтому, чистый Asterisk, комсомольцы не могут без трудностей.
Сейчас у меня Астериск с такими конфигами работает вполне удовлетворительно. Есть досадные мелочи, типа эха при звонке на некоторые странные городские АТС, или отвратительная работа некоторых встроенных звуковых карт (будь проклят один популярный производитель бюджетных материнок), но это – дело житейское – решается USB-трубками, с которыми очень хорошо стыкуется бесплатный Zoiper Free.
В общем и целом, я и моё руководство довольны проделанной работой. Надо только ещё поработать надфилем и можно будет приступать к следующему проекту.
Что ещё осталось доделать, для полного счастья:
Поставить и настроить Fop2, чтобы пользователи могли видеть кто из сотрудников в каком состоянии, чтобы не было ситуации перевода звонка на занятого абонента, когда звонок автоматом перекидывается на группу и человек попадает совсем не туда, куда хотел.
Поставить систему мониторинга, чтобы в реальном времени отслеживать состояние АТС, звонков, очередей.
Поставить какую-нибудь крайне простую систему отчётности по звонкам. Задача стоит всего-лишь во внятной визуализации количества звонков для проверки счетов.
Источник
Asterisk. Начало
На написание этой статьи меня побудило практически полное отсутствие how-to по настройке Астериска, с понятными новичку примерами. В сети можно найти кучу информации по настройке IVR, по настройке авторизации SIP-пользователей через LDAP, мануалов по созданию HA-кластеров с Астерисками внутри, etc., но нет ни одной статьи о том, как завести его с нуля, да и еще с примерами. Практически везде предлагается сразу же использовать все возможности, которые предлагает Астериск, а если убрать часть функционала, предлагаемого в мануале, то в большинстве случаев это приведет к получению неработоспособной конструкции. Эта статья — результат хождения по граблям… чтения мануалов. Если вы находитесь в такой же ситуации, что и я пару лет назад — добро пожаловать под кат.
И так, ситуация: вы только что узнали про Астериск и его возможности, и захотели использовать его у себя дома, или ваше руководство захотело IP-телефонию в офис.
Первое что нам необходимо — сервер с установленной операционкой. По ряду причин я выбрал для своих серверов CentOS 6. Все примеры будут с привязкой к этой ОС, так как именно на ней получаются наиболее стабильные сервера. Тем не менее, я ни коим образом не пытаюсь ограничить вас выборе. Астер нормально заведется и под Debian-ом, и под Arch-ем, и даже на FreeBSD. Замечу: желательно не пользоваться гипервизорами на начальном этапе, так как вы можете получить «металлический» голос, либо его полное отсутствие. Про таймеры и прерывания расскажу в следующей статье, так как их описание и настройка выходит за рамки этой статьи. В том случае, если свободного сервера у вас нет и без виртуальной машины не обойтись, обязательно ставьте x86-го гостя.
После того, как вы установили операционку на сервер, можно приступить к установке Астериска. Добавляем репозитории Didgium:
Важное замечание: цифра в конце строки указывает на мажорную версию Астериска. В примере будет установлена наиболее свежая версия из 12-й ветки, доступная в репозиториях.
После установки перезагружаем сервер и заходим в шелл Астериска:
Обратите внимание на ключи, c которыми запускается шелл. Количество ключей «v» влияет на количество выводимой информации при звонке, их количество варьируется от 1 до 14.
Если установка прошла успешно и Астериск запустился, вы увидите вот такое приглашение:
Поздравляю, Астериск установился и готов к работе. Но пока что шелл нам не нужен, поэтому пишем exit.
Для того, чтобы сэкономить ваше время и сделать материал понятным, рассмотрим теорию на конкретном примере, а также разберем основные термины, которыми вам придется оперировать при настройке, при общении с саппортом оператора и своими коллегами. Для примера мы заведем двух внутренних пользователей с номерами 100 и 101, и двух операторов телефонии. Один из операторов будет предоставлять нам городские номера через транк с регистрацией, другой будет обеспечивать доступ к направлениям дальней связи, используя транк без регистрации.
Первое что вам требуется сделать — создать пиров в файле /etc/asterisk/sip.conf. Открываем его:
И сразу переходим в конец файла. Вставляем следующий текст:
Мы завели двух внутренних пиров с номерами 100 и 101. Разберем эти настройки, так как их понимание — ключ к успешному внедрению Астериска.
[internal], это имя шаблона, а (!) указатель шаблона.
Почему сразу начинаем использовать шаблоны? Потому что они сокращают время настройки и уменьшают количество текста с конфигурационном файле, а для понимания они очень просты.
Доступные параметры: «peer», «user» и «friend». Очень часто встречается ошибочное мнение относительно того, чем они отличаются. Многие считают, что параметр «user» разрешает только исходящие, «peer» — только входящие звонки, а «friend» разрешает звонки в обе стороны. Это не так. Использование ключа «peer» отключает проверку соответствия имени пользователя и пароля при звонке. При использовании параметра «peer», Астериском проверяется только соответствие IP-адреса и номера порта источника вызова, при использовании «user» — проверяется поле username, а проверка адреса источника не производится. Параметр «friend» заставляет проверять поле username и IP-адрес источника.
insecure=invite,port
invite — отключается аутентификация при входящем звонке.
port — отключается проверка порта источника.
При первоначальной настройке пропишите оба ключа.
Контекст, в котором будут обрабатывается исходящие звонки от этого устройства. Подробности чуть ниже.
Имя SIP-домена. Для первоначальной настройки укажите IP адрес сервера с Астериском.
IP-адрес пира. В случае использования авторизации по логину и паролю — ставьте dynamic. Конкретный IP указывается только в том случае, если настройки пира используются для транка без регистрации.
Указываем разрешенные кодеки.
В нашем примере первая строка запрещает использование всех кодеков, а вторая — разрешает g711-a. Настройки кодеков индивидуальны для каждого случая, однако, большинство Российских и Украинских провайдеров используют g711a и g729. Последний — пропиетарный, и Астериском поддерживается лишь в Passthrough-режиме (то есть, невозможен транскодинг).
Эта строка заставляет Астериск опрашивать устройство или софтфон пакетами OPTIONS. Необходим для мониторинга и траблшутинга.
Запрещает пересылать медиа напрямую между устройствами. Рекомендую ставить «no», для упрощения настройки.
Говорим Астериску, что пир не за натом. Описание ключей и вариантов их использования, если сервер за ним, выходит за рамки статьи. Про варианты обхода расскажу в следующей статье.
[100](internal)
secret=XXX
[101](internal)
secret=XXX
Тут мы задаем имя пира и берем настройки из шаблона. Единственные уникальные параметры в нашем примере — имя пира и пароль.
На этом мы закончили настраивать внутренних пиров, перейдем к настройке стыка с операторами. Добавим 2 записи в конец sip.conf:
Не буду расписывать значения каждой строки, т.к. все настройки идентичны настройкам внутренних пиров, за исключением поля host. В том случае, если Астериск выступает в роли клиента (а для сервера оператора наш астериск является клиентом), нам нужно указать адрес сервера оператора или его dns-имя.
Добавим второго оператора:
Отличий тоже никаких, за исключением отсутствия строк username и secret, так как, напомню, второй оператор не использует регистрацию.
Осталось настроить регистрацию на сервере оператора №1. Для этого в файле sip.conf, перед секцией описывающей настройки оператора вставим следующую строку:
Синтаксис, для неподготовленного человека, выглядит сложным, поэтому не заморачивайтесь и просто позвоните в саппорт провайдера и узнайте у них о том, как регистрироваться на сервере Астериском, либо попросите выслать настройки. Как правило, большинство операторов без проблем высылают пример конфигурации под свои софт-свитчи.
Наверняка вы редактировали файлы конфигурации под пользователем с ограниченными правами. Если это так, то Астериск не сможет получить доступ к файлу конфигурации, поэтому пишем:
На этом настройка пиров закончена, ее достаточно для работы в минимальной конфигурации, сохраняем и закрываем файл и возвращаемся в шелл Астериска командой:
В шелле Астериска пишем команду:
Теперь вы можете зарегистрировать на своем Астериске пользователей с логинами 100 и 101. Проверяется состояние регистрации следующей командой:
Если вы все настроили правильно, то увидите примерно вот такой вывод:
Если вы это видите, то, поздравляю, ваши устройства или софтфоны успешно зарегистрировались и Астериск увидел сервера операторов.
Состояние регистрации проверяется командой:
Если регистрация прошла успешно, то вы должны увидеть вот такой вывод:
На этом настройка пиров закончена, перейдем к настройке диалплана. Диалплан — это сердце Астериска, с помощью него обрабатываются абсолютно все звонки. Астериск понимает несколько языков, но в нашем примере мы будем использовать стандартный, появившийся в самых первых релизах Астериска. Файл конфигурации хранится в файле /etc/asterisk/extensions.conf.
Откроем его командой:
В стандартных файлах конфигурации хранится много дефолтных правил. Они нам не нужны, поэтому очистим содержимое и пропишем следующее:
Это параметры необходимые для нормального чтения диалплана, поэтому менять их не следует.
Начнем с простого. Нам нужно позвонить с номера 100, на номер 101. Для этого нужно прописать правило, сразу после секции globals:
Разберем эту строку.
[office] — имя контекста, в котором обрабатываются звонки от пира.
exten => — указатель начала шага.
_1XX — маска. На маске остановимся чуть подробнее. С помощью нее сортируются все звонки, попадающие в контекст диалплана.
Маска использует набор паттернов для сортировки звонков по caller-id:
Маска начинается с символа «_», который означает что это шаблон. В случае, если вы забудете указать его, Астериск примет 1XX за вызываемый номер и передаст Dial-у паттерны вместо номера телефона, и звонок не состоится.
1 — номер действия.
Dial — это приложение. В диалплане можно использовать более 200 различных приложений, которые используются для манипуляций со звонками. Сейчас, в самом начале, мы будем использовать только одно приложение — Dial. Из названия понятно, что оно используется для совершения звонков.
(SIP/$
/ — разделитель для передаваемых аргументов.
Каждый из параметров разделяется запятыми. В нашем примере используются трехзначные номера, поэтому в маске должно быть 3 паттерна. В случае, если вы захотите использовать иную длину нумерации, то пишите в маске нужное количество паттернов. Теперь сохраняем файл, открываем шелл астериска и пишем команду:
Если возникли проблемы с доступом к файлу, то пишем:
И снова перезагружаем диалплан через шелл Астериска.
Теперь пробуем звонить. Если вы все правильно настроили, то пир с номером 100 дозвонится до пира с номером 101. Сейчас мы можем звонить внутри офиса, между пирами, которые работают в контексте office. Для того что бы позвонить в город, нам нужно написать правило для исходящих звонков через первого оператора. Прописываем его в контекст office, выглядит оно так:
Перезагружаем диалплан и пробуем звонить в город.
Теперь нам надо принять входящий звонок. Сделаем новый контекст в диалплане, пишем в конец файла:
Поясню что означает «s». Это стандартная маска в Астериске, под которую попадают абсолютно все вызовы. То есть, если мы используем транк с регистрацией, входящий caller-id будет «s».
Сохраняемся и перезагружаем диалплан. Теперь мы можем принять входящий звонок через оператора, предоставляющего нам городской номер.
Сейчас нам понадобилось позвонить на сотовый телефон, с федеральным номером. Допишем еще одну строку в контекст [office]:
Сохраняемся, перезагружаем диалплан и звоним. Все. Теперь мы можем полноценно использовать услуги оператора, предоставляющего городской номер.
Однако, тут кроется небольшая проблема, которая возникнет при звонке на сотовые телефоны других регионов. Так как номер телефона федеральный, то все звонки пойдут через первого оператора. Поэтому уместно уменьшить размер масок в диалплане. К примеру:
С такой конструкцией все звонки на телефоны с кодами из диапазонов 890982XXXXX-890999XXXXX и 8901421XXXX-8901651XXXX пойдут через первого оператора. Не совсем удобно, соглашусь с этим. В будущих статьях выложу конфигурацию диалплана для автоматического выбора оператора в зависимости от направления звонка, так как подобное опять же выходит за рамки этой статьи.
Теперь нам осталось пустить междугородние звонки через второго оператора. Добавляем строку в контекст [office]:
Как вы заметили, тут появились новые приложения, которые обрабатывают звонки. Set(CALLERID(num)=74991234567) — так как мы используем транк без регистрации, то это значит что мы должны отсылать оператору caller-id. Этот номер не обязательно должен существовать. Тут мы просто представляемся провайдеру и не более. Какой номер подставлять — зависит от оператора. Некоторые предоставляют услугу подмены caller-id на номер другого оператора, для совершения исходящих вызовов по межгороду или для зоновуй связи. За подробностями обращайтесь к оператору. same => n — указатель, который позволяет не писать каждый раз маску и номер действия. К примеру:
Можно заменить на:
Во втором случае все гораздо проще, не так ли?
На этом все, мы настроили Астериск. Теперь мы можем звонить в город, на сотовые, по межгороду и у нас есть внутренняя связь между пирами. Получаем вот такой, вполне рабочий диалплан:
Источник