Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Asterisk
Форум BiT-Team > Системы > Всё о Никсах
SMBdie
Что такое Asterisk?

Asterisk IP-PBX - Это Open Source приложение, работающее на Linux и FreeBSD и предназначенное для создания решений компьютерной телефонии. Asterisk обладает всеми возможностями классической АТС, поддерживает три VoIP протокола (SIP/H.323/IAX), предоставляет функции голосовой почты (VoiceMail), конференций, интерактивного голосового меню (IVR), центра обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы), а также имеет гибкий и универсальный интерфейс для интеграции с внешними системами обработки данных (AGI).

Благодаря открытой лицензии, Asterisk активно развивается и поддерживается тысячами людей со всей планеты. Может работать как с аналоговыми линиями (FXO/FXS модули), так и цифровыми (ISDN PRI, потоки E1). Также позволяет транслировать текст и видеосигналы (например, возможно использовать видеофон). С помощью определенных компьютерных плат (наиболее известным производителем которых является Digium), Asterisk можно подключить к высокопропускным линиям T1, которые позволяют работать с десятками и сотнями телефонных линий, а также подключать цифровые сети VoIP к обычным телефонным сетям.

В течение последних трёх лет Asterisk приложения активно развиваются в Соединенных Штатах и уже заняли прочное место на рынке IT-технологий (более 1000 компаний, центры поддержки, online-консультации). В Россию данный продукт попал совсем недавно, но интерес российского потребителя растет, в первую очередь благодаря открытости системы.

Приступим к установке =)

Руководство по инсталляции сервера Asterisk


Требования к системе
Вам не нужно ни какое специфичное оборудование для инсталляции и запуска сервера Asterisk. Необходимости в звуковой карте нет.
Вам необходимо установить следующие программные пакеты перед компиляцией Asterisk:
Исходники ядра (kernel sources)
Заголовочные .h файлы для Вашего ядра (kernel headers)
bison (необходим для обработки выражений? в файле extensions.conf)
Пакеты: openssl и openssl-dev или libssl-dev
libnewt: необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которая является отдельной программой.
Вам более не нужно устанавливать пакеты "readline" и "readline-devel" для Asterisk. Сервер поставляется со своей реализацией пакета "readline", который называется "editline".
Если Вы планируете использовать дополнения для работы с базой mysql, установите пакеты для mysql, mysql_devel & mysql server
Если Вы планируете использовать интерфейсные карты от Digium, то Вам необходимо будет установить модуль ядра для поддержки драйвера устройства Zaptel, перед тем, как Вы сможете использовать их в Asterisk. Однако, может вы хочется сначала скачать и установить Asterisk — протестировать работу SIP и IAX телефонов — и уже после этого добавить поддержку для ваших карт Digium.

Инсталляция

Компиляция сервера Asterisk
Итак, предположим, что у Вас имеются все исходные коды Asterisk в директории: /usr/src/asterisk.
Что делать дальше?

cd /usr/src/asterisk
make clean
make
make install


Замечание: Используйте GNU make. Если сразу появляется множество ошибок, попробуйте gmake (например, при использовании FreeBSD).
Замечание: По умолчанию, сервер Asterisk работает от пользователя root. Это не очень хорошо с точки зрения безопасности системы в целом. По этому поводу, обратите внимание на страницу:
Запуск сервера Asterisk от пользователя отличного от Root

В процессе установки, после компиляции, будут установлены следующие исполняемые файлы:
/usr/sbin/asterisk: Демон сервера Asterisk, который и запускает всю Вашу АТС,
/usr/sbin/safe_asterisk: shell скрипт для проверки того, что сервер Asterisk еще работает.
/usr/sbin/astgenkey
/usr/sbin/astman: Очень простой интерфейс управления. Смотри описание: astman.

Другие директории, которые будут созданы в процессе установки:
/usr/local/include/asterisk: Директория содержит заголовочные .h файлы, которые требуются для других приложений для asterisk, драйверов каналов и других подгружаемых модулей.
/usr/local/lib/asterisk: Содержит двоичные объекты, связанные с работой сервера Asterisk, которые зависят от используемой архитектуры и установленных дополнительных модулей.
/usr/local/share/asterisk: Содержит некоторые данные, используемые в работе сервера Asterisk для его нормального функционирования.
/var/spool/asterisk: Директория используется в процессе работы для хранения фалов голосовой почты, исходящих вызовов, и т.д.


Установка фалов конфигурации
Теперь Вы почти готовы произвести конфигурацию сервера.
Проделаем следующее:

cd /usr/src/asterisk
make samples


При этом примеры конфигурационных фалов скопируются в Вашу директорию /etc/asterisk.

Если у Вас уже имеются файлы конфигурации в директории /etc/asterisk, тогда они будут переименованы с добавлением расширения ".old" к их имени.

Теперь Вы должны иметь возможность запустить сервер Asterisk, не меняя содержимое в инсталлированных фалах конфигурации:
Запуск и остановка сервера Asterisk

Замечание: Возможно, Вам сначала понадобиться загрузить драйвер Zaptel, в том случае, если у Вас используется аппаратное обеспечение от Zaptel.
Замечание: В большей части этой документации и примерах, подразумевается, что сервер Asterisk инсталлирован и запускается для работы от пользователя root.

Если Вы уже установили Asterisk, то Вы можете попробовать запустить его для начала в консольном режиме (без перехода в фоновый режим) с выводом некоторой отладочной информации, с помощью команды:

/usr/sbin/asterisk -vvvgc

Если он не запустился, проверьте аппаратное обеспечение, которое требуется для его работы.

Обратите внимание на раздел: Asterisk CLI?, где Вы сможете найти список доступных консольных команд. используйте команду stop now, для завершения работы сервера Asterisk.


Параметры командной строки при запуске сервера Asterisk

Фактически, запустить сервер Asterisk можно просто без аргументов. Сервер Asterisk, если запускается без параметров, работает в фоновом режиме:

/usr/sbin/asterisk

Вы можете соединиться с уже запущенным в фоновом режиме сервером Asterisk и получить доступ к его консоли, набрав команду:

/usr/sbin/asterisk -r

на той же машине, где запущен сервер Asterisk. К одному и тому же запущенному серверу Asterisk может быть подключено несколько CLI консолей одновременно.

Ниже приводиться список параметров, которые можно использовать при запуске сервера Asterisk:

