Asterisk™: будущее телефонии Второе издание
Шрифт:
Функция CUT аналогична инструменту командной строки UNIX cut(1) и, кстати, разработана на базе этого инструмента.
В диалплане можно задавать смещения в символах для выбора подстроки из переменной исключительно на основании постоянной длины символов (а именно 1). Функция CUT создана, чтобы помочь при работе с данными, которые могут иметь несколько секций переменной длины с одинаковым разделителем.
Самый распространенный вариант - имя канала, которое состоит из двух частей: базового имени и уникального идентификатора (например, SIP/tom-abcd1234 или SIP/bert-1a2b3c4d). Функция CUT может
; Вырезаем уникальный идентификатор
; из имени текущего канала
exten => 123,1,Set(chan=$<CUT(CHANNEL,-,1)})
имяпеременной– это имя обрабатываемой переменной. Обратите внимание, что функция CUT работает с именем переменной, а не ее значением. CUT уникальна с этой точки зрения.
символ-разделитель– символ, который будет выступать в роли разделителя (по умолчанию '-').
диапазон позволяет определить, какие поля будут возвращены. В качестве параметра диапазон с помощью символа - может быть задан диапазон (например, 1-3), а с помощью символа & - группа диапазонов и номеров полей (например, 1&3-4). Заметьте, что, если задано несколько номеров полей, поля результирующего значения будут иметь те же разделители.
Параметр диапазон использует смещение, начиная с 1. То есть первое поле - это поле номер 1 (в противоположность смещению с 0, при котором первое поле шло бы под номером 0).
Смотрите также
FIELDQTY
DB
Выполняет чтение или запись в AstDB
DB(семейство/ключ)
Будет возвращать значение записи базы данных (или пустую строку, если записи не существует) или записывать значение в базу данных.
Смотрите также
DBdel, DB_DELETE, DBdeltree, DB_EXISTS
DB DELETE
Удаляет ключ или семейство ключей из базы данных AstDB
DB_DELETE(семейство/ключ)
Возвращает значение из базы данных и удаляет его.
Смотрите также
DBdel, DB, DBdeltree
DB EXISTS
Проверяет, существует ли в AstDB указанный ключ
DB_EXISTS(семейство/ключ)
Проверяет, существует ли ключ в базе данных Asterisk.
Смотрите также
DB
DUNDILOOKUP
Запрашивает у равноправных участников системы DUNDi определенный номер
DUNDILOOKUP(номер[|контекст[|опция)
ENUMLOOKUP
Запрашивает в базе данных ENUM определенный номер
ENUMiOOKUP(номер[|Тип-методa[|опции[|зaпись#[|суффик.с-зоны]]]])
Позволяет получать основные или специальные NAPTR-записи или счетчики типов NAPTR для ENUM или ENUM-подобных DNS-указателей.
ENV
Работает с переменными окружения
ENV(имяпеременнойокружения)
Возвращает или устанавливает значение переменной окружения, заданной параметром имяпеременнойокружения.
EVAL
Вычисляет хранящиеся переменные
EVAL(переменная)
EVAL - одна из наиболее мощных функций диалплана. Она позволяет сохранять переменные выражения не только в файле extensions.conf, а, например, и в базе данных и при этом вычислять их в диалплане так же, как если бы они были просто включены в него. Можно смело утверждать, что EVAL - основной элемент в обеспечении истинной динамичности диалплана.
; Мы можем сохранить в записи базы данных для ; extension/123, например, следующее: ; "SIP/${DB(ext2chan/123)}". Это направит нас к другой ; записи базы данных.
exten => _XXX,1,Set(dialline=${DB(extension/${EXTEN})}) exten => _XXX,n,Dial(${EVAL(${dialline})})
; Реальный пример (взят из кода, используемого ; в производственной эксплуатации)
exten => _1NXXNXXXXXX,n(generic),Set(provider=${DB(rt2provider/${route})}-nanp) exten => _ 1NXXNXXXXXX, n(provider), Dial(${EVAL(${DB(provider/${provider})})})
exten => _1NXXNXXXXXX,n,Goto(nextroute)
Смотрите также
Exec
EXISTS
Проводит проверку, является ли значение не пустым
EXISTS(данные)
Тест на существование значения: возвращает 1, если оно не пустое; 0 в противном случае.
FIELDQTY
Выполняет подсчет полей
FIELDQTY(имяпеременной|разделитель)
Подсчитывает поля с использованием произвольно заданного разделителя.
Смотрите также
CUT
FILTER
Удаляет из строки запрещенные символы
FILTER(разрешеные-символы|строка)
Выполняет фильтрацию содержимого параметра строка и включает в результат только значение разрешенные-символы:
; Гарантируем, что номер Caller*ID содержит только цифры