355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Джим Меггелен » Asterisk™: будущее телефонии Второе издание » Текст книги (страница 30)
Asterisk™: будущее телефонии Второе издание
  • Текст добавлен: 7 октября 2016, 17:17

Текст книги "Asterisk™: будущее телефонии Второе издание"


Автор книги: Джим Меггелен


Соавторы: Джаред Смит,Лейф Мадсен

Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 30 (всего у книги 41 страниц)

useragent=Asterisk PBX v1.4

usereqphone

Опция usereqphone указывает Asterisk добавлять ;user=phone в SIP URI, содержащие действительный номер телефона: usereqphone videosupport (оба)

Параметру videosupport можно задать значение yes или no. Если активирована общая поддержка видео, ее можно отключить для отдельного равноправного участника сети, но ее нельзя активировать для одного равноправного участника сети, если она не активирована в разделе [general]: videosupport=yes|no vmexten

Эта опция задает добавочный номер диалплана для доступа к ящику голосовой почты, который будет передан в разделе Message-Account сообщения MWI NOTIFY. Задавайте эту опцию, если ваше SIP-устройс– тво поддерживает настройку Message-Account. Значение по умолчанию – asterisk: vmexten=8500

Настройки SIP-канала

После рассмотрения глобальных параметров SIP обсудим параметры канала. Они могут быть определены для пользователя, равноправного участника сети или для обоих (что указывается в скобках): accountcode (для обоих)

Код учетной записи может определяться для каждого пользователя. Если задан, этот код учетной записи будет присваиваться записи вызова, когда не задан код учетной записи конкретного пользователя. Заданное имя accountcode будет использоваться как имя файла в формате CSV в папке /var/log/asterisk/cdr-csv/, где хранятся CDR для пользователей/равноправных участников сети/друзей: accountcode^lax-имяпользователя

allow и disallow (для обоих)

Могут быть разрешены или запрещены определенные кодеки, что позволяет разработчику системы задавать перечень используемых кодеков. allow и disallow также могут быть определены для канала отдельно. Помните, что выражения allow в разделе [general] будут распространяться на все каналы, для которых не переопределено disallow=all. Согласование кодеков ведется в порядке их задания. Лучшей практикой считается определять disallow=all, а затем с помощью выражений allow явно задавать каждый кодек, который вы желаете использовать. Если ничего не задано, предполагается, что allow=all: disallow=all allow=ulaw allow=gsm allow=ilbc

amaflags (для обоих)

Система автоматической регистрации сообщений (Automatic Message Accounting, AMA) описана в документации компании Telcordia, в разделе FR-AMA-1. Эти документы определяют стандартные механизмы формирования и передачи CDR. Можно задать один из четырех флагов AMA (default, omit, billing или documentation), который будет применяться ко всем SIP-соединениям: amaflags=documentation callerid (для обоих)

С помощью параметра callerid можно задать рекомендуемый строковый Caller ID (ID звонящего) для каналов типа user или peer. Если для user задано поле Caller ID, всем звонкам, поступающим по этому каналу, будет присвоен этот Caller ID независимо от того, что посылает вам дальний конец соединения. Если оно задано для peer, вы посылаете запрос дальнему концу на использование этого Caller ID как вашего идентификатора (хотя не располагаете средствами, чтобы проконтролировать это). Если вы хотите, чтобы вызывающие абоненты могли использовать собственные Caller ID (то есть для гостей), убедитесь, что поле callerid не задано: callerid=John Smith <(800) 555-1234> callgroup и pickupgroup (для обоих)

Параметр callgroup используется для назначения описания канала одной или более группам. Опция pickupgroup может использоваться в сочетании с этим параметром, чтобы обеспечить возможность ответа на звонок на данный телефон с другого добавочного номера. Опция pickupgroup используется для определения, вызовы каких групп вызовов может принимать канал, – каналу предоставляется возможность отвечать на вызовы другого канала, если он входит в ту же группу pickupgroup, что и группа вызовов вызываемого канала. По умолчанию перехватить вызовы удаленных добавочных номеров можно, набрав *8 (это можно настроить в файле features.conf):

callgroup=1,3-5 pickupgroup=1,3-5

callingpres (для обоих)

