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

Здесь есть возможность читать онлайн «Джим Меггелен - Asterisk™ - будущее телефонии Второе издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Asterisk™: будущее телефонии Второе издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Asterisk™: будущее телефонии Второе издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Asterisk™: будущее телефонии Второе издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

exten => 101,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail) exten => 101,n(unavail),Voicemail(101@default,u) exten => 101,n,Hangup()

exten => 101,n(busy),VoiceMail(101@default,b) exten => 101,n,Hangup()

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

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

Те, кто хорошо знаком с программированием, заметят, что макросы подобны подпрограммам, которые есть во многих современных языках программирования. Если вы не знакомы с программированием, не волнуйтесь, мы подробно и последовательно ознакомим вас с созданием макроса.

Лучший способ оценить макрос - увидеть его в деле, так что прямо сейчас и приступим.

Описание макроса

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

Описание макроса очень похоже на контексты. (По сути, можно даже утверждать, что это действительно небольшие контексты с ограниченной функциональностью.) Для описания макроса используется служебное слово macro-, за которым следует имя макроса, и вся эта конструкция заключается в квадратные скобки: [macro-voicemail]

Имена макросов должны начинаться со служебного слова macro-. Это отличает их от обычных контекстов. Команды внутри макроса формируются практически аналогично всем остальным элементам диалпла- на; единственное ограничение - макросы используют только добавочный номер s. Введем логику голосовой почты в макрос, заменяя по ходу добавочные номера на s:

[macro-voicemail]

exten => s,1,Dial(${JOHN},10)

exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)

exten => s,n(unavail),Voicemail(101@default,u)

exten => s,n,Hangup()

exten => s,n(busy),VoiceMail(101@default,b)

exten => s,n,Hangup()

Для начала хорошо, но не идеально, потому что данный макрос предназначен только для Джона и номера его почтового ящика. Чтобы сделать его универсальным и подходящим не только для Джона, но и для всех его сослуживцев, воспользуемся другой возможностью макроса - его аргументами. Но прежде рассмотрим, как осуществлять вызов макроса в диалплане.

Вызов макроса из диалплана

Использовать макрос в диалплане нам поможет приложение Macro(). Оно вызывает заданный макрос и передает в него необходимые аргументы. Например, чтобы вызвать наш макрос голосовой почты из диал- плана, можно сделать следующее:

exten => 101,1,Macro(voicemail) Приложение Macro() определяет также несколько специальных переменных. К ним относятся: ${MACRO_CONTEXT}

Исходный контекст, в котором был вызван макрос. ${MACRO_EXTEN}

Исходный добавочный номер, в котором был вызван макрос.

${MACRO_PRIORITY}

Исходный приоритет, в котором был вызван макрос.

${ARG n}

n-ный аргумент, передаваемый в макрос. Например, первым был бы аргумент ${ARG1}, вторым - ${ARG2} и т. д.

Как говорилось ранее, описанный выше макрос был жестко определен для Джона, тогда как должен быть универсальным. Давайте изменим его и вместо номера почтового ящика 101 будем использовать переменную ${MACRO_EXTEN}. Таким образом, при вызове макроса из добавочного номера 101 сообщения голосовой почты будут приходить в почтовый ящик 101; если макрос будет вызван из добавочного номера 102, сообщения пойдут в почтовый ящик 102, и т. д.: [macro-voicemail] exten => s,1,Dial(${JOHN},10)

exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail) exten => s,n(unavail),Voicemail(${MACRO_EXTEN}@default,u) exten => s,n,Hangup()

exten => s,n(busy),VoiceMail(${MACRO_EXTEN}@default,b) exten => s,n,Hangup()

Использование аргументов в макросе

Итак, мы уже близки к получению того макроса, какой нам нужен, осталось внести последнее изменение. Необходимо передать в макрос канал, по которому будут выполняться вызовы, потому что до сих пор в нем жестко прописан канал ${JOHN} (помните, мы определяли переменную JOHN как канал для звонков Джону?). Передадим канал как аргумент - и наш первый макрос будет готов: [macro-voicemail] exten => s,1,Dial(${ARG1},10)

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

Интервал:

Закладка:

Сделать

Похожие книги на «Asterisk™: будущее телефонии Второе издание»

Представляем Вашему вниманию похожие книги на «Asterisk™: будущее телефонии Второе издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Александр Китайгородский - Реникса (второе издание) (с илл.)
Александр Китайгородский
Алексей Филатов - Люди «А». Второе издание
Алексей Филатов
Евгений Триморук - Слепые. Второе издание
Евгений Триморук
Отзывы о книге «Asterisk™: будущее телефонии Второе издание»

Обсуждение, отзывы о книге «Asterisk™: будущее телефонии Второе издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x