-h : Помощь. Запустите '/sbin/asterisk -h', чтобы получить список доступных параметров командной строки.
-C <configfile>: Запуск сервера Asterisk с использованием конфигурационного файла, отличного от используемого по умолчанию: /etc/asterisk/asterisk.conf.
-f : Foreground. Запуск сервера Asterisk, без перехода к выполнению в фоновом режиме.
-c : Включает консольный режим. Запускает сервер Asterisk, без перевода его в фоновый режим (подразумевает параметр -f), с включенным консольным интерфейсом командной строки (CLI), который может использоваться для выполнения команд и просмотра состояния системы.
-r : Режим удаленной консоли. Запускается консольный интерфейс командной строки CLI, который соединяется с, работающим в фоновом режиме, сервером Asterisk на этой же машине.
-n : Запрещает использование цветного вывода в консоль (для использования совместно с параметрами: -c или -r)
-i: Запрашивать при загрузке "cryptographic initialization passcodes".
-p : Запускает сервер в режиме задачи, работающей в режиме псевдо-реального времени. Запуск с приоритетом реального времени (real-time priority). ('Вне зависимости от значения этого понятия.'')
-q : Тихий режим (Quiet mode) (подавление вывода)
-v : Увеличивает объем выводимой информации (verbosity) (несколько v = еще больший объем)
-d : Включает вывод дополнительной отладочной информации для всех подгружаемых модулей.
-g : Заставляет сервер Asterisk создавать core dump, в случае фатальных ошибок выполнения (segmentation violation).
-x <cmd> : Выполнить CLI команду <cmd> (может использоваться только с параметром -r)


Запуск сервера Asterisk при загрузке операционной системы

В разных операционных системах имеются сильные различия в методах запуска различных приложений в процессе загрузки системы. В директории /usr/src/asterisk/contrib/init.d содержаться некоторые примеры скриптов запуска для различных операционных систем. Используйте один из них или напишите его для своей конкретной ситуации.

Вы можете или запустить /sbin/asterisk напрямую, или можете использовать shell скрипт, содержащийся в директории /sbin/safe_asterisk, который запустит сервер Asterisk, и будет перезапускать его, если он завершил свое выполнение при какой-либо возникшей в нем ошибке.

Один из самых простых путей для запуска asterisk в Linux при загрузке операционной системы и перезапуска его в случае аварийного завершения его выполнения, это запуск его с помощью процесса init. Добавьте следующую строку в файл /etc/inittab:

as:2:respawn:/usr/sbin/asterisk -
f

Цифра '2', в вышеприведенной записи, это run level, в котором Вы желаете запускать сервер asterisk. Вы можете определить несколько run level'ов, воспользуйтесь "man inittab" для получения дополнительной информации. Многие системы на основе Debian, по умолчанию, используют run level номер 2, это значит, что, указав запуск сервера asterisk с run level 2 в inittab, приведет к тому, что он всегда будет запускаться при нормальной загрузке операционной системы и будет заново запущен, если по какой либо причине его выполнение завершилось (вне зависимости от причины). Может случиться так, что Вы предпочтете использовать в inittab скрипт, который уже будет запускать asterisk, но обычно, если же выбран такой способ запуска, то он работает нормально.

Если Вы используете Red Hat, то Вы можете получить рабочий rc.d/init.d скрипт запуска сервера, выполним следующие команды:

cd /usr/src/asterisk
make config


При этом, скопируется скрипт с именем: contrib/init.d/rc.redhat.asterisk в файл: /etc/rc.d/init.d/asterisk, и после этого можно выполнить команду:
/sbin/chkconfig --add asterisk

Файлы конфигурации Asterisk
Введение в процесс конфигурации
Вы, наверно, уже установили Asterisk и уже проверили, что он успешно запускается. Теперь, возникает естественный вопрос, а где и что настраивается в этой IP АТС? Первая вещь, которую вам надо сделать – сообщить астериску, какие телефонные соединения (к телефонным трубкам и телефонным станциям, посредством физического провода или IP) у вас есть. Они называются каналами.
Каналы в Asterisk


Что такое каналы в Asterisk?
Каналы в asterisk - это внешние или внутренние соединения, по которым производиться доставка вызовов в АТС Asterisk. Каналом может быть соединение с обычным телефонным аппаратом или с обычной телефонной линией, или он может быть виртуальным (логическим) каналом для совершения вызовов (как, например, совершение телефонных вызовов через Интернет). Сервер Asterisk не делает различий между классами каналов "FXO" и "FXS" (это значит, что он не делает различий между телефонными линиями и телефонными аппаратами). Каждый совершаемый или принимаемый вызов производиться через какой-либо определенный канал.


Типы каналов
Сервер Asterisk поддерживает следующие типы каналов в стандартной поставке:
Agent: ACD канал для работы с Агентами, при обработки очереди вызовов.
Console?: Клиентский Linux консольный драйвер для работы с звуковыми картами (использующие драйвера OSS или ALSA).
H.323: Старый добрый VOIP протокол
IAX и IAX2: Inter-Asterisk? Exchange protocol, VOIP протокол специально разработанный для Asterisk.
Local: Внутренний канал (Loopback), для передачи вызовов в другой контекст внутри самого сервера Asterisk.
MGCP?: Media Gateway Control Protocol, еще один VOIP протокол.
Modem: Название слегка вводит в заблуждение, но это канал для работы с ISDN соединениями, а не для работы с модемами.
NBS?: Канал для работы с "Network Broadcast Sound"
phone?: Канал для работы с драйвером "Linux Telephony"
SIP: Протокол Инициирования Сеанса (Session Initiation Protocol), один из частоиспользуемых VOIP протоколов.
Skinny?: Драйвер протокола для "Cisco Skinny Client Control Protocol" (VOIP протокол)
VOFR?: Голос через frame relay от Adtran?
VPB: Канал для подсоединения обычных телефонных аппаратов или телефонных линий, используя карты от Voicetronix.
Zap: Канал для подсоединения обычных телефонных аппаратов или телефонных линий, используя карты от Digium. А так же для E1-карт Кроникс, TDMoE? и для Asterisk zaphfc?.

Драйверы каналов, которые поддерживают другие технологии и, которые могут быть дополнительно установлены в Asterisk:
Bluetooth?: Позволяет использовать устройства bluetooth для изменения маршрута вызовов - см. в SVN "chan_btp".
CAPI?: канал для ISDN CAPI.
mISDN?: канал для mISDN.
vISDN?: канал для vISDN (нативный BRI канал для HFC чипсета).
SCCP?: Альтернативный драйвер канала для Skinny/SCCP.
Sirrix?: Канал ISDN BRI для карт от Sirrix (с возможностью ISDN шифрования).
UNISTIM?: Канал для "Nortel Unistim".
Unicall?: Замена для zaptel, с поддержкой R2.
SS7: Канал SS7 (ISUP на MTP2/3).

Конфигурация
Интерфейсные карты от Digium: Вам необходимо установить и сконфигурировать драйвер ядра Zaptel, чтобы дат возможность серверу Asterisk использовать Ваши интерфейсные карты от Digium. Сервер Asterisk осуществляет доступ к этим картам через канал Zap. Каналы конфигурируются в файле zapata.conf.
Интерфейсные карты от Voicetronix: Вам необходимо установить драйвер ядра для поддержки этих устройств. Сервер Asterisk осуществляет доступ к этим картам через канал vpb. Они конфигурируются в файле vpb.conf?.
SIP телефоны работают через SIP каналы. Они конфигурируются в файле sip.conf.
IAX телефоны работают через IAX каналы. Они конфигурируются в файле iax.conf.
Для некоторых специфичных VOIP телефонов могут потребоваться некоторые специальные настройки. Смотри раздел: Замечания по настройке некоторых IP телефонов?.
Вторая задача - это сконфигурировать план набора (Dialplan). Dialplan распределяет каждый звонок в системе от его источника через различные приложения к его конечному адресату.
Файл extensions.conf - Ваш план набора (Dialplan)

Конфигурация плана набора содержится в файле конфигурации Asterisk - extensions.conf. Это один из самых важных конфигурационных файлов. В нем определяется обработка и маршрутизация входящих и исходящих вызовов. Этот файл управляет поведением всех соединений проходящих через Вашу АТС.

Содержание файла "extensions.conf" разбито на секции, в которых могут быть или определены статические настройки и определения или выполняемые команды плана набора, в этом случае они называются контекстами. Секции, предназначенные для статических настроек, называются general и globals, а имена контекстов определяются системным администратором системы. Специальный тип контекстов – это макрос, помеченный пользовательско определенным именем с префиксом macro-. Это многократно исполняемые шаблоны, подобные процедурам в языке программирования. Каждая секция в файле extensions.conf начинается со строки с именем секции, заключенного в квадратные скобки. Это делает файл extensions.conf, по формату, похожим по на традиционные .ini файлы в системе Windows.

Совет: с помощью vim syntax highlighting вы можете значительно облегчить работу Dialplan’а и, что более важно, сделать ее менее ошибочно фоновой (to typos).

Планирование плана набора? - Главная дискуссия о проектировании плана набора в Asterisk

Новое в Asterisk v1.2: Появился новый параметр с именем "autofallthrough" для файла extensions.conf, который, по умолчанию, установлен в значение yes. В алгоритме работы Asterisk 1.0 (и более ранних) было заложено то, что Asteerisk ожидает набора номера екстеншена после того, как для вызываемого екстеншена нет больше команд, которые можно было бы выполнить. Параметр "autofallthrough" меняет этот режим и, если команды кончились, то вызов будет немедленно завершен с причиной BUSY, CONGESTION, или HANGUP, в зависимости от того, какая причина более подходит, по мнению сервера Asterisk. Если вы описываете екстеншен, для системы голосового меню (IVR), то вы должны использовать команду WaitExten, если у Вас параметр "autofallthrough" установлен в значение yes.

[general]
В самом начале файла extensions.conf, задается несколько общих значений в секции [general] . Для более детальной информации смотри:
Dialplan General Settings

[globals]
Далее, в секции [globals] , Вы можете определить глобальные переменные (и константы) и их начальные значения. Для более детальной информации смотри:
Глобальные переменные в плане набора?
Использование переменных в плане набора

Контексты и Екстеншены
После секций [general] и [globals] весь остаток файла extensions.conf посвящен определению Вашего плана набора. План набора состоит из набора контекстов. Контекст состоит из набора екстеншенов и шаблонов екстеншенов. Более подробно по этой теме смотри:
Введение в систему контекстов и екстеншенов

Шаблоны екстеншенов
Когда Вы определяете екстеншины в пределах контекста, можно использовать для их определения не только литерный числа или буквенно-цифровые имена, а также можно задать так, что он будет использоваться для обработки целой группы номеров, если использовать шаблоны расширения. Для более детальной информации смотри:
Имена для екстеншенов и шаблонов


Включение одного контекста в другой
Один контекст может содержать другие контексты. Например, рассмотрим следующие контексты:

Context "default":
Extension Description
101 Mark Spencer
102 Wil Meadows
0 Operator


Context "local":
Extension Description
_9NXXXXXX Local calls
include => "default"

Context "longdistance":
Extension Description
_91NXXNXXXXXX Long distance calls
include => "local"


Здесь мы определили три екстеншина:
Контекст default позволяет вызвать трех абонентов: Mark, Wil, и Operator.
Контекст local имеет один шаблон екстеншена, позволяющий набрать только 7-значные ("городские" локальные) номера, а также включает в себя контекст "default", что дает возможность пользователям еще и вызывать абонентов Mark, Wil и Operator.
Контекст long distance имеет один шаблон екстеншена, позволяющий совершать вызовы на междугородные номера, а также включает в себя контекст "local", который позволяет набирать локальные 7-значные номера и вызывать абонентов Mark, Wil и Operator.

Используя контексты, Вы можете точно указать, кто к каким услугам имеет доступ.

Если вызываемый номер подходит для нескольких шаблонов, то в этом случае, Asterisk может использовать не тот контекст, который Вы ожидали. Для более детальной информации, смотри:
Порядок выбора шаблонного екстеншена.



Когда Asterisk принимает входящий вызов на канале, то он просматривает контекст, который определен для обработки вызовов этого канала, на предмет того, что с этими вызовами нужно сделать. В контексте определены разные, для каждого вызываемого пользователями екстеншена, наборы команд. Например, в контексте может быть определен один набор команд, если пользователь набрал "123", и другой набор команд, если пользователь набирает "9", и совершенно другой, если он набирает любое число, начинающееся с "555".

Для некоторых видов соединений, таких как поступающие звонки с внешней телефонной линии, присутствует только сам факт вызова, а не набор какого-либо номера. В этом случае, Asterisk ведет себя так, как будто пользователь набрал специальный екстеншен с именем "s" (Start). Тогда Asterisk будет искать "номер" екстеншена с именем s в контексте того канала, через который пришел данный вызов.

Например, у нас есть канал "Zap/1", соединененный с телефонным аппаратом в Вашем здании. И предположим, что в файле конфигурации для канала Zap (zapata.conf) Вы определили context=john для канала Zap с номером 1. Итак, когда Вы снимаете телефонную трубку, чтобы набрать номер, тогда Asterisk будет искать контекст с именем "john" в плане набора extensions.conf, чтобы найти набор команд, которые надо выполнить. Вы должны каждое определение контекста в файле extensions.conf начинать с определения его имени, помещенного в квадратные скобки, например, так:

[john]

Для каждого контекста, Вам надо определить одни или несколько екстеншенов, которые Asterisk будет сравнивать с набранным номером. В каждом екстеншене Вы указываете серверу Asterisk, что необходимо сделать с этим вызовом, указывая набор команд.


Екстеншены
Екстеншены могут быть двух типов: цифробуквенный или шаблонными.

Цифробуквенный екстеншен может быть числом, таким как 123, а так же может содержать стандартные символы * и #, которые есть у обычных телефонов, так что имя 12#89* является вполне правильным именем екстеншена. Некоторые телефоны имеют на клавиатуре дополнительные DTMF кнопки A, B, C и D, следовательно, имена екстеншенов могут быть определены и с этими символами. Фактически, название екстеншена может содержать любую латинскую букву или число, а так же некоторые знаки препинания. Стоит отметить, что многие VOIP телефоны в состоянии "вызвать номер екстеншена", который может быть обычной текстовой строкой, например, такой как "Office". Следовательно, вполне допустимо задать екстеншен с именем Office в плане набора Asterisk.

Являются ли имена екстеншенов регистрозависимыми? И да, и нет. Являются в том случае, когда Asterisk пытается сопоставить "номеру", набранному пользователем, екстеншен, определенный в контексте, они должны полностью совпадать, включая регистр. Итак, если пользователь в своем VOIP телефоне вызывает екстеншен "OFFICE", тогда Asterisk не будет выполнять команды, которые Вы могли бы определить для екстеншена с именем "Office". С другой стороны, имена екстеншенов регистронезависимые, в том плане, что в одном контексте нельзя определить наборы команд для екстеншенов, которые имеют одинаковые имена и отличаются только регистром. Итак, Вы не сможете в одном контексте определить один набор команд для екстеншена Office и другой для екстеншена OFFICE.


Предопределенные названия екстеншенов (стандартные екстеншены)
Asterisk использует некоторые имена екстеншенов в специальных целях:
i : Invalid
s? : Start
h? : Hangup
t? : Timeout
T? : AbsoluteTimeout?
o? : Operator



Определение екстеншенов

В отличие от традиционной мини АТС, где каждый екстеншен сопоставляется с каким-то конкретным телефоном, интерфейсом, с системой меню, и т.д. , в Астериске расширение (екстеншин) определяется как набор команд для исполнения. Команды выполняются в порядке, который определяется их параметром "приоритета команды", но некоторые команды, такие как Dial и GotoIf, имеют возможность изменить этот порядок выполнения команд, передав управление к команде с другим приоритетом, в зависимости от условий, которые возникают при выполнении такого класса команд.

Когда происходит вызов на определенный екстеншен, будет выполнена команда с приоритетом 1, далее выполняется команда с приоритетом 2, и так далее.
Выполнение команд производится до того момента, пока не возникнет одна из следующих ситуаций:
Вызывающий абонент повесил трубку,
Команда вернула код возврата -1 (индикатор ошибки),
Команды со следующим приоритетом не существует (примечание: Asterisk не будет "перескакивать" через недостающие приоритеты) или
Вызов был переброшен на другой екстеншен.

В синтаксисе фала extensions.conf каждый исполняемый шаг для екстеншена описывается в данном формате:

exten = extension,priority,Command(parameters)

можно использовать эквивалентную форму, где после символа "=" идет символ треугольной скобки: "=>". Данная форма определения используется во многих примерах.

Итак, у нас есть контекст с определенным именем, например, "vasja". И в каждом контексте Вы можете определить один или несколько "екстеншенов". Для каждого из этих екстеншенов Вы должны определить набор выполняемых команд. Итак, как же Вам определить эти екстеншены и наборы команд для них? Все просто, Вам нужно отредактировать файл extensions.conf любым текстовым редактором. Однако, существуют некоторые приложения, которые могут помочь Вам в этом занятии: GUI tool?.

Каждый компонент, выполняемой команды для екстеншена, или строки команды, содержит следующие части:
название екстеншена (extension) - это имя экстеншена, которое может быть цифробуквенной строкой (допустимо использовать цифры, буквы и некоторые специальные символы) или может быть шаблонным екстеншеном (см. ниже), который предназначен, например, для обработки сразу группы телефонных номеров. Все команды, которые предназначены для обработки заданного екстеншена, должны иметь одинаковое имя екстеншена.

приоритет (priority) - обычно это целое число (однако, бывает и нет, смотри примечание). Это - просто порядковый номер для каждой команды у конкретного екстеншена. Первая выполняемая команда для екстеншена имеет приоритет "1", итак, когда Asterisk переводит вызов на другой екстеншен, то он ищет команду с приоритетом 1. Если не существует команды с приоритетом 1, тогда Asterisk считает, что вызываемый номер не соответствует данному екстеншену, даже если в нем есть команды с другими приоритетами. После выполнения команды с приоритетом 1, Asterisk выполнит команду с приоритетом "2", если только выполняемая команда сама не потребует выполнить команду с другим приоритетом. Если не определена команда со следующим приоритетом для екстеншена, тогда Asterisk закончит выполнение команд для этого екстеншена, даже если существуют другие команды с более высоким приоритетом, чем пропущенный.

Замечание: Использование символов, отличных от цифр, в поле приоритета, может потребоваться в специальных ситуациях или при использовании приоритетов типа n (next) (См:Asterisk Priorities, Asterisk standard extensions).
command название команды (также иногда называется приложением) для выполнения. Подробнее, смотри: Список команд Asterisk.

параметры (parameters) - зависят от конкретной команды. Некоторые команды не содержат параметров, в этом случае круглые скобки можно пропустить.

Пример

exten => 123,1,Answer
exten => 123,2,Playback(tt-weasels)
exten => 123,3,Voicemail(44)
exten => 123,4,Hangup


Это определение единственного екстеншена с именем "123". Когда приходит звонок на екстеншен 123, Asterisk сам ответит на звонок, проиграет звуковой файл с именем "tt-weasels", даст возможность оставить пользователю голосовое сообщение для голосового ящика 44, и затем повесит трубку.

Стоит отметить, что Asterisk не волнует, в каком порядке Вы размещаете команды в файле extensions.conf. Вы можете размещать команды в каком угодно порядке, как в нижеприведенном примере, и это ни как не отразится на порядке выполнения команд, т.к. Asterisk использует приоритет команд для определения порядка выполнения:

exten => 123,4,Hangup
exten => 123,1,Answer
exten => 123,3,Voicemail(44)
exten => 123,2,Playback(tt-weasels)


Другой вариант выбора екстеншена основывается на номере вызывающего абонента, "логика параноика". По этой логике мы определяем набранный екстеншен, в зависимости от того, откуда поступил вызов, основываясь на caller-ID звонящего. Например:

exten => 123/100,1,Answer()
exten => 123/100,2,Playback(tt-weasels)
exten => 123/100,3,Voicemail(123)
exten => 123/100,4,Hangup()


Эта запись соответствует екстеншену 123 и эти команды будут выполнены, ТОЛЬКО ЕСЛИ Caller-ID вызывающего абонента - 100. Аналогичную функциональность можно сделать при помощи шаблонного екстеншена, как например, в этом примере:

exten => 1234/_256NXXXXXX,1,Answer()
and so on...


Эта запись соответствует екстеншену 1234, если Caller ID у вызывающего абонента будет чем-то начинающимся с 256. Это бывает довольно полезно, если Вы хотите оградить себя от ненужных звонящих персон.

Так же можно сделать и так:

exten => s,1,Answer
exten => s/9184238080,2,SetCIDName(EVIL BASTARD)
exten => s,2,SetCIDName(Good Person)
exten => s,3,Dial(SIP/goodperson)


Сначала получаем вызов, на шаге 2 - отсеиваем ненужные персоны, все остальные проходят дальше, и в 3 возвращаем тех, что остались в основной поток.

В контекстах плана набора можно использовать только следующие директивы: exten, include, ignorepat и switch.
How Does Asterisk Handle "Match As You Go" Dialing??



Переменные и выражения
В командах плана существует возможность использования переменных, используя конструкцию ${VARIABLENAME}. Так же можно использовать выражения в виде конструкции $[EXPRESSION] , где EXPRESSION может быть регулярным выражением, сравнением, сложением, вычитанием и многим другим. Смотри описание переменных Asterisk для получения информации о стандартных переменных и описание Asterisk readme.variables?, где описывается использование выражений в Asterisk.



Перезагрузка плана набора
Если Вам необходимо перезагрузить план набора для того, чтобы сделанные в нем изменения вступили в силу, не перегружая все остальные конфиги Asterisk, используйте команду CLI Asterisk: extensions reload.


Что использовать один большой файл или несколько маленьких?
С помощью директивы #include <имя файла> в файле extensions.conf, Вы можете включать другие файлы в файл конфигурации плана набора. Таким образом, Вы можете разбить Ваш план набора на несколько файлов, к примеру, где extensions.conf - содержит основную конфигурацию, а в файле users.conf - описываются местные пользователи, а файле services.conf будет содержаться описание различных сервисов, такие как конференц-связь.
Используя такую или подобную разбивку, Вы сделаете Ваш план набора более удобным с точки зрения его администрирования. Директива #include <имя файла> - это не то же самое, что и директива include <context>. Директива #include может использоваться во всех файлах конфигурации Asterisk.


Перенаправление вызовов на другой Asterisk

Синтаксис:
[iaxprovider]
switch => IAX2/user:[key]@server/context

Выше мы определили отправку вызова на другой сервер. Параметры: user и key должны быть определены в файле конфигурации iax.conf вызываемого сервера. Параметр context - это название контекста в файле extensions.conf, вызываемого сервера.
Подробнее, см: Соединение двух серверов Asterisk


Получение данных для extensions.conf из внешних источников
Asterisk extensions from mysql?
Во всех .conf файлах Вы можете использовать директиву #include, чтобы включить другой файл

Простой пример использования директивы #include в файле extensions.conf
#include "my-extra-config-file"

[globals]
ALL=Zap/1&SIP/1000&SIP/1001

[default]
exten => s,1,Answer
exten => s,2,Playback(welcome-message)
; переход на контекст, определенный во включенном файле
exten => s,3,Goto(context-in-include-file,s,1)
:
:

Примеры
Использование макросов для создания extensions
[globals]
PHONE1=Zap/1
PHONE2=SIP/6002

[macro-oneline]
exten => s,1,Dial(${ARG1},20,t)
exten => s,2,Voicemail(u${MACRO_EXTEN})
exten => s,3,Hangup
exten => s,102,Voicemail(b${MACRO_EXTEN})
exten => s,103,Hangup

[local]
exten => 6601,1,Macro(oneline,${PHONE1})
exten => 6602,1,Macro(oneline,${PHONE2})
Asterisk dial plan - working example?: Примеры рабочих конфигов
An expanded example showing integrations with a Panasonic KSU?

Примеры, которые можно найти в Интернете:
John Todd, Loligo.com: http://www.loligo.com/asterisk/current/extensions.conf
Tilghman:http://asterisk.drunkcoder.com/extensions.conf
Zac Sprackett: http://sprackett.com/asterisk/conf/extensions.conf
planetWayne: Ideas for Home Based Asterisk Systems

Ура, вы это все настроили и запустили. Что же еще можно покрутить и настроить?
Музыка во время ожидания (Music on Hold)
Парковка вызова (Call Parking)
Биллинг
Интерфейсы для управления



Полную информацию по Asterisk на Русском вы найдёте на сайте voip.rus.net
Информация взята с voip.rus.net
10001100
было бы интересно почитать о собственном опыте установки астериска =) а то в этих мануалах всегда все хорошо, а при самостоятельной установке частенько возникают трудности) не хочешь попробовать?)
SMBdie
Ну, сам так сам))
И так, Устанавливаем-с FreeBSD я ставил сначала 7.0 а теперь поставил DesktopBSD на базе FreeBSD 6.3 =)) ибо на 7.0 установить Asterisk неполучилося однака =((

Подготовка.

Для начала нам понадобятся пакеты: gawk-3.1.6, bison-2.4 и asterisk-1.4.22.tar.gz (ещё я установил bash, мне с ним как-то проще ориентироваться в командной строке)

С начала ставим gawk-3.1.6.
Распаковываем его в gawk (extract to gawk) заходим в папку с распакованными файлами и запускаем от туда консольку и пишем
# make install
смотрим вывод на наличие ошипАк, если всё норм и доп. пакетов не требуется, переходим к следующему пакету.
Bison-2.4 также распаковываем и делаем как в прошлый раз, запускаем консоль.
Этот пакет для начала надо сконфигурировать
# ./configure
теперь можно устанавливать
# make
# make install
смотрим вывод на наличие ошипАк,
(Кстати умный дядька подсказал, что вывод надо писать в файл, чтобы его потом можно было посмотреть. Я этого не делал так-так в данный момент я работаю на прямую с машиной (не удалёнка) и могу посмотреть вывод в консоли.)
Ежели всё зачипок, а у меня именно так)) то начинаем ставить Asterisk