Задает публикацию Caller ID для данного пользователя/равноправного участника сети. Эта настройка принимает одну из следующих опций:

allowed_not_screened

Публикация разрешена, экранирование учетных данных не производится.

allowed_passed_screen

Публикация разрешена, экранирование разрешено.

allowed_failed_screen

Публикация разрешена, экранирование запрещено.

allowed

Публикация разрешена, сетевой номер.

prohib_not_screened

Публикация запрещена, экранирование учетных данных не производится.

prohib_passed_screen

Публикация запрещена, экранирование разрешено.

prohib_failed_screen

Публикация запрещена, экранирование запрещено.

prohib

Публикация запрещена, сетевой номер.

unavailable

Номер недоступен.

=yes|no canreinvite (для обоих)

SIP-протокол пытается соединить конечные точки напрямую. Однако Asterisk должна оставаться на линии передачи между конечными точками, если необходимо определять наличие DTMF (более подробную информацию можно найти в главе 4): canreinvite=no context (для обоих)

Контекст задается в описании канала, чтобы входящие звонки направлялись в соответствующий контекст в extensions.conf, где осуществляется их обработка (см. главы 4 и 5). Для любого канала, соединяющегося с сервером Asterisk, должен быть задан контекст, в который он будет направлен. Контекст обязателен для любого описания канала типа user; если контекст не задан, входящие звонки будут направляться в контекст default:

context=incoming

Необходимо знать о необычном сценарии, который потребует задания контекста для peer. Когда по SIP-каналу поступает вызов, он сначала пытается найти соответствующее описание user (согласно имени пользователя, заданному в квадратных скобках, и паролю). Если он не может найти ни одного подходящего пользователя, он ищет соответствие среди peer по IP– адресу, с которого поступил вызов. Поскольку обычно peer не имеют контекстов, такой вызов в итоге поступит в контекст default. Хотя это будет работать, контекст default не следует использовать для обработки входящих звонков. Выход – определить контекст для каждого peer, который может обрабатывать входящие звонки. Чтобы поэкспериментировать с этим, можете позвонить на свой номер в службе Free World Dialup; вызов вернется прямо к вам.

defaultip (равноправный участник)

Настройка defaultip дополняет host=dynamic. Если хост еще не зарегистрирован на вашем сервере, вы будете пытаться отправлять сообщения по указанному здесь IP-адресу по умолчанию:

defaultip=192.168.1.101 deny (для обоих)

С помощью опции deny можно задавать конкретные IP-адреса и диапазоны. Чтобы ограничить доступ для диапазона IP-адресов, используется маска подсети, например deny=192.168.1.0/255.255.255.0. Также можно запретить все адреса, задав deny=0.0.0.0/0.0.0.0, а затем с помощью команды permit разрешить доступ только определенным адресам. Помните о влиянии на безопасность, которое оказывает данная настройка (см. также permit): deny=0.0.0.0/0.0.0.0 disallow (для обоих) См. allow.

dtmfmode (для обоих)

Параметру dtmfmode могут быть присвоены значения inband, rfc2833 или info. DTMF-коды могут быть отправлены или в полосе частот (как часть аудиопотока), или вне полосы (как сигнальная информация) с помощью методов RFC 2833 или INFO. Метод inband работает надежно только при использовании кодека без сжатия, такого как G.711, plaw или alaw. Рекомендуемым является метод rfc2833; однако некоторые устройства, например производимые компанией Grandstream, поддерживают метод info: dtmfmode=rfc2833

В Asterisk 1.4 был введен DTMF-сигнал переменной длительности (Variable Length DTMF), чтобы Asterisk имела возможность сообщать дальнему концу соединения верную длительность нажатия кнопки на телефоне, подключенном к входящему каналу (согласно RFC 2833 IETF). Более старые системы Asterisk не понимают параметра переменной длины. В старых системах Asterisk DTMF-сигнал, доставляемый через RFC 2833, может быть неправильно интерпретирован, что приводит к странным эффектам, например, в сеансах передачи голосовой почты. Если требуется, чтобы настройка rfc2833 была реализована, как в более старой версии (до 1.4), необходимо добавить опцию rfc2833compensate=yes в описание peer в файле sip.conf, который определяет порядок обмена информацией с вашей системой Asterisk версии до 1.4.

