Начальная настройка Asterisk
После удачной установки asterisk — нам нужно настроить его до работоспособного состояния. Конфигурационные файлы asterisk’a находятся в каталоге /etc/asterisk . Настройка осуществляется путем прямого редактирования файлов конфигурации. Изучив и отредактировав эти файлы, мы можем добиться правильной работы сервера.
Конфигурационные файлы.
Главный конфигурационный файл:
asterisk.conf: сервер Asterisk берет из этого файла информацию о том, где какие файлы находятся в системе, включая директорию, где лежат все остальные файлы конфигурации. По умолчанию, Asterisk ищет файл asterisk.conf в директории /etc/asterisk, но мы можем, с помощью параметров запуска Asterisk, задать другое расположение и имя этого файла(ВАЖНО! Если вы не уверены в уровне своей квалификации, имя этого файла трогать не стоит).
Файлы конфигурации каналов Asterisk:
iax.conf: Файл с конфигурацией канала IAX2 sip.conf: Файл с конфигурацией канала SIP chan_dahdi.conf: Файл с конфигурацией каналов DAHDi
Файлы конфигурации Диалплана (Плана набора):
extensions.conf: Конфигурация плана набора extensions.ael: План набора в новом формате AEL (Asterisk Extensions Language) features.conf: Конфигурация Парковки вызовов, перевода вызова, перехвата и прочих сервисных функций Asterisk.
Файлы конфигурации специфичные для некоторых команд плана набора:
alarmreceiver.conf: Конфигурация для команды AlarmReceiver dundi.conf: Конфигурация, используемая командой DUNDiLookup festival.conf: Конфигурация, используемая командой Festival indications.conf: Определение тонов для команды Playtones meetme.conf: Файл с конфигурацией конференций для команды MeetMe musiconhold.conf: для команды MusicOnHold queues.conf: Определение очередей звонков и их параметров для команды Queue voicemail.conf: Конфигурация голосовых почтовых ящиков для команды VoiceMail
Конфигурационные файлы не попадающие в какую-либо категорию:
amd.conf: Параметры приложения для определения автоответчиков. features.conf: Конфигурация парковки вызовов и других возможностей. followme.conf: Параметры для трансфера вызовов системы findme/followme. func_odbc.conf: В этом файле определяются параметры доступа к sql базам данных. http.conf: Конфигурация встроенного мини http сервера в asterisk. logger.conf: Настройка логирования в Астериск manager.conf: Конфигурация для Asterisk manager API modules.conf: Конфигурация загрузки модулей Asterisk odbc.conf: Конфигурация UnixODBC? драйверов для Asterisk res_snmp.conf: Включение поддержки snmp в asterisk и определение статусов агентов full/sub. rtp.conf: Конфигурация протокола передачи media информации RTP, порты и настройки say.conf: Определения правил произношения цифр, дат и т.д. Для различных языков. sla.conf: Конфигурация Shared Line Appearance. smdi.conf: Конфигурация обмена сообщениями SMDI. udptl.conf: конфигурация для транспорта T38 udptl.
Основная прелесть Астериска заключается в том, что во всех файлах конфигурации Asterisk, мы можем включать в эти друг в друга с частями конфигурации, используя директиву #include. Для того, например, чтобы в основном файле конфигурации SIP канала описать все глобальные настройки, а аккаунты SIP пользователей включать из другого файла. Это очень удобно для сложной настройки большого офиса или группы офисов между собой. Т.к. настройки каждого офиса(подразделения\отдела\кабинета) можно хранить в отдельном файле и подключать его к основной конфигурации директивой #include.
Установка кодека g729 (и g723)
Кодек G729 обременен патентными ограничениями, что не дает возможность команде разработчиков Asterisk включить его в стандартную сборку Asterisk. Тем не менее, данный кодек является самым популярным кодеком на низкоскоростных каналах связи. Поэтому нам необходимо установить его самостоятельно.
cli> core show translation
эта команда показывает нам время транскодинга из одного формата в другой. В то же время позволяет понять, какие кодеки установлены. и загружены в систему.
cli>!cd /usr/lib/asterisk/modules/
»!» в CLI означает, что команду нужно выполнить в консоли LINUX
на сайте http://asterisk.hosting.lv/ выбираем версию нашего астериск, платформу (i386 или x86_64) и тип использованного компилятора (IPP или GCC4).
Например, для Сentos 32 бита, на платформе intel, подойдет:
cli>!wget http://asterisk.hosting.lv/bin/codec_g729-ast18-gcc4-glibc-pentium4.so
затем загружаем модуль в астериск
cli>module load codec_g729-ast18-gcc4-glibc-pentium4.so
проверяем
cli> core show translation
если мы ошиблись в выборе нужного кодека, скорее всего астериск «упадет»
Запускаем астериск и видим на каком этапе он вываливается
asterisk -vvvvvvvvvvvvvvvvvvvc
Удаляем модуль и перезапускаем астериск.
Без удаления можно обойтись так: в файле modules.conf добавить строчку
noload ≥ codec_g729-ast18-gcc4-glibc-pentium4.so
это значит, что при старте этот модуль автоматически загружаться не будет
После нормальной загрузки кодека, выполняем команду core show translations для того чтобы убедиться в корректности установки кодека.
Подключение SIP клиента.
Теперь необходимо настроить со стороны Asterisk-а SIP-аккаунт для внутреннего абонента.
Структура sip.conf:
[general]
;глобальные значения переменных канала SIP
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=default
;……
register ≥ user:pass@host/callerid
Создаем номер для абонента, узказывая для него опции подключения.
[100] deny=0.0.0.0/0.0.0.0 //указание сетей, из которых запрещено подключение permit=0.0.0.0/0.0.0.0 //указание сетей, из которых разрешено подключение type=friend //указываем тип абонента. secret=asdff34tgg //задаем пароль на подключение qualify=yes // Активируем KeepAlive port=5060 // Задаем порт, на котором будет работать абонентское устройство (используется, если не работает функция регистрации абонентского устройства) pickupgroup=1 // Задаем принадлежность к группе перехвата nat=yes // Указываем, будет ли устройство находиться за NAT-ом по отношению к серверу Asterisk mailbox=100@device // Указываем номер и контекст ящика голосовой почты host=dynamic // Задаем IP абонетского устройства или сообщаем с опцией dynamic, что для местоопределения будет использоваться механизм регистрации dtmfmode=rfc2833 // Тип передачи DTMF-сигналов disallow=all // Сначала запрещаем все кодеки allow=ulaw // Тут указываем допустимые кодеки, перечисляя их построчно сверху вниз в порядке приоритета allow=gy29 dial=SIP/100 // Задаем команду Dial, которая будет использоваться для вызова данного абонента context=from-internal // Указываем принадлежность абонента определенному контексту. canreinvite=no // Указываем возможность использования механизма CanReinvite. Не рекомендуется для устройств, которые могут быть отделены от сервера NAT-ом callgroup=1 // Указываем группу набора callerid=Alexey <100> // Задаем CallerID — имя и номер, которые будут высвечиваться у других абонентов, а также в CDR. call-limit=2 // Задаем максимальное количество линий, которые одновременно могут использоваться абонентом. Рекомендуется задавать не более 2-3-х одновременных линий.
сохраняем и делаем в cli
sip reload
проверяем
sip show peers 100/100 (Unspecified) D N A 5060 UNKNOWN 1 sip peers [Monitored: 1 online, 0 offline Unmonitored: 0 online, 0 offline] Отлично! Первый номер в нашем астериске - добавлен!
Полезные команды CLI Asterisk
sip show peers sip show peer 100 sip show settings sip reload sip set debug on rtp set debug on core show translation dahdi show channels core show application Dial core show application CALLERID core reload dialplan reload dialplan show context dialplan show 100@context
Простой диалплан. Файл extensions.conf
Файл Extensions.conf описывает логику работы Asterisk, а именно, обработку входящих вызовов, маршрутизацию исходящих вызовов, обработку звонков и событий по разнообразным правилам. В Asterisk это называется ДиалПланом (DialPlan). Как говорят разработчики, диалплан — это сердце Asterisk.
За работу диалплана отвечает файл extensions.conf. Файл поделен на контексты, в каждом из которых прописана логика работы. Логика работы формируется с помощью приложений. Приложения — это функции Asterisk, запускаемые с параметрами. Последовательность выполнения приложений — построчная.
Так как каждая телефонная линия или номер внутреннего абонента может принадлежать только одному контексту, осуществляется логическое разделение всех внутренних абонентов и телефонных линий операторов.
Например, в данном контексте, который назначен абоненту с номером 100, описана возможность выполнения трех действий:
- звонка на внутренний номер 999, который выполняет какую-либо функцию
- звонка другому внутреннему абоненту, номер которого начинается с цифры «1» и состоящий из трех цифр
- звонок на внешние телефонные линии через SIP-оператора
[from-internal] ;тестовый звонок на номер 999, с возможность донабрать 2,3,5 exten ≥ 999,1,Answer () exten ≥ 999,n,Background (hello-world) exten ≥ 999,n,Hangup () exten ≥ 2,1,Playback (digits/2) exten ≥ 3,1,Playback (digits/3) exten ≥ 5,1,Playback (digits/5) ;звонок на внутреннего абонента 1XX подключенного по технологии SIP exten ≥ _1XX,1,Dial (SIP/${EXTEN},60) ;звонок на московский номер через транк провайдера, который подключен к Asterisk по технологии SIP exten ≥ _495ZXXXXXX,1,Dial (SIP/provider/8${EXTEN},60)
Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился
Суперский пост! Блог уже в ридере )
Спасибо. Прочитал с интересом, и вообще полезный у Вас блог
Восхищена, спасибо! все очень доступно расписано и выделено)
Очень помогла статья!!! Спасибо ОГРОМНОЕ за ваш труд!)))
Отличная статья! никак не мог разобраться с астером… Спасибо!!!!!!
Статья шикарна!!! жаль мало статей на сайте…( пишите еще!!
Отлично написано. А главное хорошо разжевано
Подскажите, можно ли разместить на своем сайте данный пост?
Слушайте, давайте махнем в ближайшие выходные за город и там все это обсудим. Вы ведь из Москвы?
Спасибо за статью оказалась очень полезной.
Очень понравился блог! Особенно оформление:)
Очень хорошая статья для новичков! Все понятно и наглядно!
Спасибо! Супер статья! Блог в ридер однозначно
Вот так везде описано — exten => _1XX,1,Dial (SIP/${EXTEN},60)
А вот так будет ли работать (ни в одной статье не сказано, ни на одном сайте) — exten => _1XX,1,Dial (DAHDI/${EXTEN},60) ???
Вы уверены что вам это нужно?) Dahdi используют с интерфейсными картами) Вам сначала нужно точно знать, как устроен ваш канал.
По вашей статье настроить Asterisk получилось даже у меня) А я в этом полный чайник…Спасибо огромное за подробное описание))