Asterisk Local channel

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

Синтаксис:

Local/extension@context[/n]

Назначение:

Конструкции с использованием Локального канала могут быть использованы для отправки поступившего вызова в любую точку Вашего плана набора.

Предположим, что в вашей системе имеется карта TE410P. И Вы хотите сделать некие действия, при которых Вам понадобиться использовать команду Dial (например, когда вы помещаете файл для автоматического набора в /var/spool/outgoing), но еще хотите использовать в вашем плане набора процедуру поиска маршрута с минимальной стоимостью (least-cost-routes) или другие алгоритмы. То, что нам нужно сделать до набора номера, мы делаем до того, как chan_local создаст связь между двумя портами, один из которых - это E410P, а другой - это место, где используется команда Dial для совершения вызовов. При этом Вы можете полностью контролировать действия в том месте плана набора, где совершаются исходящие вызовы.

Конечно, это можно было сделать, применив некоторые уловки, но с использованием chan_local позволяет сделать этот процесс более понятным.

Драйвер канала «Local» позволяет вам конвертировать любой екстеншен в канал. Это используется в различных ситуациях, включая работу с агентами очереди вызовов и т.д.

Ниже приведены некоторые примеры (в основном при использовании конференций), где может быть использован локальный канал:

  • Допустим, что вы хотите сделать WEB интерфейс для билинга использования конференций… Вы можете создать Ваш скрипт, который будет спрашивать вызываемый номер, и использовать «Local/number@context» в качестве канала в Вашем .call файле, где вы определяете конференцию в качестве екстеншена для вызова.
  • Предположим, что вы хотите соединить две конференции между собой.
  • Предположим, что вы хотите добавить музыку ожидания (MusicOnHold) в конференцию (только вот зачем).
  • Вы хотите использовать .call файлы для автоматического набора номера, а так же хотите быть уверенными, что CDR записи и записи в логе будут созданы.

Это так же позволяет нам переходить из контекста в контекст, как при использовании команды Команда Asterisk Gosub; Смотри примеры ниже.

Примеры:

[ inbound ]
; Сюда поступают все входящие вызовы
exten => s,1,Answer
exten => s,2,Dial(local/200@internals,30,r)
exten => s,3,Playback(sorrynoanswer)
exten => s,4,Hangup

[ internals ]
; сюда наши телефоны попадают по умолчанию
exten => 200,1,Dial(sip/blah)
exten => 200,102,VoiceMail(${EXTEN}@default)

exten => 201,1,Dial(zap/1)
exten => 201,102,VoiceMail(${EXTEN}@default)

exten => _0.,1,Dial(Zap/g1/${EXTEN:1}) ; исходящие вызовы в виде 0+номер

so that let me to call a local (internal) extension, without:
  • duplicate the Dial & voicemail statements
  • don't letting them to Dial out, since in internal context I have the possibility to dialout.

Если Вы используете chan_local в Ваших call-файлах и Вы хотите передать некоторые переменные канала в Ваш контекст, не забудьте добавить '/n', так как иначе chan_local сам себя 'оптимизирует' и вырежет себя из пути прохождения вызова, и как следствие значения переменных будут потеряны. Например:

Local/00531234567@pbx описывайте как: Local/00531234567@pbx/n

Только авторизованные участники могут оставлять комментарии.

Войти через: Google Facebook