Voip телефония. asterisk. нестандартный подход ко всему. часть 1
Содержание:
- Переменные, используемые различными приложениями
- Модули
- Звонки через МультиФон
- Примеры уровней доступа
- Программные модули Asterisk
- Установка модуля pt1c
- Общие замечания по установке Asterisk
- Substituting
- Наследование переменных специфичных для каналов
- Asterisk Call Center Stats
- Word boundaries
- References
- Частые ошибки в установке и настройке Asterisk
- Установка Asterisk
- Advanced Settings Details
- Как установить Asterisk на Windows
- Channel Variables
- Синтаксис
- Предопределенные переменные специфичные для каналов
- DAHDi Configuration Module
Переменные, используемые различными приложениями
Команды некоторых приложений используют значения «канальных» переменных или возвращают в них результат своей работы.
- Команда AgentCallbackLogin? возвращает в ${AGENTBYCALLERID_${CALLERID}}: ID успешно авторизированного агента.
- Команда ChanIsAvail возвращает в ${AVAILCHAN}: первый доступный канал
- Команда Dial использует значение переменной ${VXML_URL}: для отправки XML Url в телефон Cisco 7960.
- Команда Dial использует значение переменной ${ALERT_INFO}: для передачи информации о типе звонка в телефоны Cisco.
- Команда Dial возвращает в ${CAUSECODE}: Код ошибки, если вызов не удался.
- Команда Dial возвращает в ${DIALSTATUS}: текстовый код результата последней попытки вызова абонента.
- Команда Dial использует значение переменной ${TRANSFER_CONTEXT}: Если установлена эта переменная, при выполнении процедуры перевода вызова (#transfer), то будет использоваться для выполнения команд экстеншен из указанного контекста.
- Команда EnumLookup возвращает в переменной ${ENUM}: результат поиска.
- Команда Hangup использует значение переменной ${PRI_CAUSE} для установки кодов возврата PRI интерфейса.
- Команда MeetMe использует значение переменной {MEETME_AGI_BACKGROUND}: для определения AGI скрипта, который необходимо выполнить.
- Команда MeetMe возвращает в переменной ${MEETMESECS}: количество секунд, которое пользователь провел в конференции.
- Команда Playback возвращает в переменной ${PLAYBACKSTATUS}: Результат выполнения команды (FAILED|SUCCESS).
- Команда Queue возвращает в переменной ${QUEUESTATUS}: Причину, по которой, помещенный в очередь, вызов, покинул ее.
- Команда TXTLookup возвращает в переменной ${TXTCIDNAME}: результат поиска в DNS.
- Команда VoiceMail возвращает в переменной ${VMSTATUS}: результат выполнения приложения VoiceMail?. Возможные значения: SUCCESS | USEREXIT | FAILED .
Модули
- res_ais.so — SAForum AIS. Модуль написан для целей передачи событий между Asterisk серверами в кластере. Модуль использует SAForum AIS CLM и EVT сервисы (управление кластером и события) для выполнения этой задачи. Модуль в данный момент поддерживает распределение Voicemail MWI (Message Waiting Indication) and device state событий между серверами. Протестирована работа с openais, хотя существуют и другие реализации стандарта.
- chan_skinny.so — SCCP Skinny Client Control Protocol (Skinny), корпоративный (проприетарный) протокол, разработан Selsius Corporation, в настоящее время принадлежит Cisco Systems. По протоколу Skinny взаимодействуют Cisco CallManager и Skinny-клиенты, в числе которых IP-телефоны Cisco 7900, сотфон Cisco IP Communicator, беспроводной телефон Cisco 7920 и сервер голосовой почты Cisco Unity. Не путать с SCCP (Signaling Connection and Control Part) протокол сетевого уровня, обеспечивающий контроль передачи (flow control), сегментацию пакетов, коррекцию ошибок и соединения в стеке протоколов SS7
- pbx_ael — Asterisk Extension Language Compiler
-
app_fastsms Система доставки SMS сообщений, без использования ресурсов интерфейса PRI.
Домашняя страница: http://www.bayhamsystems.com/asterisk.html
- Asterisk Manager API — Интерфейс управления сервером Asterisk (далее Manager API) позволяет клиентским программам соединяться с серверным приложением Asterisk, отправлять ему команды и/или считывать события, происходящие в АТС, используя TCP/IP протокол. Подробнее здесь.
-
PyAstre — поддержка языка Python в плане набора.
- Встроенный интерпретатор Python
- Приложения для использования скриптов Python, в плане набора
- Обработчик CDR записей на языке Python
- простой XMLRPC интерфейс, заменяющий протокол интерфейса администрирования (manager protocol) Asterisk.
-
Домашняя страница: http://www.magicphone.ca
-
py-Asterisk — Клиент на языке Python, использующий Manager API.
- Предоставляет интерфейс OO для Asterisk из пакета pure-Python.
- Домашняя страница: http://py-asterisk.berlios.de/py-asterisk.php
Звонки через МультиФон
Основная статья о МультиФон.
; Мобильные через МультиФон exten => _79XXXXXXXXX,1,Dial(SIP/${EXTEN}@79271234567,30,r) exten => _79XXXXXXXXX,n,Hangup()
Примеры уровней доступа
; Только внутренние include => local ; Город include => level-0 include => out-9 ; Город + Мобильные include => level-1 include => out-mobile-pstn ; Межгород include => level-2 include => out-8 ; Международные include => level-3 include => out-810 ; BLF exten => 100,hint,SIP/${EXTEN} exten => 101,hint,SIP/${EXTEN} exten => 102,hint,SIP/${EXTEN} exten => 103,hint,SIP/${EXTEN} exten => 105,hint,SIP/${EXTEN} ; Прослушка exten => 56,1,Congestion exten => 56,n,Hangup() ; Международные + BLF include => level-4 include => level-5 ; Международные + BLF + Прослушка include => level-4 include => level-5 include => level-6
Программные модули Asterisk
-
Программные модули Asterisk от сторонних разработчиков
-
Asterisk addons
#найти все модули содержащие pbx *CLI> module show like pbx # выгрузить модуль pbx_ael.so не перезапуская Asterisk *CLI> module unload pbx_ael.so
# nano /etc/asterisk/modules.conf modules autoload=yes ... ;запретить автоматическую загрузку модуля pbx_ael.so noload => pbx_ael.so noload => chan_jingle.so noload => chan_gtalk.so noload => func_odbc.so noload => cdr_odbc.so noload => cdr_adaptive_odbc.so noload => res_agi.so noload => app_speech_utils.so noload => res_config_ldap.so noload => res_smdi.so noload => res_odbc.so noload => chan_skinny.so noload => res_ais.so ... global
Установка модуля pt1c
При использовании FreePBX 12, модуль «FreePBX Framework» должен быть не ниже 12.0.34 версии.
Узнать версию модуля можно, перейдя в интерфейс Admin — Module Admin, найти модуль в списке и проверить версию. В подвале web-интерфейса также может быть указана версия framework.
Перед началом интеграции настоятельно рекомендуем делать РЕЗЕРВНУЮ КОПИЮ вашей конфигурации!
Перейдите в интерфейс администрирования модулей FreePBX «Admin» — «Module Admin»:
Выполните действие «Upload nodules»:
Выберите файл расширения:
Загрузите файл, используя действие «Upload»:
После подгрузки модуля перейти по гиперссылке local module administration
В разделе «Setting» выбрать «Install»:
В нижнем правом углу выполните действие «Process». Подтвердите установку — «Сonfirm»:
Отобразится окно статуса pt1c installed successfully:
Примените изменения — «Apply config»:
Общие замечания по установке Asterisk
На сервере с Asterisk нельзя ставить X (KDE, GNOME 3 Shell и т.п.) может привести к конфликту обработки аудио, как следствие падает качество голоса (шум, эхо).
-
AsteriskNow
-
Управление CLI (command-line interface) Asterisk
- Asterisk codecs: Гибридные кодеки G.729, G.723.1
-
H.323 для Asterisk
- AsteriskNow + D-Link D-Link DVG-6004S (4 FXO VoIP шлюз)
Конфигурационные файлы Asterisk:
После изменения конфигурационных файлов в большинстве случаев достаточно в CLI выполнить команду reload, если изменения затронули только файл sip -достаточно команды sip reload. Однако изменение методов обмена сигналами требует перезагрузки системы (команда restart).
Файлы Asterisk | Кратко | Примечания |
---|---|---|
Настройка Asterisk extensions.conf | Создание диалпланов | После изменений файла выполнить dialplan reload |
sip.conf | Настройка SIP-протокол | RFC 3261.txt изучить для понимания команды sip debug из консоли Asterisk |
iax.conf | конфигурация входных и выходных IAX-каналов | — |
features.conf | parkedcalls — это внутренний контекст Asterisk | — |
rtp.conf | диапазон RTP-портов (по умолчанию rtpstart=5000 and rtpend=31000) | можно сузить |
logger.conf | настройка ведения логов | — |
ooh323.conf | ooh323c (chan_ooh323) (поставщик Objective Systems) | H.323 для Asterisk |
Substituting
:s/{pattern}/{string}/ | For each line in replace a match of {pattern} with {string}. |
:s :& | Repeat last :substitute with same search pattern and substitute string, but without the same flags. You may add extra flags |
The arguments that you can use for the substitute commands: Confirm each substitution. Vim positions the cursor on the matching string. You can type: 'y' to substitute this match 'n' to skip this match to skip this match 'a' to substitute this and all remaining matches {not in Vi} 'q' to quit substituting {not in Vi} CTRL-E to scroll the screen up {not in Vi} CTRL-Y to scroll the screen down {not in Vi}. When the search pattern fails, do not issue an error message and, in particular, continue in maps as if no error occurred. Replace all occurrences in the line. Without this argument, replacement occurs only for the first occurrence in each line. Ignore case for the pattern. Don't ignore case for the pattern. Print the line containing the last substitute.
Наследование переменных специфичных для каналов
Если мы в команде Set присоединим спереди к имени переменной одиночный символ _ , то в этом случае эта переменная будет унаследована каналом, который будет создан основным каналом, например, при использовании команды Dial(Local/…); . Однажды будучи наследована, эта переменная не будет далее унаследована. В случае, если мы присоединим спереди к имени переменной два символа _, переменная будет наследоваться неограниченное число раз. (Работает только для CVS HEAD, не поддерживается в Asterisk 1.0.9.)
Заметьте, что если нам нужно получить значение переменной, то при ссылке на ее имя нет необходимости в ведущих символах подчеркивания.
exten => 100,1,Set( __ FOO=5) exten => 100,2,Dial(Local/test@CheckInherit) exten => test,1,NoOp(${FOO})
Как результат, переменная FOO будет унаследована. Без символов подчеркивания, в новом канале типа local эта переменная будет не определена.
Пример
exten => 104,1,Set(FEE=${fee}) exten => 104,2,Set(_FIE=${fie}) exten => 104,3,Set(__FUM=${fum}) exten => 104,4,Dial(Local/105) exten => 105,1,NoOp(${FEE}) exten => 105,2,NoOp(${FIE}) exten => 105,3,NoOp(${FUM}) exten => 105,4,Dial(Local/106) exten => 106,1,NoOp(${FEE}) exten => 106,2,NoOp(${FIE}) exten => 106,3,NoOp(${FUM})
как результат получим:
— Executing Set("SIP/oberon-365e", "FEE=fee") in new stack — Executing Set("SIP/oberon-365e", "_FIE=fie") in new stack — Executing Set("SIP/oberon-365e", "__FUM=fum") in new stack — Executing Dial("SIP/oberon-365e", "Local/105") in new stack — Called 105 — Executing NoOp("Local/105@default-7263,2", "") in new stack — Executing NoOp("Local/105@default-7263,2", "") in new stack — Executing NoOp("Local/105@default-7263,2", "fum") in new stack — Executing Dial("Local/105@default-7263,2", "Local/106") in new stack — Called 106 — Executing NoOp("Local/106@default-49be,2", "") in new stack — Executing NoOp("Local/106@default-49be,2", "") in new stack — Executing NoOp("Local/106@default-49be,2", "fum") in new stack
(Этот пример не будет правильно работать в версиях до релиза Asterisk 1.2.)
Asterisk Call Center Stats
Демо-версия Asterisk Call Center Stats ReadMe && Downloads
Для авторизации в демо версии используйте:
- login: admin
- pass: queue_stats
Все разговоры могут быть записаны в формате wav или mp3, с возможностью последующего поиска и скачивания записи в детализированном отчете о звонках (CDR) и в интерфейсе статистики очереди Asterisk Call Center Stats.
Доступ к отчетам осуществляется через веб-интерфейс и предоставляет возможности для поиска,
сортировки и сравнения вызовов за выбранный период.
Следующие отчеты и функции реализованы в Asterisk Call Center Stats:
- Регистрация всех входящих в очереди вызовов.
- Статус оператора (вход, выход, пауза)
- Сводная статистика принятых вызовов за указанный период времени.
- Детализация отвеченных вызовов с записями переговоров.
- Сводная статистика пропущенных вызовов и детализация с номерами.
- Распределение принятых вызовов по периодам ожидания в очереди.
- Распределение пропущенных вызовов по периодам ожидания перед выходом.
- Сравнение принятых и пропущенных по очередям.
- Распределение прин. и пропущенных вызовов по месяцам, по неделям, по дням, по часам.
- Поиск по детализации и полной «сырой» базе данных.
- Экспорт в csv.
Отвеченные вызовы:
Сводная статистика по агентам и очередям.
Детализация принятых вызовов с поиском по CallerID и агентам.
Экспорт в csv.
Пропущенные вызовы:
Причина разъединения, продолжительность ожидания (в том числе средняя продолжительность по очередям).
Детализация пропущенных вызовов.
Пользовательские отчеты
Если вам не хватает базовых отчетов, мы напишем дополнительные по вашим требованиям.
В примере показан отчет по статусу вызова, который устанавливает оператор набором feature кода
во время звонка или из панели оператора.
Дополнительные данные получаются из базы автообзвона или клиентской базы.
Asterisk Supervisor Action Panel:
Панель мониторинга и взаимодействия с объектами Asterisk.
Приложение в базовом варианте поставляется с Asterisk Realtime Interface.
Также может инсталлироваться отдельно для FreePBX или «чистого» Asterisk.
- Real Time статус операторов, очередей, вызовов , конференций и т.д.
-
CLI — интерфейс командной строки Asterisk
Word boundaries
The following escape sequences match the boundaries of words:
class name | Description |
---|---|
Matches the start of a word. | |
Matches the end of a word. | |
Matches a word boundary (the start or end of a word). | |
Matches only when not at a word boundary. |
References
** The title image is taken from here.
-
Control character explanation: https://en.wikipedia.org/wiki/Control_character
-
There are 14 punctuation marks in English: https://grammar.yourdictionary.com/punctuation/what/fourteen-punctuation-marks.html
-
For whitespace character, see https://en.wikipedia.org/wiki/Whitespace_character
2020/03/06
·
·
Частые ошибки в установке и настройке Asterisk
Если не планируется принимать анонимные звонки, надо их отключить.
Чтобы решить эту проблему, надо использовать CentOS с пакетом sqlite-devel: yum -y install sqlite-devel
Не получается зарегистрировать Asterisk на сервере ru.
Для решения этой проблемы надо проверить правильность ввода пароля, SIP ID. Также необходимо проверить, как сотрудник создан в «Личном кабинете»: правильно или нет.
Отклонение входящего вызова Астериксом.
Надо проверить, находится ли пользователь в регистрации. Необходимо ввести команду sipshowregistry в консоле Астериск.
Прохождение звука через одну сторону.
Нужно выбрать либо поддержку nat в Asterisk, либо поддержку SIP. Второй вариант решения проблемы – установка directmedia=nonat. Еще одним способом станет установка debug в Asterisk, с помощью которого можно будет отслеживать все запросы и аудио-трафик.
Не получается исходящему вызову пройти.
Для этого надо написать: exten => _XXXXXX,1,Dial(DAHDI/g1/${EXTEN})
Изменив номер, можно решить проблему.
Установка Asterisk
Установка и настройка окажется простой, если соблюдать пошагово инструкцию.
Если нужна только VoIP-сеть, то можно установить только asterisk. Но лучшим вариантом станет установка трех пакетов.
Драйвер dahdi используется при цифровом оборудовании. Для обмена данными с периферийным оборудованием нужен драйвер. Принцип настройкиAsterisk заключается в следующем:
сервер Asterisk<->chan_dahdi<-> Драйвер dahdi<-> Карта <-> Телефон/Коммутатор/Телефонная сеть
Библиотека libpri необходима для использования TDM-интерфейсов ISDN: PRI (PrimaryRateInterface) и BRI (BasicRateInterface). Libri делится на каналы по времени – Time Division Multiplexing.
Можно рассмотреть установку Asterisk из исходников. Такой способ установки дает возможность установить Asterisk с нуля.
Важно! Есть несколько условий для установки и настройки программы.
- Версия ядра системы должна быть не ниже 2.6.
- Обязательное наличие файлов заголовков в системе.
- Присутствие компилятора gccctermcap и openssl.
Проверив все эти моменты, можно приступать к установке. Для этого надо перейти на сайте в Download и загрузить такие архивы:
- «asterisk»
- «asterisk-sounds»
- «asterisk-addons»
- «zaptel»
- «libpri»
После этого скопировать файлы на сервер и разместить их в папке «/usr/src/.».
Далее надо запустить терминал в сервере.
Затем распаковать каждый архив командой «tar-xzf<имя >tar.gz».
Потом перейти в каждую папку при помощи команды «cd<имя>».
Закончив, надо выполнить определенные команды для настройки:
- «./configure» (это подготовит программу к сборке)
- «make» (команда для сборки)
- «makeinstall» (установка программы)
Для установки необходимых пакетов не нужно прилагать особых усилий. Астериск обладает автоматизацией пакетов, поэтому для этого нужен скрипт install_prereq, который можно найти в подкаталоге contrib/scripts, где есть исходные коды.
Нужно зайти в этот подкаталог и запустить скрипт. С помощью него необходимые пакеты будут установлены.
Таким образом, при соблюдении всех действий Asterisk для чайников будет готов.
Advanced Settings Details
Display Friendly Name
— Отображение пользовательского названия — true/false
Обычно на этой странице отображаются пользовательские названия, а внутренние конфигурационные названия freepbx_conf
видны во всплывающих подсказках. Если же предпочтительно видеть названия переменных из конфигурации, а пользовательские названия во всплывающих подсказках — установите эту опцию в положение false.
Внутреннее имя: AS_DISPLAY_FRIENDLY_NAME
Display Readonly Settings
— Отображать установки только для чтения — true/false
Эта опция отображает установки, которые имеют статус только для чтения. Эти параметры обычно предназначены только для внутреннего пользования, и неинтересны большинству обычных пользователей. Так как они в статусе только для чтения, их можно только видеть. AS_DISPLAY_READONLY_SETTINGS
Override Readonly Settings
— Редактировать установки только для чтения — true/false
Установка этой опции в true позволяет редактировать значения в статусе только для чтения.
AS_OVERRIDE_READONLY
Как установить Asterisk на Windows
- Скачать VirtualBox.
- Скачать Asterisk для VirtualBox.
- Установить VirtualBox.
- Нажать везде «Согласен».
- Нажать «Файл», а потом «Импорт конфигураций».
- Запустить машину и провести остальные настройки.
Совет! Более подробно с настройкой телефонии Астериск можно ознакомиться здесь:
https://youtube.com/watch?v=mVBGM0A5VfE
Чтобы скачать пакеты голосовых сообщений, надо:
- Перейти в папку «contrib/scripts/» с помощью команды «cd».
- Открыть «get_mp3_source.sh».
- Ввести «makeinstall».
- Открыть консоль Asterisk.
- Сделать файлы при помощи «makesamples».
- Запустить функцию «service asterisk start».
Основным конфигурационным файлом является asterisk.conf. Отсюда берется информация о местоположении файлов в системе.
Файл конфигурации, который пригодится для набора некоторых команд:
- conf (голосовые почтовые ящики при команде VoiceMail).
- conf (конфедерация, применяемая установкой Festival).
- conf (структура, необходимая для указания AlarmReceiver).
- conf (настройка тонов с указанием Playtones).
- conf (конфигурация, которая используется командой DUNDiLookup).
- conf (конфигурация для того, чтобы установить очередь звонков и их параметров для команды Queue).
Файлы конфигурации каналов Asterisk:
- conf (канал IАX2).
- conf (канал SIP).
- conf (канал DАHDi).
Channel Variables
Переменные каналов
Добавление заголовков к Sip запросам
Вы можете добавлять произвольные заголовки исходящих SIP звонков, предваряя строку ‘sip_h_’ любой переменной канала, например:
<action application="set" data="sip_h_X-Answer=42"/> <action application="bridge" data="sofia/mydomain.com/1000@example.com"/>
Несмотря на то, что это не является обязательным, пользовательские заголовки начинаются с «X-», во избежание конфликтов с другими стеками Sip протокола.
Добавление ответных заголовков
Adding Response Headers
Три типа ответных заголовков могут быть назначены:
ответный заголовок
Response header
sip_rh_
Предварительный ответный заголовок
Provisional response header
sip_ph_
Давай, До свидания
Bye response header
sip_bye_h_
Каждый префикс будет добавлять данные, только для своих типов запросов, общего нет.
Пример:
<action application="set" data="sip_rh_X-Reason=Destination Number Not in Footprint"/> <action application="set" data="sip_bye_h_X-Accounting=Some Accounting Data"/>
Добавление пользовательских заголовков
Adding Custom Header
Например, если добавить P-Charge-Info заголовок в INVITE:
<action application="set"><!]></action>
В Sip сообщении мы увидим:
INVITE sip:88123216111@123.123.123.123 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.123:5080;rport;branch=z9hG4bKyg61X9v3gUD4g Max-Forwards: 69 From: "Olg" <sip:777@192.168.1.123>;tag=XQKQ322vQF5gK To: <sip:88123216111@123.123.123.123> Call-ID: b6c776f6-47ed-1230-0085-000f1f659e58 CSeq: 30776798 INVITE Contact: <sip:mod_sofia@5.6.7.8:5080> User-Agent: FreeSWITCH-mod_sofia/1.4.0-rc2+git~20120713T162602Z~0afd7318bd+unclean~20120713T184029Z Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER, NOTIFY Supported: timer, precondition, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 229 P-Charge-Info: <88123216111@123.123.123.123>;npi=0;noa=3 X-FS-Support: update_display,send_info. Remote-Party-ID: "Olg" <sip:777@192.168.1.123>;party=calling;screen=yes;privacy=off
Дополнительные переменные каналов
Синтаксис
Вызов екстеншена на удаленном SIP сервере
Основная форма:
sofia/<profile>/<extension>@<remoteserver>
Пример 1:
sofia/$${profile}/$1@example.org
Пример 2:
sofia/foo/0@sipphone.com
Где <profile> — имя профиля назначенного в sofia.conf.xml
Вызов внутреннего абонента
Основная форма:
sofia/<profile>/<extension>%<localserver>
Пример 1:
sofia/$${profile}/$1%$${domain}
Пример 2:
sofia/foo/111%192.168.1.111
где ‘foo’ это SIP профиль(profile), 111 это имя пользователя (userid) зарегистрированной точки (endpoint), а 192.168.1.111 это IP адрес FreeSWITCH.
Если SIP профиль name сопоставлен с доменом, или атрибут домена установлен в профиле (e.g., <profile name=«internal» domain=«$${domain}»>), можно выполнить вызов следующим образом:
sofia/<profile>/<extension>
не указывая домен, когда вызывается местный номер.
Вызов через gateway (транк).
Основная форма:
sofia/gateway/<gateway_name>/<number_to_dial>
пример 1:
sofia/gateway/asterisk2/88123216111
Доступные gateways можно вывести командой sofia status:
freeswitch@internal> sofia status Name Type Data State ================================================================================================= 192.168.1.123 alias internal ALIASED external profile sip:mod_sofia@192.168.1.123:5080 RUNNING (0) internal profile sip:mod_sofia@192.168.1.123:5060 RUNNING (0) internal::avaya gateway sip:spb@192.168.1.252 NOREG external::asterisk2 gateway sip:asterisk2@123.123.123.123 NOREG =================================================================================================
в примере это avaya и asterisk2.
Изменение заголовка To:
Вы можете модифицировать поле To: sip заголовка (To: header) добавив ^<toheader>:
sofia/foo/user%192.168.1.123^111@$${domain}
Указание SIP Proxy c помощью fs_path
Вы можете направить вызов через определенное SIP прокси, используя директиву «fs_path». Пример:
sofia/foo/user@that.domain;fs_path=sip:proxy.this.domain
Предопределенные переменные специфичные для каналов
Ниже приведен список специфичных для каналов переменных устанавливаемых самим Asterisk, значения которых Вы можете использовать в плане набора. В отличии от переменных определенных пользователем, переменные определяемые самим Asterisk- регистрозависимые.
- ${ACCOUNTCODE}: Код аккаунта, если назначен — см. Asterisk billing. (объявлена устаревшей, начиная с версии 1.2.0 и удалена в версии 1.4.0. Используйте ${CDR(accountcode)} .
- ${ANSWEREDTIME}: Время, когда на вызов ответили.
- ${BLINDTRANSFER}: Активный канал SIP, который совершает вызов. Тут будет определено имя SIP канала, который совершает вызов при трансфере вызова типа blind — см. BLINDTRANSFER?
- ${CALLERID(all)} : Текущее значение имени и номера из CallerID — Смотри раздел Установка Callerid?, посвященный работе с CallerID в Asterisk версии 1.4
- ${CALLERID(name)} : Текущее значение имени из CallerID — Переменная ${CALLERIDNAME} использовалась в Asterisk до версии 1.2.0, она объявлена УСТАРЕВШЕЙ, начиная с версии 1.2.0 и удалена в версии 1.4.
- ${CALLERID(num)} : Текущее значение номера из CallerID — Переменная :${CALLERIDNUM} использовалась в Asterisk до версии 1.2.0, она объявлена УСТАРЕВШЕЙ, начиная с версии 1.2.0 и удалена в версии 1.4.
(Обратите внимание: значения этой переменной не обязательно должно быть цифровым, как это может показаться из названия, и вполне законно ее значением может быть символ пробела. Для команд, которые оперируют значением этой переменной, (Например, ‘GotoIf’) должен учитываться этот момент).
- ${CALLINGPRES}: Переменная, содержащая PRI Call ID Presentation, для входящих вызовов (См. callingpres )
- ${CHANNEL}: Текущее имя канала
- ${CONTEXT}: Текущее имя контекста
- ${DATETIME}: Текущее время и дата в формате: DDMMYYYY-HH:MM:SS Эта переменная объявлена устаревшей в версии Asterisk 1.2, вместо нее используйте конструкцию:
-
${STRFTIME(${EPOCH},,%d%mNaVH:NaVS)})
- ${DIALEDPEERNAME}: Имя вызываемого абонента. В данный момент не работает, см DIALEDPEERNAME?
- ${DIALEDPEERNUMBER}: Номер вызываемого абонента. В данный момент не работает, см DIALEDPEERNUMBER?
- ${DIALEDTIME}: Время, когда был набран номер. (Работает, только, если вызываемый абонент ответил на вызов?!)
- ${DIALSTATUS}: Статус вызова. См. DIALSTATUS
- ${DNID}: Dialed Number Identifier. Для поддержки ограничений на исходящие вызовы, см. DNID?
- ${EPOCH}: Текущее время в UNIX формате (количество секунд прошедшее с 1 января 1970 года)
- ${EXTEN}: Текущий екстеншен
- ${HANGUPCAUSE}: Последний код возврата, возвращенный по окончании соединения для Zap канала, соединенного с интерфейсом PRI
- ${INVALID_EXTEN}: Запрашиваемый екстеншен, для случаев, когда он переадресуется на обработку i (неправильного) екстеншена
- ${LANGUAGE}: Текущий язык сообщений. См. Asterisk multi-language?
- ${MEETMESECS}: Количество секунд, в течении которых пользователь участвовал в конференции MeetMe?.
- ${PRIORITY}: Текущее значение приоритета.
- ${RDNIS}: Caller ID, для абонента совершающего переадресацию DNIS. Для поддержки ограничений на исходящие вызовы, см. RDNIS?
- ${SIPDOMAIN}: Домен назначения для исходящего SIP вызова (если присутствует)
- ${SIP_CODEC}: Используется для установки кодека, для вызова через SIP канал (предположительно не работает в версии 1.0.1, ok в 1.0.3 & 1.0.4, нет уверенности насчет 1.0.2)
- ${SIPCALLID}: Значение заголовочного поля Call-ID: в сообщениях SIP диалога.
- ${SIPUSERAGENT}: Значение заголовочного поля «user agent» в сообщениях SIP диалога.
-
${TIMESTAMP}: Текущая дата и время в формате: YYYYMMDD-HHMMSS Эта переменная объявлена устаревшей в версии Asterisk 1.2, вместо нее используйте конструкцию: ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
- ${TRANSFERCAPABILITY}: Тип канала.
- ${TXTCIDNAME}: Результат работы приложения TXTCIDName (см. ниже)
- ${UNIQUEID}: Текущий уникальный идентификатор вызова
- ${TOUCH_MONITOR}: используется для «записи одним нажатием» (см. features.conf, и флаги wW для команды dial). Если установлена на обоих концах связи, тогда эта переменная содержит app_args (аргументы) для приложения app_monitor, иначе для нее будут использоваться аргументы по умолчанию: WAV||m
DAHDi Configuration Module
Allow PRI Discrete Channels
— Разрешить разделять каналы PRI — true/false
Конфигурация транка DAHDi предполагает использование каналов в группе для PRI. Установка значения true позволит настроить каждый канал в отдельности. Это может быть полезно при поиске проблем в PRI и помочь изолировать плохой B канал.
DAHDISHOWDIGITALCHANS
Disable DAHDi Configuration Writes
— Запретить перезапись конфигурационных файлов DAHDI — true/false
По умолчанию конфигурационные файлы DAHDI защищены от записи. При обращении к модулю DAHDI Config выводится следующие предупреждение с предложением включить запись. DAHDIDISABLEWRITE
DAHDI лучше всего настраивать через конфигурационные файлы