Файл 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.