Файл extensions.conf - план набора (Dialplan)
Структура файла extensions.conf
Extensions.conf - файл которые управляет всеми соединениями проходящие через Ваш сервер Asterisk. Файл разбит на блоки заключенные в квадратные скобки. В самом начале файла в секциях [general] и [globals] задаются общие настройки.
Секция [general].
В этом разделе определяется ряд главных опций.
- static: Эта опция имеет значения только для CLI команды "dialplan save"(Asterisk 1.6) или "save dialplan"(Asterisk 1.4). Значение по умолчанию no. Обратите внимание на то, что при установке установлен пример и в нём стоит значение yes.
- writeprotect: Если writeprotect=no и static=yes, то Вы можете сохранять план набора из CLI, но учтите, что это перезапишет ваш файл extensions.conf.
- autofallthrough: Этот параметр отвечает за набранные расширения, если установлено значение yes и расширение не подходит плану набора, то звонок будет отбит с кодами BUSY, CONGESTION или HANGUP. Если установлено no, тогда будет ожидаться правильный набор.
- clearglobalvars: Очищение глобальных переменных при перезагрузке Asterisk. Если no, то переменные будут сохранятся и после перезагрузки.
- priorityjumping: Поддержка "прыжка" по приоритетам, работает только с теми приложениями, которые это поддерживают.
Секция [globals].
В это секции задаются глобальные переменные с их значениями.
[globals]
; Какие добавочные будут звонить когда приходит вызов?
INCOMING => Zap/3&Zap/4
; Как долго должен звонить телефон до перехода на голосовую почту?
RINGTIME => 3
; Что нужно проиграть для голосового приветствия?
VMANNOUNCE => mysounds/my-vm-announce
; Какие номера закреплены за помещением?
KITCHEN => Zap/3
STUDY => Zap/4
HALL => Zap/5
; Через какие линии совершать исходящий вызов?
OUTGOING => Zap/1&Zap/2
Посмотреть заданные переменные Вы можете командой в CLI 'core show globals'
Вся остальная часть файла отводится расширениям и контекстам.
Расширения (extensions) и контексты (context)
В документации на тему установка Asterisk мы с Вами уже писали правила набора, давайте теперь по ближе с ними познакомимся.
Что же такое расширения? Расширения это перечень приложений с их приоритетами выполнений и аргументами. Когда пользователь набрал расширение оно будет выполнять до полного выполнения или до разъединения. И так, как же они записываются?
exten => <расширение>,<приоритет>,<приложение>, [(<аргументы>)]
Давайте рассмотрим на примере.
[internal]
exten => 777,1,Answer
exten => 777,2,Playback(hello-world)
exten => 777,n,Hangup
В квадратных скобках указывает контекст, в котором будет использовать данное правило. Контексты мы указывали в файле sip.conf. При наборе расширения 777 попадаем с начало в 1 приоритет, в первом приоритете сервер Asterisk снимет трубку, далее переходим во второй, и проигрываем файл с именем "hello-world", далее перейдет на приоритет 'n', он обозначает next, это удобно использовать, когда точно известно что этот элемент должен следовать за элементами с числовыми приоритетами. В этом расширение сервер положит трубку.
В рассмотренном ранее примере вместо номера может быть указан шаблон. Шаблон должен начинаться с символа нижнее подчеркивание "_" и далее сам шаблон. В именах шаблона используются следующие специальные символы:
- X любое число от 0 до 9
- Z любое число от 1 до 9
- N любое число от 2 до 9
- [125-9] соответствует любому числу или диапазону чисел, которые заключены в квадратные скобки (в примере: 1,2,5,6,7,8,9)
- . специальный символ, соответствующий любому символу и количеству символом, не только цифре, но и скажем "+"
- ! специальный символ, соответствующий любому символу и количеству символом. Похож на символ ".", с одной лишь разницей, что как только шаблон с этим символом сработал, он не будет дожидаться полного набора номера, а сразу будет передавать номер в линию, сохраняя аудиоконтроль линии.
Функции и приложения в Asterisk
В примере выше мы рассмотрели три функции Answer, Playback и Hangup. Далее я приведу список функций, обращаю ваше внимание, что функции и приложения регистрозависимые.
- AbsoluteTimeout: Установка абсолютно максимального времени для вызова
- AddQueueMember: Динамическое добавление агента для очереди
- ADSIProg: Загрузка ADSI скрипта Asterisk в телефон
- AgentCallbackLogin: Авторизация агента с обратным вызовом
- AgentLogin: Авторизация агента
- AgentMonitorOutgoing: Запись исходящих вызовов агентов (0.7.3)
- AGI: Выполнение AGI скрипта
- AlarmReceiver: Emulate an Ademco Contact ID Alarm Receiver
- ALSAMonitor: Мониторинг консоли ALSA
- Answer: Ответ на звонок, если по каналу поступает вызов
- AppendCDRUserField: Добавить пользовательские данные к существующим в записи CDR
- Authenticate: Авторизация пользователя
- BackGround: Проигрывает звуковой файл, в это время могут исполняться другие команды
- BackgroundDetect: команде Background с возможностью определения разговора
- Bridge: Соединение двух произвольных каналов (команда появилась в Asterisk версии 1.6).
- Busy: Установить состояние "занято" и ждать окончания соединения
- CALLERID: Получить или Установить Caller*ID (v 1.2)
- CallingPres: Изменяет режим публикации для callerid для ZAP каналов
- ChangeMonitor: Изменения имени файла для записи разговора
- ChanIsAvail: Проверка на доступность канала связи
- ChannelRedirect: Переадресация существующего канала в другую точку плана набора. (команда появилась в Asterisk верcии 1.4).
- ChanSpy: Универсальный "встреватель в разговоры"
- CheckGroup: Удалена в версии 1.4.x
- Congestion: Установить состояние "перегрузки канала" и ждать окончания соединения
- ControlPlayback: Проигрывает звуковой файл с возможностью перемотки вперед, назад и останова
- Curl: Удалена в версии 1.4.x. Используйте: CURL().
- Cut: Удалена в версии 1.4.x. Используйте: CUT().
- DateTime: Удалена в версии 1.4.x. Используйте: SayUnixTime.
- DB: (Появилась в версии 1.2.*) Получить или установить значение во встроенной базе данных AstDB.
- DBdel: Удаление ключа из базы данных. Объявлена устаревшей в версии 1.4.x, используйте: DB_DELETE.
- DBdeltree: Удаление дерева ключей из базы данных
- DBget: Устарела в версии 1.2.x, в версии 1.4.x - удалена.
- DBput: Устарела в версии 1.2.x, в версии 1.4.x - удалена.
- DeadAGI: Выполнение AGI для разьедененного канала
- Dial: Совершить вызов и, в случае успеха, соединить вызываемого с текущим каналом
- Dictate: Запись и воспроизведение надиктованного текста (диктанта)
- DigitTimeout: Установка максимального таймаута между набираемыми цифрами
- Directory: Сервис справочника по номерам голосовой почты.
- DISA: Система DISA (Direct Inward System Access)
- DTMFToText: Enter alphanumeric strings with DTMF phone
- DUNDiLookup: Попробовать получить номер, через систему DUNDi
- EAGI: Выполнение приложения AGI на локальной или удаленной машине (FastAGI)
- Echo: Воспроизвести, то что говорит абонент (эхо)
- EndWhile: Закончить выполнение цикла While - *1.2beta
- EnumLookup: Удалена в версии 1.4.x. Используйте: ENUMLOOKUP().
- Eval: Удалена в версии 1.4.x. Используйте: EVAL().
- ExecIf: Выполнение внешней программы по заданному условию - *1.2beta
- Festival: Проговаривает текст, используя систему синтеза речи Festival.
- Flite: Проговаривает текст, используя систему синтеза речи Festival Lite (более быстрый отклик, чем при использовании синтезатора Festival).
- Flash: Отправка сигнала "Flash" в транк канала Zap.
- ForkCDR: Получить из одной CDR записи две раздельных
- GetCPEID: Получить ADSI CPE ID
- GetGroupCount: Удалена в версии 1.4.x. Используйте: GROUP_COUNT().
- GetGroupMatchCount: Удалена в версии 1.4.x. Используйте: GROUP_MATCH_COUNT().
- Goto: Переход на заданный приоритет, екстеншен или контекст в плане набора
- GotoIf: Условный переход
- GotoIfTime: Условный переход зависящий от текущего времени
- Gosub: Перейти к выполнению подпрограммы и вернуться (новое в v1.2)
- GosubIf: Условный переход к выполнению подпрограммы и возврат из нее (новое в v1.2)
- Hangup: Безусловное разъединение соединения
- HasNewVoicemail: Условное ветвление на приоритет + 101
- HasVoicemail: Условное ветвление на приоритет + 101
- ICES: Streaming calls to the Internet
- ImportVar: Установка значения переменной
- JabberSend: Отправка текстового сообщения через Jabber.
- Log: Вносит произвольный текст в файл(ы) лога сервера Asterisk. (1.6+)
- LookupBlacklist: Поиск имени/номера Caller*ID в черном списке
- LookupCIDName: Поиск Имени CallerID в локальной базе данных
- Macro: Выполнение макроса
- MailboxExists: Начиная с версии 1.6 это функция MAILBOX_EXISTS. Проверка на существование голосового ящика.
- Math: Удалена в версии 1.4.x. Используйте: MATH().
- MeetMe: Вход в конференцию MeetMe
- MeetMeAdmin: Команда администрирования конференций MeetMe
- MeetMeCount: Количество участников в конференции MeetMe
- Milliwatt: Генерация чистого тона 1000Hz с уровнем 0dbm (mu-law)
- MixMonitor: Запись и миксирование обоих сторон телефонного разговора (в отличии от команды Monitor) v1.2.x
- Monitor: Запись телефонного разговора в звуковой файл
- MP3Player: Проигрывает MP3 файл или поток
- MusicOnHold: Проигрыш музыки ожидания (Music On Hold), неопределенно долго
- MYSQL: Команда позволяет работать с базой данных mySQL
- NBScat: Play an NBS local stream
- NoCDR: Указывает Asterisk'у не сохранять CDR запись для вызова
- NoOp: Нет операции. Может печатать значение переменных в консоли для отладки плана набора.
- Page: Передать голосовое сообщение через несколько телефонов (Paging) (новое в Asterisk v1.2)
- ParkAndAnnounce: Park and Announce
- ParkedCall: Answer a parked call
- PauseQueueMemeber: Временная остановка работы участника, обрабатывающего очередь вызовов
- Perl: res_perl типа mod_perl для Apache, только в данном случае для Asterisk
- PickUP: Pickup a Zap Channel before answered
- Playback: Проигрывает звуковой файл
- Playtones: Проигрывает список тонов, в это время могут исполняться другие команды
- PPPD: PPP daemon connector
- Prefix: Добавляет ведущие цифры к номеру екстеншена (Устарела)
- PrivacyManager: Требует ввода номера телефона, если CallerID не получен.
- Progress: Функция, дающая возможность проигрывания звукового файла вызывающему абоненту до момента ответа на вызов (перевода линии в отвеченное состояние).
- Queue: Помещение вызова в очередь.
- Random: Перехода в плане набора с определенной вероятностью. Объявлена устаревшей в версии 1.4.x
- Read: Считывает полученные DTMF сигналы.
- Record: Запись телефонного разговора в звуковой файл
- RemoveQueueMember: Динамическое удаление агента для очереди
- ResetCDR: Сброс данных CDR
- ResponseTimeout: Установка максимального времени ожидания ввода пользователя
- RetryDial: Совершить вызов заданного екстеншена, повторять при неудачной попытке вызова, вызывающий пользователь может закончить процедуру вызова, нажав кнопку на dtmf клавиатуре.
- Return: Возврат из подпрограммы, выполненой по команде Gosub или из GosubIf (новое в v1.2)
- Ringing: Установить состояние "вызова абонента" (звонка)
- Rpt: Поддержка коммуникации с радио ретрансляторами и базовыми станциями.
- SayAlpha: Проговаривает буквы.
- SayDigits: Проговаривает цифры
- SayNumber: Проговаривает номер
- SayPhonetic: Проговаривает буквы фонетическим алфавитом.
- SayUnixTime: Проговаривает дату и/или время
- SendDTMF: Отправка в канал произвольной последовательности DTMF цифр
- SendImage: Отправка файла с изображением
- SendText: Отправка текстового сообщения абоненту
- SendURL: Отправка url на дисплей клиента
- Set: Установка значения (или значений) переменной канала или функции
- SetAccount: Установка account code
- SetAMAflags: Установка флага AMA для билинга
- SetCallerID: Установка CallerID. Устарела в 1.2.0, используйте CALLERID.
- SetCallerPres: Изменяет режим публикации для callerid (используя текстовые значения)
- SetCDRUserField: Установка пользовательских полей в записи CDR. См билинг.
- SetCIDName: Удалена в версии 1.4.x. Используйте: CALLERID(name).
- SetCIDNum: Удалена в версии 1.4.x. Используйте: CALLERID(number).
- SetGlobalVar: Установка значения глобальной переменной
- SetGroup: Удалена в версии 1.4.x. Используйте: SET( GROUP=group).
- SetLanguage: Изменение языка для проигрываемых звуков
- SetMusicOnHold: Установка класса по умолчанию для музыки ожидания (Music On Hold)
- SetVar: Установка значения переменной (Устарела. Используйте Set )
- SIPAddHeader: Добавление заголовка в исходящее SIP сообщение "invite"
- SIPCallPickup: Pickup a ringing phone in the pickup group.
- SIPGetHeader: Получение заголовка из SIP сообщения "invite"
- SIPdtmfMode: Изменение режима DTMF сигнализации в процессе вызова по SIP каналу
- SMS: Отправка и прием SMS (short messaging service)
- SoftHangup: Требует разрыва связи на заданном канале
- Sort: Функция обработки строк. Устарела. Используйте SORT.
- SrxEchoCan: Включить/выключить Подавление Эха
- SrxDeflect: Переправить входящий вызов
- SrxMWI: Установка/Сброс MessageWaitingIndication (MWI) для групп Sirrix
- Steal: Steal a Zap Channel after answered
- StackPop: Удалить адрес точки возврата не совершая сам возврат (новое в v1.2)
- StopMonitor: Останов записи телефонного разговора
- StopPlaytones: Останавливает проигрыш списка тонов
- StripLSD: Удаление цифр с конца екстеншена (Устарела)
- StripMSD: Отбрасывание ведущих цифр (Устарела)
- SubString: Сохранение подстроки с цифрами в заданной переменной (Устарела)
- Suffix: Добавление цифр в конец екстеншена (Устарела)
- System: Выполнить команду операционной системы
- Transfer: Перевод звонка на другой екстеншен
- TestClient: Execute Interface Test Client
- TestServer: Execute Interface Test Server
- TrySystem: Выполнить команду операционной системы. Всегда возвращает 0
- TXTCIDName: Поиск имени звонящего в DNS записях TXT
- UnpauseQueueMemeber: Возобновление работы участника, обрабатывающего очередь вызовов
- UserEvent: Отправка произвольного события в интерфейс управления (manager interface)
- VMAuthenticate: Авторизация пользователя, используя настройки из файла voicemail.conf
- VoiceMail: Оставить голосовое сообщение
- VoiceMailMain: Вход в систему голосовых сообщений
- Wait: Пауза на заданное время
- WaitExten: Ждать заданное время
- WaitForRing: Ждать состояния "вызова абонента" (звонка)
- WaitMusicOnHold: Ожидание с проигрышом музыки (Music On Hold)
- While: Начать выполнение цикла While - *1.2beta
- Zapateller: Блокировка "telemarketers'a" с использованием SIT
- ZapBarge: Прослушивание вызовов, проходящих через каналы Zap
- ZapRAS: Предоставляет доступ к сервису передачи данных ISDN интерфейса.
- ZapScan: ZapScan?: Сканирование и мониторинг вызовов для Zap каналов.
Вот такой богатый функционал есть у сервера Asterisk.