Джим Меггелен - Asterisk™: будущее телефонии Второе издание

Тут можно читать онлайн Джим Меггелен - Asterisk™: будущее телефонии Второе издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Asterisk™: будущее телефонии Второе издание
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Джим Меггелен - Asterisk™: будущее телефонии Второе издание краткое содержание

Asterisk™: будущее телефонии Второе издание - описание и краткое содержание, автор Джим Меггелен, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Asterisk™: будущее телефонии Второе издание - читать онлайн бесплатно полную версию (весь текст целиком)

Asterisk™: будущее телефонии Второе издание - читать книгу онлайн бесплатно, автор Джим Меггелен
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

exten => t,1,Playback(vm-goodbye) exten => t,n,Hangup()

[employees]

exten => 101,1,Dial(Zap/1)

exten => 102,1,Dial(SIP/Jane) В этом примере в контекст [employees] было добавлено два новых добавочных номера. Таким образом, человек, использующий канал Zap/1, может поднять трубку телефона и позвонить человеку, находящемуся на линии SIP/Jane, набрав номер 102. Точно так же телефон, зарегистрированный как SIP/Jane, может позвонить Zap/1, если пользователь наберет 101.

Добавочные номера 101 и 102 выбраны для примера произвольно, для своих добавочных номеров вы можете использовать любые другие цифры. Также необходимо помнить, что вы не ограничены трехзначными добавочными номерами; номер может включать столько угодно цифр. (Скажем так, почти сколько угодно. Добавочные номера не должны быть длиннее 80 символов, и нельзя использовать добавочные номера длиной в один символ для собственных нужд, поскольку они зарезервированы.) Не забывайте, что могут применяться и имена, как в данном примере: [incoming]

exten => 123,1,Answer()

exten => 123,n,Background(enter-ext-of-person) exten => 123,n,WaitExten()

exten => 1,1,Dial(Zap/1,10)

exten => 1,n,Playback(vm-nobodyavail)

exten => 1,n,Hangup()

exten => 2,1,Dial(SIP/Jane,10) exten => 2,n,Playback(vm-nobodyavail) exten => 2,n,Hangup()

exten => i,1,Playback(pbx-invalid) exten => i,n,Goto(incoming,123,1)

exten => t,1,Playback(vm-goodbye) exten => t,n,Hangup()

[employees]

exten => 101,1,Dial(Zap/1) exten => john,1,Dial(Zap/1)

exten => 102,1,Dial(SIP/Jane) exten => jane,1,Dial(SIP/Jane)

Конечно, не помешало бы добавить именные добавочные номера, если предполагается, что пользователи могут получать звонки по VoIP-про- токолу, такому как SIP, который поддерживает вызов по имени. Также нетрудно заметить, что в диалплане могут быть разные добавочные номера для вызова одной конечной точки, например добавочный номер 200 с выходом на канал SIP/George и добавочный номер 201, который воспроизводит некоторое сообщение, а затем звонит SIP/George. Теперь, когда наши внутренние абоненты могут звонить друг другу, мы значительно продвинулись на пути к созданию полного диалплана. Далее будет показано, как можно сделать диалплан более масштабируемым и пригодным к внесению изменений в будущем.

Использование переменных

Переменные, используемые в диалплане Asterisk, способствуют сокращению объема вводимого текста, делают код более понятным или вводят дополнительную логику. Тем, кто имеет опыт разработки программного обеспечения, вероятно, понятие переменной уже знакомо. Если нет, не стоит беспокоиться; мы объясним, что такое переменные и как они используются.

Переменные можно рассматривать как контейнер, в котором в данный момент времени может храниться одно значение. Например, мы могли бы создать переменную JOHN и присвоить ей значение Zap/1. Теперь при написании диалплана можно ссылаться на канал Джона по имени, а не запоминать, что Джон использует канал, названный Zap/1. Существует два способа использования переменной. Чтобы сослаться на имя переменной, просто вводится ее имя, например JOHN. Если, с другой стороны, требуется сослаться на ее значение, необходимо ввести знак доллара, открывающую фигурную скобку, имя переменной и закрывающую фигурную скобку. Вот как используется переменная в приложении Dial():