fromdomain (равноправный участник)

Позволяет задавать домен в поле From: SIP-заголовка. Может требоваться некоторыми поставщиками сервисов для аутентификации: fromdomain=my.hostname.tld fromuser (равноправный участник)

Позволяет задавать имя пользователя для аутентификации. Обычно используется имя, заключенное в квадратные скобки в описании канала, но оно может быть переопределено с помощью опции fromuser. Это позволяет обращаться к описанию канала по имени, отличному от того, которое используется для аутентификации: fromuser=john_smith host (равноправный участник)

Конфигурирует хост, с которым должен соединяться данный равноправный участник сети. Используйте полное доменное имя: host=remote.hostname.tld incominglimit (для обоих)

Эта опция ограничивает общее число одновременных звонков для равноправного участника сети или пользователя. Задает максимальное число одновременных исходящих звонков для равноправного участника сети или максимальное число входящих звонков для пользователя. incominglimit=3 insecure (для обоих)

При получении сообщения INVITE от удаленного ресурса Asterisk пытается аутентифицировать строку символов перед знаком @ в строке INVITE, полученную в SIP-заголовке с именем описания канала из sip.conf. Если удаленный конец связи является агентом пользователя, его аутентификация будет проводиться исходя из описания user. Однако, если удаленный конец является прокси-сервисом SIP, он будет аутентифицироваться по записи peer. Когда вызовы поступают от такого провайдера, как Free World Dialup, который выступает в роли прокси для удаленной стороны, фактически вызывающей вас, этот провайдер не может принимать вызов от лица конечной точки. Поскольку было бы непрактичным конфигурировать аутентификацию для каждого FWD-пользователя и поскольку FWD не может отвечать на сообщения 407 Proxy Authentication Required (Необходима аутентификация на прокси), требуется альтернативный способ разрешения приема звонков от этих абонентов. Задавая insecure=invite, вы определите, какому каналу peer ищется соответствие при сравнении IP-адреса или имени хоста и номера порта с предоставленными в поле Contact SIP-заголовка опциями host и port в sip.conf. Если соответствие найдено, исходное сообщение INVITE не станет требовать аутентификации и звонок будет разрешен.

При наличии большого количества конечных точек за NAT-уст– ройством необходимо активировать параметр insecure=port, чтобы выполнять сопоставление только по IP-адресу. Чтобы не предъявлять требование на аутентификацию во входящем INVITE для peer, задайте insecure=invite,port: insecure=invite language (для обоих)

Задает флаг языка для всего, что вы определяете. Глобальный язык по умолчанию – английский. Заданный язык отправляется каналом как элемент информации. Он также используется такими приложениями, как SayNumber(), чтобы выбрать соответствующий файл для воспроизведения. Не забывайте, что все остальные языки, кроме английского, не устанавливаются в системе явно, поэтому ваша задача конфигурировать систему так, чтобы гарантировать правильную обработку задаваемых языков: language=en mailbox (равноправный участник)

Если в описании канала вы связываете mailbox с peer, сервис голосовой почты будет посылать MWI-сигналы узлам на конце этого канала. Если номер почтового ящика обрабатывается в другом контексте голосовой почты, не default, его можно описать как почтовыйящик@ контекст. Чтобы связать несколько почтовых ящиков с одним peer, используется несколько выражений mailbox: mailbox=1000@internal maxcallbitrate (для обоих)

Задает максимальную скорость передачи данных для отдельного звонка от конкретного пользователя или к конкретному равноправному участнику сети. Значение по умолчанию – 384 Кбит/с: maxcallbitrate=384 md5secret (для обоих)

Если вы не хотите использовать простые текстовые пароли в файлах sip.conf, с помощью md5secret можно сконфигурировать хеш MD5, который будет использоваться для аутентификации. Чтобы сгенерировать хеш MD5 из консоли Linux, используйте следующую команду:

# echo -n «username: realm:secret» | md5sum Не забудьте использовать флаг -n, иначе echo добавит n в конец строки; тогда символ перевода строки будет учтен при вычислении хеша MD5, что приведет к созданию неверного хеша. Если не задана опция realm (обсуждаемая в списке общих параметров SIP), будет принята область действия по умолчанию – asterisk. Если в одном описании канала заданы параметры и md5secret, и secret, последний будет проигнорирован:

md5secret=0bcbe762982374c276fb01af6d272dca mohinterpret (канал)

Эта опция определяет, какой класс музыки во время ожидания должен воспроизводиться по данному каналу, если в диалплане для канала нет выражения Set(CHANNEL(musicclass)=fl»6on), определяющего класс музыки, и канал типа peer, поддерживающий вызов, не предлагает класса музыки.

Эта опция может быть задана глобально или для каждого пользователя либо равноправного участника сети в отдельности: mohinterpret=default mohsuggest (канал)

Эта опция определяет, какой класс музыки во время ожидания (как определено в musiconhold.conf) должен предлагаться каналу типа peer, когда этот канал переводит равноправного участника сети в режим ожидания. Он может быть задан глобально или для каждого пользователя или равноправного участника сети в отдельности: mohsuggest=default musicclass (для обоих)

Эта опция задает класс музыки во время ожидания по умолчанию: musicclass=classical nat (для обоих)

Для параметра nat может быть задано значение yes, no или never. Если задано yes, Asterisk игнорирует IP-адрес в заголовках SIP и SDP и отвечает на адрес и порт, указанные в IP-заголовке. Опция never предназначена для устройств, которые не могут обрабатывать поле rport в SIP-заголовке, такое как Uniden UIP200: nat=yes|no|never permit (для обоих)

См. deny. pickupgroup (для обоих) См. callgroup.

port (равноправный участник)

Этот параметр может использоваться для задания порта, по которому будут слушаться SIP-сигналы, если вы хотите использовать для этого нестандартный порт. (Порт по умолчанию для обмена сигналами по протоколу SIP – 5060.) port=5060 progressinband (для обоих)

Для параметра progressinband может быть задано значение yes, no или never, чтобы определить, должна ли Asterisk самостоятельно генерировать звуковой сигнал вызова для вызываемого абонента. Обычно Asterisk использует для информирования о поступлении вызова несколько методов, таких как 183 Session Progress, 180 Ringing, 486 Busy и т. д. Если задано progressinband=yes, Asterisk будет генерировать тональные сигналы для обозначения поступления вызова по каналу:

progressinband=yes|no|never promiscredir (для обоих)

Для параметра promiscredir могут быть заданы значения yes или no. Обычно при переадресации звонка на телефон Asterisk использует локальный канал (например, local/ 18005551212@pee r). Если задан параметр promiscredir=yes, Asterisk будет использовать SIP-канал, который позволяет переадресовывать вызовы на удаленные серверы: promiscredir=yes|no

Обратите внимание, что, если Asterisk выполняет переадресацию к самой себе, когда promiscredir=yes, система получит сообщение INVITE со своим Caller ID (ID звонящего) и выявит замыкание на саму себя. SIP не может выполнять замкнутые звонки, поэтому канал будет уничтожен.

qualify (равноправный участник)

Для параметра qualify может быть задано значение yes, no или время в миллисекундах. Если задается параметр qualify=yes, удаленным равноправным участникам периодически будут посылаться сообщения NOTIFY для определения, доступны ли они, и установления величины задержки между ответами. Равноправный участник будет признан недоступным в случае непоступления ответа в течение 2000 мс (изменить это значение по умолчанию можно, задав для параметра qualify время ожидания ответа в миллисекундах). Используйте эту опцию в сочетании с nat=yes, чтобы поддерживать канал через NAT-устройство активным: qualify=yes|no|количествосекунд regcontext (равноправный участник)

Задавая контекст, содержащий некоторые команды, можно сконфигурировать Asterisk на выполнение ряда действий при регистрации равноправного участника сети на вашем сервере. Эта опция используется в сочетании с regexten, определяющей, какой добавочный номер должен быть выполнен. Если параметр regexten не задан, в качестве добавочного номера используется имя равноправного участника. Asterisk будет динамически создавать и уничтожать для добавочного номера NoOp в приоритете 1. Все действия, которые следует выполнять при регистрации, должны начинаться с приоритета 2. Может быть задано несколько параметров regexten, разделенных символом &. regcontext задается для каждого равноправного участника или глобально:

regcontext=зарегистрированные_равноправныеучастники regexten (равноправный участник)