Установка.

Ну вы наверное уже догадались что надо сделать, да-да-да надо распаковать архив, Вы совершенно правы Ватсон =)

И так распаковали, перешли ф папочку куда распаковали, запустили консоль из этой папки и пишем
# ./configure
ждём когда сконфигурируется
в конце вывода у вас будет что-то типа вот этого:

configure: creating ./config.status
config.status: creating build_tools/menuselect-deps
config.status: creating makeopts
config.status: creating channels/h323/Makefile
config.status: creating include/asterisk/autoconfig.h
config.status: include/asterisk/autoconfig.h is unchanged

.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ ™
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.

configure: Package configured for:
configure: OS type : freebsd6.3
configure: Host CPU : i386


Сконфигурировали нормально.

идём дальше
# gmake
ждём когда он всё сделает и начнём установку
# gmake install
ждём когда установится, когда напишет что всё я установился проверяем - # asterisk -r

В выводе вы должны увидеть вот это, или примерно вот это:

# asterisk -r

Asterisk 1.4.22, Copyright © 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
==================================================
=======================
Connected to Asterisk 1.4.22 currently running on localhost (pid = 12729)
localhost*CLI>


теперь можно воспользоваться командой Help =)

PS
Сорри что без картинок и «возможно» не очень подробно, просто нет времени и инет отрубили сцуки(((.
Кстаа.. в первом посте есть ссылка там подробно описана настройка
так -что если что вам туда =))
ЗЫ
Чуть не забыл =))) Ещё есть пакет gastman для работы с Asterisk через графическую оболочку, где качал не помню и найти без инета не могу =((
Но знаю что дяденька Бинарный знает де его взять =)))

Установка gastman.
Нашли!? Замечательно! ))
Как обычно распаковываем, заходим в папку с распакованным архивом и запускаем оттудова консольку.
Пишем
# ./configure
мелькают строки )))
# gmake
опять в выводе что-то мелькает
# gmake install
Всё установили, проверяем
# gastman

# gastman
(gastman:12772): Gtk-WARNING **: cannot open display:

вот фигня, не работает подумал я ))
Но тут мну пришла идея, и я полез в «Пуск» или как там это дело в Иксах зовется??? ну да не важно =)) находим там Run command....
и Тамма пишем gastman и видим что оно (gastman) все-таки работает. =))

И ещё, после рестарта системы Asterisk сам не запускается, чтобы он стартовал сам идём курить мануал или каждый раз пишем в консольке #Asterisk, ну а я пойду пивком баловаться, потому как интернету у мну нема )))

Вот вроде и всё.
Хотя неее..
Хочу ещё передать СПАСИБО! за помощь дяденьке Бинарному =)))

теперь усё, точно точно. )))
Modern
Браво! Уж перестали и надеяться) Да и пропал совсем)
Русская версия IP.Board © 2001-2012 IPS, Inc.