exten => 555,1,Dial(${JOHN}) В нашем диалплане Asterisk будет автоматически заменять все ссылки ${JOHN} значением, присвоенным переменной под именем JOHN.

Обратите внимание, что имена переменных чувствительны к регистру. JOHN и John - это разные переменные. Для удобства чтения все имена переменных в примерах будут записываться в верхнем регистре. Также следует помнить, что все переменные, заданные Asterisk, тоже будут записаны прописными буквами. Некоторые переменные, такие как CHANNEL или EXTEN, зарезервированы Asterisk. Не надо пытаться задавать их.

В диалплане используется три типа переменных: глобальные переменные, переменные канала и переменные среды. Кратко рассмотрим каждый из этих типов.

Глобальные переменные

Как следует из их названия, глобальные переменные применяются ко всем добавочным номерам во всех контекстах. Глобальные переменные полезны тем, что могут использоваться в любом месте диалплана, повышая читабельность и обслуживаемость кода. Предположим, имеется большой диалплан и несколько сотен ссылок на канал Zap/1. Теперь представим, что необходимо пересмотреть весь диалплан и изменить все эти ссылки на Zap/2. Это был бы, мягко выражаясь, долгий и чреватый ошибками процесс.

Но если бы в начале диалплана была определена переменная со значением Zap/1 и далее использовались лишь ссылки на нее, потребовалось бы изменить только одну строку.

Глобальные переменные объявляются в контексте [globals] в начале файла extensions.conf. Их можно также задать программно с помощью функции диалплана GLOBALQ [74]. Вот пример использования обоих методов задания переменных в диалплане. В первом варианте глобальной переменной JOHN присваивается значение Zap/1. Эта переменная задается в момент, когда Asterisk выполняет синтаксический разбор диал- плана. Второй пример представляет, как можно задать глобальную переменную в процессе выполнения диалплана. В этом случае переменной George присваивается значение SIP/George при выполнении звонка на добавочный номер 124 в контексте [employees]: [globals] JOHN=Zap/1

[employees]

exten => 124,1,Set(GLOBAL(GEORGE)=SIP/George)

Переменные канала

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

Для использования в диалплане предопределено множество переменных каналов. Они описаны в файле channelvariables.txt, находящемся в подпапке doc папки исходного кода Asterisk. Переменные каналов задаются с помощью приложения Set():

exten => 125,1,Set(MAGICNUMBER=42) Многие варианты использования переменных каналов будут рассмотрены в главе 6.

Переменные среды

Переменные среды - это средство организации доступа к переменным среды UNIX из Asterisk. Для их использования служит функция диалплана ENV(). Ее синтаксис выглядит следующим образом: ${ENV(var)}, где var - переменная среды UNIX, на которую выполняется ссылка. Переменные среды используются в диалпланах Asterisk не часто, но они доступны на случай необходимости.

Добавление переменных в диалплан

Теперь, ознакомившись с переменными, применим их в нашем диалплане. Добавим глобальные переменные для двух людей, Джона и Джейн:

[globals][globals]
JOHN=Zap/1
JANE=SIP/Jane
[incoming]
exten => 123,1,Answer()
exten => 123,n,Background(enter-ext-of-person)
exten => 123,n,WaitExten()
exten => 1,1,Dial(${JOHN},W)
exten => 1,n,Playback(vm-nobodyavail)
exten => 1,n,Hangup()
exten => 2,1,Dial(${JANE},10)
exten => 2,n,Playback(vm-nobodyavail)
exten => 2,n,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(incoming,123,1)
exten => t,1,Playback(vm-goodbye)
exten => t,n,Hangup()
[employees]
exten => W1,1,Dial(${JOHN})
exten => john,1,Dial(${JOHN})
exten => 102,1,Dial(${JANE})
exten => jane,1,Dial(${JANE})

Сопоставление с шаблонами

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Джим Меггелен читать все книги автора по порядку

Джим Меггелен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Asterisk™: будущее телефонии Второе издание, автор: Джим Меггелен. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x