Опция regexten используется в сочетании с regcontext для определения добавочного номера, выполняемого в заданном контексте. Если regexten не задана явно, в качестве добавочного номера для сопоставления используется имя равноправного участника сети: regexten=1000 rtpholdtimeout (равноправный участник)

Принимает в качестве аргумента целое число, задается в секундах. Прерывает звонок, если RTP-данные не поступили в течение заданного времени ожидания. Значение rtpholdtimeout должно быть больше значения rtptimeout (см. также rtptimeout): rtpholdtimeout=120 rtpkeepalive (равноправный участник)

Определяет, как часто Asterisk должна посылать сообщения проверки активности установленного соединения в RTP-потоке, в секундах. Значение по умолчанию – нуль. Это означает, что Asterisk не будет посылать сообщения проверки активности RTP. rtpkeepalive=45 rtptimeout (равноправный участник)

Принимает в качестве аргумента целое число, соответствующее времени, в секундах, через которое Asterisk прервет вызов в случае непоступления RTP-данных. rtptimeout=60 secret (для обоих)

Задает пароль, используемый для аутентификации: secret=welcome setvar (для обоих)

Задает переменную канала, которая будет доступна с момента создания канала с равноправным участником или пользователем и уничтожена по завершении звонка. Например, чтобы задать переменную канала foo со значением bar, используйте следующую запись: setvar=foo=bar

username (равноправный участник)

Поле username позволяет выполнять попытки соединения с равноправным участником до того, как он зарегистрировался в вашей системе. При регистрации SIP-устройство сообщает Asterisk, какой SIP URI использовать для связи с ним. Имя пользователя используется в сочетании с defaultip для создания SIP URI в заголовке SIP– сообщения INVITE. Это может пригодиться для выполнения вызова после перезагрузки. Конечные точки не будут пытаться повторно зарегистрироваться на сервере до истечения срока их регистрации, поэтому вы не будете знать их местоположений. Для нединамических хостов потребуется, чтобы имя пользователя было задано, поскольку оно используется для создания имени пользователя для авторизации:

username=john_smith

B

Справочник по приложениям

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

Необходимо помнить о некоторых особенностях приложений. Во-первых, они могут завершаться нормально и аварийно. Практически всегда аварийное завершение выполняется, когда приложение выявляет разрыв соединения по каналу (или, если не выявляет, диалплан обнаружит это несколько позже). Приложение также может завершиться аварийно, когда необходимо указать диалплану на то, что некоторое условие не удовлетворено и что необходимо выполнить принудительный разрыв соединения. Во всех остальных случаях приложение будет завершаться нормально, а это свидетельствует о том, что выполнение должно продолжиться в следующем приоритете диалплана. Часто при необходимости переопределить поведение приложения, обусловливающее разрыв соединения, для него создают оболочку TryExec(). В данном справочнике часто встречается описание метка. Это сокращенная запись для описания точки диалплана, будь то просто приоритет, добавочный номер и приоритет или контекст, добавочный номер и приоритет. Обратите внимание, что, если текстовая метка определена для конкретного приоритета, приоритет может быть заменен этой текстовой меткой в любом из упомянутых случаев. Больше информации и пример можно найти в описании приложения GotoIf().

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

AddQueueMember()

Динамически добавляет участников в очередь для заданной очереди вызовов

AddQueueMember(имяочереди[, интерфейс[, приоритет,[опция ,[имяучастник.а]]]])

Динамически добавляет заданный интерфейс в существующую очередь под именем имяочереди, которое определено в файле queues.conf. Если задан, приоритет определяет для очередей приоритет данного участника. Участники вызываются в порядке увеличения приоритетов. По завершении выполнения приложение AddQueueMember() задает переменную канала AQMSTATUS.

Переменной AQMSTATUS будет присвоено одно из следующих значений:

ADDED

MEMBERALREADY NOSUCHQUEUE

При вызове AddQueueMember() без аргумента интерфейс будет использоваться интерфейс, которым в настоящее время пользуется вызывающий абонент.

Если аргументу опция задано значение j, Asterisk не может добавлять интерфейс в указанную очередь и существует приоритет n + 101 (где n – номер текущего приоритета), вызов перейдет в этот приоритет. Посредством аргумента имяучастника может быть задано имя участника очереди. Таким образом, это имя будет использоваться в записях queue_ log и событиях интерфейса Asterisk Manager, что упростит идентификацию агента при формировании отчетов:

; добавляем SIP/3000 с приоритетом 1 в очередь techsupport exten => 123,1,AddQueueMember(techsupport,SIP/3000,1)

Смотрите также

Queue(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AgentLogin(), queues.conf

ADSIProg()

Загружает ADSI -сценарий в телефон, поддерживающий ADSI

ADSIProg(сценарий)

Программирует телефон, поддерживающий Analog Display Services Interface (ADSI), с помощью заданного сценария. Если сценарий не задан, используется сценарий по умолчанию, asterisk.adsi. Для сценария указывается относительный путь из папки конфигурации Asterisk (обычно это /etc/asterisk/). Также можно указать полный путь к сценарию.

Для получения CPE ID и другой информации от своего ADSI-телефона используйте приложение GetCPEID():

; программируем ADSI-телефон с помощью сценария telcordia-l.adsi exten => 123,1,ADSIProg(telcordia-1.adsi)

Смотрите также

GetCPEID(), adsi.conf

AgentCallbackLogin()

Регистрация агента с возможностью обратного вызова

AgentCallbackLogln([НомерАгентa][,[опции][,[добaвочныйномер]@контекст]])

Разрешает агенту вызовов, идентифицированному параметром Номер– Агента, регистрироваться в системе очереди вызовов, что позволяет при поступлении вызова для этого агента выполнять обратный вызов к нему.

При поступлении вызова для этого агента Asterisk звонит на заданный добавочный номер (с необязательным контекстом).

Аргумент опции может содержать букву s, что означает скрытую авторизацию:

регистрируется в скрытом режиме как агент номер 42 и определяет, что при поступлении вызова для этого агента Asterisk будет звонить на добавочный номер 123 в контексте internal exten => 123,1,AgentCallbackLogin(42,s,123@internal)

Это приложение является устаревшим, его функциональность замещена логикой диалплана на AEL, размещенного в файле doc/queues-with-callbackmembers.txt в папке исходного кода Asterisk.

Смотрите также

Queue(), AgentLogin(), AddQueueMember(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AGENT, agents.conf, queues.conf

AgentLogin()

Регистрация агента вызовов в системе

AgentLogin([НомерАгента][, опции])

Регистрирует текущего вызывающего абонента в системе очереди вызовов как агента обработки вызовов (он может быть идентифицирован параметром НомерАгента). После регистрации агент может принимать вызовы и будет слышать звуковой сигнал в линии при поступлении нового вызова. Агент может прервать текущий вызов, нажав кнопку со звездочкой (*). Если НомерАгента не задан, вызывающему абоненту будет предложено ввести свой номер агента. Агенты описаны в файле agents.conf.

Аргумент опции может содержать букву s, что означает скрытую авторизацию:

; регистрируем в скрытом режиме вызывающего абонента как ; агента номер 42, как определено в agents.conf exten => 123,1,AgentLogin(42,s)

Смотрите также

Queue(), AddQueueMember(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AGENT, agents.conf, queues.conf

AgentMonitorOutgoing()

Регистрирует исходящие вызовы агента

AgentMonitorOutgoing([опции])

Регистрирует все исходящие вызовы, производимые агентом обработки вызовов.

Это приложение пытается выяснить ID агента, выполняющего исходящий вызов, на основании сравнения Caller ID (ID звонящего) текущего интерфейса и глобальной переменной, заданной приложением AgentCallbackLogin(). Таким образом, оно должно использоваться только в сочетании (и после него!) с приложением AgentCallbackLogin(). Для записи вызовов оно использует не приложение Monitor(), а функции для записи разговоров модуля chan_agent. Это означает, что процедура записи вызовов должна быть правильно сконфигурирована в файле agents.conf. По умолчанию записанные звонки сохраняются в папке /var/spool/ asterisk/monitor/. Это можно переопределить с помощью параметра savecallsin в файле agents.conf.

Если Caller ID и/или ID агента на найден, это приложение передаст управление приоритету n + 1, если он существует (где n – текущий приоритет). Если это не переопределено какой-либо опцией, возвращается 0. Аргумент опции может включать одно или более из следующих значений:

d

В случае ошибки и отсутствия добавочного номера n + 101 приложение возвращает -1.

c

Меняет Call Detail Record (Запись параметров вызова) таким образом, что источник вызова записывается как Агент/id_агента.

Не формирует предупреждения, если отсутствует Caller ID или ID агента неизвестен. Эта опция полезна, если вы желаете использовать один контекст для звонков агентов и не-агентов.

; записываем исходящие звонки для этого агента и меняем ; CDR, чтобы отразить то, что звонок выполняется агентом exten => 123,1,AgentMonitorOutgoing(c)

Смотрите также

AgentCallbackLogin(), agents.conf

AGI()

Выполняет совместимое с AGI приложение

[E]AGI(прогрaммa[, аргументы])

Выполняет для текущего канала совместимую с Asterisk Gateway Interface программу. AGI-программы обеспечивают возможность внешним программам (которые могут быть написаны практически на любом языке программирования) управлять каналом связи путем воспроизведения аудиофайлов, чтения DTMF-сигналов и т. д. Asterisk обменивается информацией с AGI-программой с помощью стандартных потоков ввода вывода STDIN и STDOUT. Заданные аргументы передаются в AGI-программу.

В качестве программы должен быть задан исполняемый файл из базовой файловой системы. Путь к программе должен вести в папку AGI Asterisk, по умолчанию это /var/lib/asterisk/agi-bin/. Если необходимо выполнить AGI, когда не существует ни одного канала (как для добавочного номера h), используйте приложение DeadAGI(). Если требуется выполнять AGI удаленно, используется приложение FastAGI().

Если вы хотите выполнять доступ к входящему аудиопотоку из своей AGI-программы, вместо AGI() используйте приложение EAGI(). Тогда входящий аудиопоток может читаться в дескриптор файла 3. Если происходит преждевременный разрыв соединения, процессу, запущенному командой AGI, будет послан сигнал HUP, извещающий о завершении соединения. Если ваша программа не перехватит этот сигнал, она будет завершена. Это поведение можно переопределить, задав для переменной канала AGISIGHUP значение 0: ; вызываем демонстрационную AGI-программу exten => 123,1,AGI(agi-test) exten => 123,2,EAGI(eagi-test)

Смотрите также

DeadAGI(), FastAGI(), главу 9

AlarmReceiver()

Предоставляет поддержку для получения сигналов с панели охранной или пожарной сигнализации

AlarmReceiver()

Эмулирует приемник сигналов тревоги и позволяет Asterisk принимать и декодировать специальные данные панелей пожарной и/или охранной сигнализации. На данный момент поддерживается только формат Ademco Contact ID.

Будучи вызванным, приложение AlarmReceiver() подтвердит установление связи с панелью сигнализации, будет принимать события, проверять их достоверность, подтверждать их и сохранять до тех пор, пока панель не разорвет соединение. Как только панель разорвет соединение, приложение будет выполнять строку команд, заданную настройкой eventcmd в файле alarmreceiver.conf, и передавать события на стандартный ввод приложения. Файл alarmreceiver.conf также содержит настройки синхронизации DTMF и громкости тонов подтверждения приема. ; настраиваем Asterisk, чтобы она отвечала на вызовы ; поддерживаемой панели пожарной сигнализации exten => s,1,AlarmReceiver()

Надежность этого приложения не гарантируется, поэтому не полагайтесь на него без всестороннего тестирования. Используя это приложение без тестирования, вы подвергаете свою жизнь и собственность большой опасности.

Смотрите также

alarmreceiver.conf

AMD()

Выявление автоответчика

AMD([initialSilence[,greeting[,afterGreetingSilence[,totalAnalysisTime[, minimumUordien gth[,betweenUordsSilence[, maximumNumberOfUords[, silenceThreshold]]]]]]]])

Это приложение пытается установить наличие автоответчика на основании шаблонов синхронизации. Это приложение обычно используется исходящими вызовами, берущими начало или в файлах вызовов, или в интерфейсе Asterisk Manager. Приложение сообщает, какой тип вызова был выявлен, задавая переменной AMDSTATUS одно из следующих значений: MACHINE (машина)


    Ваша оценка произведения:

Популярные книги за неделю