Чтение онлайн

на главную - закладки

Жанры

Asterisk™: будущее телефонии Второе издание
Шрифт:

Удаление данных из AstDB

Существует два способа удаления данных из базы данных Asterisk.

Чтобы удалить ключ, можно использовать приложение DB DELETE.

Оно принимает путь к ключу в качестве аргумента:

; удаляет ключ и возвращает его значение за один шаг

exten => 457,1,Verbose(0, The value was ${DB_DELETE(test/count)})

Также можно удалить все семейство ключей, используя приложение DBdeltree. Оно принимает всего один аргумент - имя семейства ключей,

подлежащего удалению. Чтобы удалить все семейство test, делаем следующее:

exten => 457,1,DBdeltree(test)

Для удаления ключей и семейств ключей AstDB из командной строки используются команды database del ключ и database deltree семейство соответственно.

Использование AstDB в диалплане

Существует бесконечное число вариантов использования базы данных Asterisk в диалплане. Чтобы представить AstDB, рассмотрим два простых примера. Первый - простой пример вычисления, демонстрирующий постоянство базы данных Asterisk (имеется в виду, что она устойчива к перезагрузкам системы). Во втором примере с помощью функции BLACKLIST будет определена принадлежность номера к черному списку и необходимость его блокировки.

Для начала в примере с воспроизведением счета извлечем число (значение ключа count) из базы данных и присвоим его переменной COUNT. Если такой ключ не существует, DB возвратит NULL (нет значения). Чтобы проверить наличие значения в базе данных, введем функцию ISNULL, которая будет контролировать, возвращено ли значение. В случае если этого не произошло, мы присвоим AstDB исходное значение 1 с помощью приложения Set. Следующий приоритет возвратит нас к приоритету 1. Это произойдет при первом вызове данного добавочного номера:

exten => 678,1,Set(COUNT=${DB(test/count)})

exten => 678,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)

exten => 678,n,Set(DB(test/count)=1)

exten => 678,n,Goto(1)

exten => 678,n(continue),NoOp

Далее будет воспроизведено текущее значение COUNT. После этого оно будет увеличено на 1:

exten => 678,1,Set(COUNT=${DB(test/count)})

exten => 678,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)

exten => 678,n,Set(DB(test/count)=1)

exten => 678,n,Goto(1)

exten => 678,n(continue),NoOp

exten => 678,n,SayNumber(${COUNT})

exten => 678,n,Set(COUNT=$[${COUNT} + 1])

Теперь, после приращения COUNT, давайте поместим новое значение в базу данных. Не забудьте, что сохранение значения для существующего ключа приводит к перезаписи предыдущего значения:

exten => 678,1,Set(COUNT=${DB(test/count)})

exten => 678,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)

exten => 678,n,Set(DB(test/count)=1)

exten => 678,n,Goto(1)

exten => 678,n(continue),NoOp

exten => 678,n,SayNumber(${COUNT})

exten => 678,n,Set(COUNT=$[${COUNT} + 1])

exten => 678,n,Set(DB(test/count)=${COUNT})

Наконец

вернемся к первому приоритету. Теперь приложение будет продолжать счет:

exten => 678,1,Set(COUNT=${DB(test/count)})

exten => 678,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)

exten => 678,n,Set(DB(test/count)=1)

exten => 678,n,Goto(1)

exten => 678,n(continue),NoOp

exten => 678,n,SayNumber(${COUNT})

exten => 678,n,Set(COUNT=$[${COUNT} + 1]

exten => 678,n,Set(DB(test/count)=${COUNT})

exten => 678,n,Goto(1)

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

В следующем примере логика диалплана будет организована вокруг функции BLACKLIST, которая проверяет наличие Caller ID (ID звонящего) текущего абонента в черном списке. (Черный список - это просто семейство AstDB, называемое blacklist.) Если функция BLACKLIST находит номер в черном списке, она возвращает значение 1, в противном случае возвращается 0. Эти значения в сочетании с приложением GotoIf могут использоваться для управления выполнением приложения Dial при вызове:

exten => 124,1,GotoIf($[${BLACKLIST]?blocked,1) exten => 124,n,Dial(${JOHN})

exten => blocked,1,Playback(privacy-you-are-blacklisted) exten => blocked,n,Playback(vm-goodbye) exten => blocked,n,Hangup

Чтобы добавить номер в черный список, выполните команду database put blacklist номер 1 из интерфейса командной строки Asterisk.

Полезные функции Asterisk

Теперь, рассмотрев дополнительные базовые возможности, давайте перейдем к ряду популярных функций, включенных в Asterisk.

Zapateller

Zapateller - это простое приложение Asterisk, которое воспроизводит специальный информационный тон в начале звонка. Устройства автоматического набора (обычно используемые в системах продаж по телефону) принимают этот тон за сигнал разъединения линии. Причем они не только прекратят вызов, но также пометят данный номер как не обслуживаемый, что поможет избежать всех видов телемаркетинговых звонков. Чтобы использовать эту функциональность в своем диалпла- не, вам надо просто вызвать приложение Zapateller.

Поделиться:
Популярные книги

Неудержимый. Книга VIII

Боярский Андрей
8. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
6.00
рейтинг книги
Неудержимый. Книга VIII

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Попаданка

Ахминеева Нина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка

Возлюби болезнь свою

Синельников Валерий Владимирович
Научно-образовательная:
психология
7.71
рейтинг книги
Возлюби болезнь свою

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Ротмистр Гордеев 2

Дашко Дмитрий
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев 2

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3

Город драконов

Звездная Елена
1. Город драконов
Фантастика:
фэнтези
6.80
рейтинг книги
Город драконов

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец