Asterisk Dial() настройка

Опубликовано в Asterisk

Asterisk Dial () настройка

Один из самых ценных особенностей Asterisk является его способность соединять различные абонентов друг с другом. Это особенно полезно, когда абоненты используют разные каналы связи. Например, абонент А можно общаться через традиционную аналоговую телефонную сеть, в то время как пользователь В может сидеть в кафе на полпути по всему миру и разговаривать через ip-телефон. К счастью, Asterisk выполняет много тяжелой работы, для подключения и соединения между разнородными сетями. Все, что нам нужно сделать, это узнать, как использовать приложение Dial ().

Приложение Asterisk Dial() выполняет вызов на один или более указанных каналов. Как только один из запрошенных каналов ответил, происходит соединение и ответ исходного канала, если исходный канал не был отвечен ранее другим каналам. Эти два канала будет активны в параллельном вызове, а все другие каналы, которые были запрошены, будут отклонены.

Если не указан тайм-аут, приложение Dial() не будет бесконечно ожидать, пока один из каналов даст ответ, если все из вызываемых каналов заняты или недоступны. Выполнение диалплана будет продолжаться, если запрошенные каналы не ответят, или если время ожидания истечет. Dial() будет завершать вызов если один из каналов инициирует завершение сеанса связи (положит трубку).

Если установлена переменная OUTBOUND_GROUP, все каналы, созданных пиров этим приложением будет добавлены к этой группе (как Set(GROUP()=...).. Из установленной переменной OUTBOUND_GROUP_ONCE, все каналы пиров создан Это приложение положить в этой группе (как Set(GROUP()=...). в отличие от OUTBOUND_GROUP, однако, переменная будет удалена после использования.

Это приложение устанавливает следующие переменные канала:

  • DIALEDTIME - время от начала набора канал до того когда он отключен.
  • ANSWEREDTIME - времени фактического вызова канала.
  • DIALSTATUS - состояние вызова
  • CHANUNAVAIL
  • CONGESTION
  • NOANSWER
  • BUSY
  • ANSWER
  • CANCEL
  • DONTCALL – режим для частной жизни и скрининга. Будет установлено, если вызываемый абонент выбирает для отправки вызывающему абоненту с " Go Away" скрипт.
  • TORTURE - режим конфиденциальности и скрининга. Будет установлено, если вызываемый абонент выбирает для отправки вызывающему абоненту с "torture" скрипт.
  • INVALIDARGS

Синтаксис

Dial(Technology/Resource[Technology2/Resource2[...]],[timeout,[options,[URL]]])

Аргументы:

Technology/Resource

  • Technology/Resource, где “Technology” представляет собой конкретный драйвер канала и “Resource” представляет собой ресурс, доступный к этому конкретному драйверу канала.
  • Technology2/Resource2 – опционально, дополнительные устройства для параллельного набора, если необходимо набрать больше устройств, то вводить их как: Technology2/Resource2&Technology3/Resourse3&.....

timeout- количество секунд, которое мы пытаемся набрать указанные устройства, если параметр не указа, по умолчанию это 136 лет.

Options

  • A – проигрывает приветствие для абонента, где xбыстрое воспроизведение
  •  x – проигрывание файла вызываемому абоненту
  • a - Immediately answer the calling channel when the called channel answers in all cases. Normally, the calling channel is answered when the called channel answers, but when options such as A() and M() are used, the calling channel is not answered until all actions on the called channel (such as playing an announcement) are completed. This option can be used to answer the calling channel before doing anything on the called channel. You will rarely need to use this option, the default behavior is adequate in most cases.
  • C - cброс записи о звонке (CDR) для этого вызова.
  • c - если приложение Dial() отменяет вызов, всегда устанавливается флаг, чтобы сказать драйверу канала, что на вызов ответили в другом месте.
  • d - разрешает вызывающему абоненту набрать продление 1 цифры, ожидая вызова для отвеченных каналов. Выход на это расширение, если оно существует в текущем контексте, или контекст, определяется в переменной EXITCONTEXT, если он существует.
  • D - отправить указанные строки DTMF после ответа вызываемого абонента, но до запуска bridged. Строка called DTMF посылается к вызываемой стороне, и calling DTMF посылается вызывающей стороне. Оба аргумента можно использовать в одиночку. Если прогресс указан, то его DTMF отправляется сразу после получения сообщения PROGRESS.
called
calling
progress
  • е - выполнить h расширение для пира после завершения вызова
  • f - если х не предусмотрено, для Caller ID отправлен на call-forward или отклонения с расширением диалплана этого Dial(), использует подсказку плана набора. Например, некоторые ТфОП не разрешают CallerID и должен быть установлен другой номер. Если предоставляется, х заставит отправить CallerID.
  • F - когда абонент вешает трубку, перевести вызываемого абонента в указанный пункт назначения и начать выполнение с этого места.
context
exten
priority
  • F - когда абонент вешает трубку, перевести вызываемого абонента к следующему приоритету текущего расширения и начать выполнение в этом месте.
  • g - продолжить выполнение диалплана на следующем приоритете в текущем расширении, если канал назначения вешает трубку.
  • G - если отвеченный вызов, перевести вызывающему абоненту с указанным приоритетом и вызываемого абонента в указанный приоритет плюс один.
context
exten
priority
  • h - разрешить вызываемому абонент положить трубку, отправив последовательность DTMF, определенную для отключения в features.conf.
  • H - разрешить вызываемому абонент положить трубку, отправив последовательность DTMF, определенную для отключения в features.conf.
  • i - Asterisk будет игнорировать любые запросы переадресации и может получать попытки набора номера.

 

Использование команды Dial () для канального драйвера chan_pjsip:

Dial просматривает команду AOR с тем же именем в качестве конечной точки и начинает набирать первый связанный контакт.

exten => _2XX,1,Dial(PJSIP/${EXTEN})

Чтобы набрать все контакты, связанные с конечной точкой, используйте функцию PJSIP_DIAL_CONTACTS.

exten => _2XX,1,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})})

В случае с SIP URI, пользователя и домена, с помощью конечной точки (в этом случае происходит набор номера транка), но не используя свои связанные AOR/contact объекты.

exten => _375XNXXXXXX,1,Dial(PJSIP/mytrunk/sip:${EXTEN:1}@256.4.67.4:5060)

При этом используется контакт (и его домен), установленный AOR, связанный с транком mytrunk, но по-прежнему явно задается пользователь частью URI в строке набора номера. Для контакта AOR's, вы должны определить его имя в конфигурации без AOR.

exten => _375XNXXXXXX,1,Dial(PJSIP/${EXTEN:1}@mytrunk)

Коментарии: