Представляю вашему вниманию переведённый и частично доосмысленный список изменений Asterisk 1.6. Я выделил наиболее заметные и важные изменения (на мой взгляд) отдельно. Кое-что поменялось местами, кое-что удалено. Для тех, кто ещё самостоятельно не прочитал английский вариант — будет пожалуй полезно. Вкратце asterisk 1.6 это:
- Экспериментальная поддержка TCP/TLS (экспериментальная) и таймеров сессий в SIP. А так же улучшенная поддержка NAT и внедрение STUN протокола
- Поддержка ОКС-7 в DAHDi
- Факс-приложения «из-коробки» с возможностью терминации Т.38
- Улучшенная поддержка для HD звуковых кодеков
- Множество новых модулей, существенно расширяющих сферу применения Asterisk: app_jack, res_phoneprov, res_config_ldap и другие
Большое количество изменений (а не нововведений) описано в UPGRADE.txt, который так же очень рекомендуется к прочтению (пока без перевода). Частичный перевод обоих документов также доступен на wiki
Ключевые нововведения в 1.6.0:
- AMI: Интерфейс менеджера претерпел множественные изменения и версия увеличена до 1.1. Полный список изменений в doc/manager_1_1.txt. Основная масса изменений касается унификации вывода команд и уменьшения общего количества различных событий и действий
- AMI: Поддержка TLS для AMI и HTTP сервера
- SIP: Поддержка таймеров SIP сессий. Эта возможность позволяет корректно обнаруживать и удалять сессии, которые не были корректно завершены из-за неполадок сети или сбоев другой стороны
- SIP: Добавлена экспериментальная поддержка TCP и TLS транспорта для SIP сигнализации. Подробности об использовании в siptls.txt и sip.conf.sample
- SIP: Улучшенная поддержка NAT и STUN. В опциях bindaddr, externip и externhost теперь могут быть использованы номера портов, так же как и STUN сервер для обнаружения портов для этих SIP сокетов. Подробнее в sip.conf.sample, секция 'NAT'
- SIP: Добавлена поддержка T.140 стандарта передачи текста в SIP/RTP
- DAHDI: Поддержка системы сигнализации SS7, она же ОКС-7 (с использованием библиотеки libss7)
- Module: Добавлен новый кодек — codec_resample, который служит для изменения частоты дискретизации между 8 kHz и 16 kHz для улучшения поддержки широкополосных кодеков
- Module: Добавлен новый модуль — res_phoneprov. Он позволяет автоматически настраивать телефоны с помощью шаблонов, с использованием синтаксиса переменных Астериска. Теоретически возможно подготовить шаблоны настроек для большинства телефонов, настраиваемых по HTTP, возможна настройка одной линии на телефон, приложены примеры для настройки телефонов Polycom
- Module: Новый модуль — app_jack, предоставляющий интерфейс для JACK (JackAudio Connection Kit). Позволяет передавать аудио-поток для анализа или модификации во внешние приложения двумя различными способами: терминируя потоки на JACK или предоставлять возможность внешней программе модифицировать звук перед передачей слушателю. Подробнее уже писалось.
- APP: Приложения ReceiveFAX () и SendFAX () с возможностью терминировать T.38
- APP: В GoSub исправлены все проблемы, ранее присущие Maсro. Кроме того это приложение теперь может работать с параметрами, что позволило в AEL использовать его вместо Macro
Полный список изменений:
AMI (TCP/TLS/HTTP)
- Новое действие 'CoreShowChannels' для просмотра существующих в текущий момент каналов и некоторых данных о них
- Действие 'SIPshowregistry' для просмотра списка SIP регистраций
- cdr_manager использует для событий уровень «cdr» вместо уже очень нагруженного уровня «call»
- Пользователи, настроенные в managers.conf теперь хранятся в памяти, при изменении этого файла требуется перезазгрузка конфигурации
- Добавлена переадресация URI для встроенного HTTP сервера
- Добавлено поле 'Strategy' в событие QueueParam, которое отображает используемую стратегию работы очереди
- Добавлена поддержка https для встроенного веб-сервера. Детали настройки в http.conf.sample
- Новое действие — GetConfigJSON, которое позволяет получить значения конфигурационного файла в JSON формате, что позволяет упростить и ускорить работу AJAX приложений
- Действие 'Bridge', позволяющее соединить любые два канала, активные в данный момент в системе
- Команда 'ListAllVoicemailUsers' позволяющая получить листинг всех пользователей голосовой почты
- Команды 'DBDel' и 'DBDelTree'
- Новое событие Masquerade
- Существенно обновлены все действия для работы с конфигурационными файлами и категориями и параметрами внутри них
- Новое событие JitterBufStats для IAX2 каналов
Изменения CLI
- Добавлен штатный способ выполнения последовательности CLI команд при старте Астриска. Команды перечисленные в секции startup_commands файла cli.conf будут выполнены при старте
- Возможность устанавливать уровень отладки (debug и verbose) для отдельных файлов исходного кода
- Команда 'devstate change', позволяющая задать состояние «Custom:» устройства, поддерживаемого через func_devstate, из CLI
- Новая команда 'core show hint', отображающая подробности статуса указанного экстенжна
- Новая команда 'core show settings', отображает настройки asterisk.conf
- Новая команда 'core show channels count'
- Команды 'queue pause member' и 'queue unpause member'
- Возможность установки ограничений («ulimit») без перезапуска Asterisk
- Улучшенная 'agi debug' для упрощения отладки при высокой нагрузки системы
- Добавлена команда 'dialplan set extenpatternmatching true/false'
- Добавлена команда 'manager reload' для чтения конфигурации AMI в случае её изменения
- Возможность отображения командой 'voicemail show users' так же и пользователей, описанных через ARA (реалтайм)
- Новая команда 'core set chanvar' для установки переменных в канале через CLI
- Команда 'features reload' для применения конфигурации из файла features.conf
- В вывод команды 'dialplan show' добавлена информация о зависимости выполнения диалплана по CallerID
- Добавлена команда 'dahdi show version'
- Добавлены команды CLI: 'skinny show device', 'skinny show line' и 'skinny show settings'
Изменения AGI
- Добавлена команда SPEECH для интеграции распознавания голоса в AGI приложения
- Если загружен app_stack, GOSUB родная AGI команда, позволяющая задействовать «подпрограммы» диалплана. EXEC с приложением Gosub не будет работать в данном случае
- Совмещены приложения AGI и DeadAGI, с устареванием последней
Изменения в SIP
- Новый реалтайм класс «sipregs», позволяющий в реальном времени хранить динамические данные в отдельной таблице БД. «sippeers» будет использована как и прежде для статических данных
- По-умолчанию SIP будет указывать версию Астериска в передаваемой строке имени клиента
- SIP добавляет дополнительный заголовок к CANCEL который сообщает о том, что звонок был принят где-то в другом месте, если в Dial () было указано несколько адресатов
- Новая опция 'match_auth_username' в sip.conf, изменяющая порядок поиска пользователя при входящем INVITE с наличием авторизационных данных. Опция экспериментальная
- Новая опция «busylevel» для определения кол-ва каналов, при которых устройство считается занятым. Так же это значение добавлено в функцию SIP_PEER ()
- Функция SIPPEER добавлены новые параметры для получения номера порта, параметров callgroup и pickupgroup
- Опция «checkmwi» удалена из sip.conf, в связи с изменением механизма работы MWI, подробности в описании опций «pollmailboxes» и «pollfreq» в voicemail.conf
- Добавлена опция rtpdest в функцию CHANNEL (), отображающая адрес RTP удалённой системы
- Добавлены переменные SIPREFERRINGCONTEXT, SIPREFERREDBYHDR которые устанавливаются если имел место перевод вызова с использованием REFER
- Теперь 100 Trying не отправляется по-умолчанию в ответ на REGISTER, так как RFC не требует этого. Однако, для телефонов которые требуют такого поведения добавлена опция «registertrying», возвращающая прежнее поведение
- Новая опция 'callcounter' (глобальный уровень и уровень настроек устройства) добавлена для лучшей поддержки статуса абонентов, вместо call-limit
- Опции для установки T1 и B таймеров на глобальном и уровне устройства. Изменение этих параметров поможет уменьшить таймауты для медленных SIP серверов. Эта настройка предназначена для опытных пользователей, изменяйте её только если понимаете что делаете
- Синтаксис строки вызова для SIP изменён, чтобы добавить возможность указывать в поле To: произвольное значение
- Новая опция 'qualifyfreq' (глобальная и на уровне устройства), которая позволяет указать частоту отправки qualify пакетов
- Добавлена опция t38pt_usertpsource. Подробности в sip.conf.sample
Новое в IAX2
- Добавлена опция trunkmaxsize для управления предельным количеством линий в пределах одного транка
- Добавлена опция srvlookup в iax.conf для использования DNS SRV записей
- Добавлена поддержка OSP. Значение токена может быть получено и установлено с помощью функции CHANNEL ()
Изменения Local канала
- Функциональность статуса устройства в драйвере канала Local была улучшена для правильного отображения состояний INUSE или NOT_INUSE, когда используется канал типа Local, вместо состояния UNKNOWN, для существующего экстенжена
- Поддержка джиттер-буфера. Это позволит использовать существующую реализацию джиттер буфера при входящих звонках на приложения Asterisk вроде Voicemail или MeetMe
Изменения в DAHDI канале
- В Индии некоторые операторы передают CallerID через dtmf. Опция cidstart=polarity_IN позволяет указать тип передачи, при котором номер звонящего передаётся через dtmf после переполюсовки
- Добавлена поддержка установки автоматических переменных для каналов, заданных в chan_dahdi.conf
- Добавлены две опции: «mwimonitor» и «mwimonitornotify», которые разрешают мониторинг индикации голосовой почты на FXO портах. При смене состояния MWI вызывается скрипт, указанный в mwimonitornotify
- Добавлен тип сигнализации 'auto', который делает попытку использовать тип сигнализации, указанный в DAHDI. Это значение теперь используется по-умолчанию
- Команда CLI 'dahdi set dnd' позволяющая управлять режимом линии «не беспокоить» из командной строки
Другие каналы
- Добавлена экспериментальная поддержка отправки и получения видео в chan_oss. Для работы требуется SDL и ffmpeg/avcodec, плюс к этому Video4Linux или X11 для захвата видео потока из соответствующего источника
- Добавлено пропускание G729 кодека в chan_phone для карт Sigma Designs
- Исправлена поддержка кодеков в chan_skinny
- Добавлена опция bindaddr в gtalk.conf
- В H.323 добавлено оповещение о удержании вызова противоположной стороной диалога
- Поддержка установки бита приоритезации для VLAN трафика (802.1p). Более подробная информация в документации и файлах конфигурации каналов
Новые каналы
- Новый канал — chan_unistim. новый канал позволяет использовать с Asterisk телефоны Nortel i2002, i2004 и софтфон i2050. Подробности в doc/unistim.txt и configs/unistim.conf.sample
- Новый канал — chan_console, использующий кросс-платформенный аудио интерфейс portaudio. Работает с Mac CoreAudio, так же поддерживает другие интерфейсы
Изменения DUNDi
- Возможность указывать аргументы для приложения Dial () при использовании вложений DUNDi в диалплане
- Возможность динамически указывать веса для результатов запроса. реализовано с помощью установки глобальной переменной или функции диалплана. Используя функцию SHELL () возможно выполнить внешний скрипт, устанавливающий значимость каждого результата
- Две новые функции, DUNDIQUERY () и DUNDIRESULT (). Функции позволяют создать запрос к DUNDi из диалплана, получить количество результатов и организовать доступ к ним
Изменения голосовой почты
- Добавлена возможность настройки некоторых сообщений проигрываемых в Voicemail, настраивается в voicemail.conf
- Внутренняя поддержка MWI сильно переработана в Asterisk. Приложение Voicemail теперь будет само оповещать модули, подписанные на получение такой информации, о появлении новых писем в ящиках голосовой почты. Это так же означает, что изменения файлов (или IMAP папок) голосовой почты извне нужно регулярно проверять, для чего добавлены опции poolmailboxes и poolfreq в voicemail.conf
- Добавлено хранение приветствия на IMAP сервере
- Возможность перенастроить клавиши forward, reverse, stop, and pause для управления прослушиванием сообщения
- Включение SMDI в голосовой почте производится опцией smdienable
- Опция «lockmode» добавлена в asterisk.conf, для указаня метода блокировки файлов voicemail, а так же потенциально каких-либо других в будующем. По-умолчанию используется старый метод, доступен метод «flock», который нужно использовать, например, на смонтированных SMB/CIFS разделах
- Добавлена возможность сохранять удалённые сообщения, для того чтобы их было возможно восстановить при удалении по неосторожности
- Переработан SMDI интерфейс в Asterisk. Новый способ доступа к SMDI информации через функции SMDI_MSG_RETRIEVE () и SMDI_MSG (). В файле smdi.conf можно указать соответствие ID SMDI станции и ящика голосовой почты Asterisk. Так же изменён механизм сообщения об изменении в MWI
Изменения в очередях вызовов
- Глобальная опция 'shared_lastcall', предназначенная для работы wrapuptime сразу для всех очередей, в которых участвует агент
- Добавлена функция QUEUE_VARIABLES () для установки переменных в очередях. Добавлены опции setqueuevar и setqueueentryvar для каждой очереди, подробности в queues.conf.sample
- Опция keepstats в queues.conf, позволяющая сохранять статистику во время перегрузки модуля
- Опция setinterfacevar в queues.conf теперь так же устанавливает переменную MEMBERNAME, которая содержит имя агента, принявшего вызов
- Добавлена возможность запускать макрос в момент соединения агента очереди и звонящего клиента, подробности в queues.conf.sample
- Опция min-announce-frequency в queues.conf, которая регулирует минимальное время между оповещениями позиции звонящего, для того случая если позиция меняется достаточно часто
- Добавлена дополнительная информация в события EXITWITHTIMEOUT и EXITWITHKEYв queue_log
- Добавлена возможность queues настроенным в queue.conf (не-реалтайм) содержать агентов, описание которых содержится в реалтайм хранилище
- Добавлены стратегии «linear» (линейная) и «wrandom» (случайный выбор с весом)
- Добавлены переменные диал-плана QUEUE_MAX_PENALTY и QUEUE_MIN_PENALTY, которые так же могут изменяться во время вызова с помощью правил в queuerules.conf
- Новый параметр в настройке участника очереди — state_interface. Может быть использован, когда вызов агента идёт через один канал (например Local), а о реальном состоянии агента можно судить по другому каналу (например, SIP)
Изменения в приложении конференций
- Опция 'o' (talk optimization) удалена и теперь действует всегда
- При создании конференции UNIQUE канала, вызвавшего создание комнаты, сохраняется. Затем, на каждом из каналов, участвующих в конференции устанавливается переменная MEETMEUNIQUEID равная сохранённому ID
- Новое приложение MeetMeChannelAdmin (), которое похоже на MeetMeAdmin (), за исключением того, что для настройки указывается имя канала, а не номер конференции. Очень полезно при использовании совместно с опцией 'X' в ChanSpy ()
- Добавлена опция 'C' в Meetme позволяющая продолжить выполнение диал-плана после исключения участника из конференции
- Добавлена функциональность планирования конференций в реальном времени через ARA. возможно задать временные рамки конференции и проигрывать сообщение о невозможности присоединиться к конференции раньше срока. Возможно указать предельное количество участников.
- Добавлены опции S () и L () для приложения MeetMe (). По действию аналогичны таким же опциям приложения Dial (). Позволяют предупреждать участника конференции об истечении лимита времени присутствия в комнате и отключать по истечению времени
- Добавлена возможность указывать класс музыки, проигрываемый во время нахождения единственного участника в конференции при использовании опции 'M'
Изменения в других приложениях диал-плана
- Добавлена поддержка аргументов функции Gosub ()
- новая опция в Dial () для указания не отмечать вызов пропущенным, если вызов был принят на одном из нескольких вызываемых IP телефонов
- Увеличена точность, с которой возможно указать таймауты в приложениях:
- Wait (), WaitExten (), Congestion (), Busy (), Read (), WaitForRing () — все перечисленные функции в качестве таймаута принимают значение с плавающей точкой
- SpeechBackground () — уточнение в документации, что таймаут — целое количество секунд
- Добавлена опция 's' в приложение Page ()
- Добавлены команды 'E' и 'V' ExternalIVR ()
- Добавлены опции 'o' и 'X' в Chanspy ()
- Новое приложение — Bridge (), позволяющее соединить канал вызывающего с произвольным активным каналом в системе
- Добавлена опция 'n' в приложение SpeechBackground (), указывающее производить или нет ответ на канале, если он ещё сделан не был
- Добавлена возможность прослушивания музыки вместо сигнала вызова при работе приложения SLATrunk ()
- Приложение Read () больше не выходит из диалплана при возникновении ошибки, вместо этого переменная READSTATUS устанавливается равной ERROR
- Добавлена опция 'm' в приложение Directory (), которая позволяет выводить по 8 имён, не спрашивая после каждого подтверждения
- Новая опция в приложении AMD () для указания максимальной длительности одного слова. См. команду консоли «show application AMD»для получения подробного описания
- GotoIfTime () может осуществлять переход в случае не срабатывания условия, как приложение GoTo ()
- Приложение ChannelRedirect () больше не выходит из диал-плана если канал назначения не существует. Теперь переменная CHANNELREDIRECT_STATUS будет иметь значение SUCCESS при удачном выполнении или NOCHANNEL если канал не найден
- Серия новых параметров приложения ForkCDR (), устанавливающие порядок работы с полями CDR записи. Подробнее в CLI описании команды
Функции диал-плана
- Добавлена функция DEVICE_STATE (), позволяющая получить состояние любого устройства в диал-плане и создавать Custom: устройства и управлять их состоянием из диалплана
- В функцию CALLERID () добавлены параметры «pres» и «ton»
- Добавлены функции: LOCK (), TRYLOCK (), и UNLOCK (), которые предоставляют одноуровневый доступ к мьютексу (блокировке) плана набора. При этом невозможны взаимные блокировки (deadlock), команда LOCK () позволяет выполнить только одну блокировку для любого заданного канала. Также, блокировка автоматически снимается, когда канал освобождается.
- Функция HINT (), которая позволяет узнать информацию о имени или списке устройств, сопоставленных экстенжену для отображения его состояния
- Функция EXTENSION_STATE () позволяет получить состояние любого эктенжена
- Функция SYSINFO () для получения системной информации
- Функция DIALPLAN_EXISTS (), которая позволяет проверить существование цели в диалплане до перехода
- Функции TOUPPER () и TOLOWER (), приводящие строки к верхнему и нижнему регистру соответственно
- Функции ENUMQUERY () и ENUMRESULT (). Первая позволяет сделать ENUM запрос из диалплана, результат будет помещён в кэш. Вторая функция позволяет получить результат без генерации серии DNS запросов
- При соединении каналов, сервер Asterisk устанавливает BRIDGEPVTCALLID в значение «unique ID» драйвера канала для вызова (это не значение «Asterisk call ID» или «unique ID»), при условии, что драйвер канала это поддерживает. Для канала SIP, вы получаете «SIP call-ID» для соединенного канала, который Вы можете сохранить в CDR, как дополнительное поле (custom field)
Изменения MoH
- Поддержка получения информации о классах MOH в реальном времени из ARA. В дополнении имеется настройка, позволяющая кешировать полученные из БД классы для уменьшения количества запросов
- Новая опция «digit», эта опция, определённая цифре для одного из класса позволяет переключиться на него, нажав заданную цифру при прослушивании MoH
AEL
- AEL перестроен на использование GoSub вместо Macro, что должно решить проблему с ограничением величины стека. Для Macro возможно выполнение 7ми вложенных процедур, для GoSub эта величина ограничена только размером памяти (несколько тысяч не предел)
- Новая утилита utils/conf2ael, позволяющая сделать первый шаг при переходе от extensions.conf на extensions.ael. Утилита не закончена до конца, поэтому после её работы полученный файл придётся доработать «напильником»
Изменения функций res_features
- Встроенный метод осуществления перевода вызова с согласованием изменён, чтобы обеспечить возможность возврата вызова в случае неудачи. Регулируется опциями «atxferdropcall», «atxferloopdelay» и «atxfercallbackretries» в features.conf
- Модуль перемещён в главный исполняемый файл и как модуль более не существует
- Добавлена переменная TOUCH_MONITOR_PREFIX, позволяющая задать имя файла для записей разговоров, активируемых пользователем
- Добавлена опция parkedcalltransfers в features.conf
- Поддержка различных именованных групп функций в features.conf. Функция может быть единожды описана, а затем записана в различные группы
- Приложение ParkedCall () теперь позволяет иметь несколько зон парковки
Поддержка языков
- Бразильский португальский (pt-BR) для голосовой почты и ядра системы (say.c)
- Добавлена поддержка Венгерского языка для произношения чисел, даты и времени
- Добавлена поддержка Тайваня (tw) в голосовой почте
Ведение логов
- Набор новых опций в logger.conf, позволяющих организовать ротацию логов схожим с syslog образом
- Опция exec_after_rotate в logger.conf, позволяющая запустить команду после очередной ротации лога
- Поддержка записи лога работы очереди в ARA вместо тестового файла queue_log
Детализация вызовов
- Модуль cdr_manager теперь имеет в конфигурации секцию [mappings], так же как и cdr_custom, что позволяет добавлять в AMI события значения дополнительных CDR переменных
- Добавлен модуль cdr_adaptive_odbc, адаптирующийся к структуре клиентской БД
- Модуль CDR для Postgres поддерживает некоторые функции адаптивности из модуля cdr_adaptive_odbc
- Новая опция 'e' приложения ResetCDR (), которая разрешает ведение CDR записей, если ранее они были отключены приложением NoCDR ()
Новые модули
- Добавлен новый модуль CDR — cdr_sqlite3_custom
- Добавлен новый модуль конфигурации реального времени — res_config_sqlite
- Добавлен новый модуль — res_config_curl, который позволяет манипулировать с настройками реального времени на удалённом сервере с помощью HTTP POST запросов. Для работы требуется загруженный модуль func_curl
- Добавлен новый модуль — res_config_ldap. Модуль позволяет использовать LDAP сервер как источник данных для конфигурации в реальном времени
- Модуль pbx_lua, дающий возможность писать диал-планы на lua. Подробнее о написании диалплана таким образом в примере configs/extensions.lua.sample
Разное
- Возможность устанавливать верхние биты ToS непривеллигированному пользователю в Linux, используя libcap . Если configure не может найти libcap, можно использовать опцию --with-cap для указания пути
- Новая опция strictrtp в rtp.conf. Если включена, то RTP пакеты, приходящие с неизвестных адресов, будут игнорированы
- Исходные коды iLBC более не входят в поставку в связи с лицензионными проблемами (более детальные инструкции в UPGRADE.txt)
- Опция maxfiles в asterisk.conf, позволяющая указать максимальное количество файлов, которое может открыть Астериск при запуске
- Добавлена опция jittertargetextra
- Новый алгоритм для поиска соответствия экстенженов, основанный на деревьях. Включается опцией «extenpatternmatchingnew» в extensions.conf во время работы данный алгоритм может быть включен с помощью CLI команды 'dialplan set extenpatternmatchingnew true/false'. По-умолчанию отключен в связи с неполным повторением работы предыдущего алгоритма
- Новая опция -s при удалённом подключении к консоли астриска (rasterisk, asterisk -r) для указания какой именно сокет использовать для подключения
- Добавлено создание лога к make update файле update.log
- Новый флаг компиляции — CHANNEL_TRACE, который позволяет производить трассировку каналов, доступную через функцию CHANNEL (trace). Служит для отладки диалплана