Quantcast
Channel: IP АТС Asterisk
Viewing all 1135 articles
Browse latest View live

/etc/asterisk/logger.conf

$
0
0

/etc/asterisk/logger.conf

;
; Logging Configuration
;
; In this file, you configure logging to files or to
; the syslog system.
;
; "logger reload" at the CLI will reload configuration
; of the logging system.

[general]
;
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
;
; see strftime(3) Linux manual for format specifiers.  Note that there is also
; a fractional second parameter which may be used in this field.  Use %1q
; for tenths, %2q for hundredths, etc.
;
;dateformat=%F %T       ; ISO 8601 date format
;dateformat=%F %T.%3q   ; with milliseconds
;
;
; This makes Asterisk write callids to log messages
; (defaults to yes)
;use_callids = no
;
; This appends the hostname to the name of the log files.
;appendhostname = yes
;
; This determines whether or not we log queue events to a file
; (defaults to yes).
;queue_log = no
;
; Determines whether the queue_log always goes to a file, even
; when a realtime backend is present (defaults to no).
;queue_log_to_file = yes
;
; Set the queue_log filename
; (defaults to queue_log)
;queue_log_name = queue_log
;
; Log rotation strategy:
; sequential:  Rename archived logs in order, such that the newest
;              has the highest sequence number [default].  When
;              exec_after_rotate is set, ${filename} will specify
;              the new archived logfile.
; rotate:  Rotate all the old files, such that the oldest has the
;          highest sequence number [this is the expected behavior
;          for Unix administrators].  When exec_after_rotate is
;          set, ${filename} will specify the original root filename.
; timestamp:  Rename the logfiles using a timestamp instead of a
;             sequence number when "logger rotate" is executed.
;             When exec_after_rotate is set, ${filename} will
;             specify the new archived logfile.
;rotatestrategy = rotate
;
; Run a system command after rotating the files.  This is mainly
; useful for rotatestrategy=rotate. The example allows the last
; two archive files to remain uncompressed, but after that point,
; they are compressed on disk.
;
; exec_after_rotate=gzip -9 ${filename}.2
;
;
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See 'asterisk -h' for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
[logfiles]
;
; Format is "filename" and then "levels" of debugging to be included:
;    debug
;    notice
;    warning
;    error
;    verbose(<level>)
;    dtmf
;    fax
;    security
;
; Special filename "console" represents the root console
;
; Filenames can either be relative to the standard Asterisk log directory
; (see 'astlogdir' in asterisk.conf), or absolute paths that begin with
; '/'.
;
; Verbose takes an optional argument, in the form of an integer level.
; Verbose messages with higher levels will not be logged to the file.  If
; the verbose level is not specified, it will log verbose messages following
; the current level of the root console.
;
; Special level name "*" means all levels, even dynamic levels registered
; by modules after the logger has been initialized (this means that loading
; and unloading modules that create/remove dynamic logger levels will result
; in these levels being included on filenames that have a level name of "*",
; without any need to perform a 'logger reload' or similar operation).
; Note that there is no value in specifying both "*" and specific level names
; for a filename; the "*" level means all levels.  The only exception is if
; you need to specify a specific verbose level. e.g, "verbose(3),*".
;
; We highly recommend that you DO NOT turn on debug mode if you are simply
; running a production system.  Debug mode turns on a LOT of extra messages,
; most of which you are unlikely to understand without an understanding of
; the underlying code.  Do NOT report debug messages as code issues, unless
; you have a specific issue that you are attempting to debug.  They are
; messages for just that -- debugging -- and do not rise to the level of
; something that merit your attention as an Asterisk administrator.  Debug
; messages are also very verbose and can and do fill up logfiles quickly;
; this is another reason not to have debug mode on a production system unless
; you are in the process of debugging a specific issue.
;
;debug => debug
;security => security
console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
;full => notice,warning,error,debug,verbose,dtmf,fax

;syslog keyword : This special keyword logs to syslog facility
;
;syslog.local0 => notice,warning,error
;
Файлы конфигурации Asterisk

Коды Asterisk - features.conf

$
0
0



Коды Asterisk - features.conf

В файле features.conf назначаются пользовательские коды абонентских функций Asterisk и опции абонентских функций, такие как:
Переадресация вызова(transfer), перехват вызова (pickup), запись по требованию (record on demand), таймауты между набора и переадресации (digit timeout), паркинг (park) и др.

Asterisk CLI override default from FreePBX

features show
Builtin Feature           Default Current
---------------           ------- -------
Pickup                    *8      *8
Blind Transfer            #       ##
Attended Transfer                 *2
One Touch Monitor
Disconnect Call           *       **
Park Call
One Touch MixMonitor

Dynamic Feature           Default Current
---------------           ------- -------
apprecord                 no def  *1

Feature Groups:
---------------
(none)

Call parking (Parking lot: default)
------------
Parking extension     :      70
Parking context       :      parkedcalls
Parked call extensions:      71-78
Parkingtime           :      45000 ms
Comeback to origin    :      no
Comeback context      :      parkedcallstimeout
Comeback dial time    :      30
MusicOnHold class     :      default
Enabled               :      Yes
Конфигурация парковки вызовов
parkext => 700 ; Номер екстеншена, набираемый для парковки вызова.
parkpos => 701-720 ; Номера екстеншенов, на которые будут парковаться вызовы.
context => parkedcalls ; Название контекста, где обрабатывается парковка вызовов,
 и который нужно включать директивой "INCLUDE " в план набора - extensions.conf.
parkingtime => 45 ; Количество секунд, определяющее максимальное время 
на которое может быть припаркован вызов (по умолчанию - 45 секунд).
; по истечении таймаута, будет вызываться оригинальный, первоначально вызванный, номер екстеншена.

Замечание: Вы должны перезапустить Asterisk или перегрузить модуль res_features.so, после внесения изменений в файл features.conf.

Добавлено в Asterisk начиная с версии 1.2:

Добавлена возможность использовать комбинацию, отличную от *8 для перехвата (pickup) поступающих вызовов в своей группе (call group) на свой телефон. Для этого в файле features.conf используется следующий параметр:

pickupexten = *8 ; Конфигурация номера екстеншена для перехвата входящих вызовов (pickup extension). По умолчанию - *8.

В некоторых SIPтелефонах и VOIP шлюзах такой код, как *8 может использоваться для внутренних сервисных функций, следовательно, Вам необходимо задать для параметра «pickupexten» некоторое другое значение. Например, если Ваши внутренние номера находятся в диапазоне: 201-299, то для этой функции удобно было бы назначить номер 200.

asterisk sip flash transfer

;transferdigittimeout => 3 ; Максимальное число секунд между набираемыми цифрами при осуществлении перевода вызова на другой номер.
;courtesytone = beep ; Звуковой файл, проигрываемый запаркованному абоненту,
; когда кто-либо "снимает" его вызов с парковки.
;xfersound = beep ; Звуковой файл, для индикации того, что перевод вызова с консультацией (attended transfer) успешно завершен.
;xferfailsound = beeperr ;Звуковой файл, для индикации неудачи при переводе вызова на другой номер.
;adsipark = yes ; Устанавливается, если Вы хотите получать анонс о номере, на который был запаркован вызов, по ADSI.
;findslot => next ; Парковать вызов на следующий свободный номер в выделенном диапазоне номеров для этих целей. По умолчанию - 'first' (первый доступный номер из диапазона).

;pickupexten = *8 ; Конфигурация номера екстеншена для перехвата входящих вызовов (pickup extension). По умолчанию - *8.
;featuredigittimeout = 500 ; Максимальное время (в миллисекундах) между набираемыми цифрами, набираемых для активации описываемых тут функций. По умолчанию - 500.

[featuremap]
;blindxfer => #1 ; Комбинация кнопок для слепого перевода вызова на другой номер (Blind transfer), по умолчанию - #
;disconnect => *0 ; Комбинация кнопок для прекращения соединения.
;automon => *1 ; Комбинация кнопок для включения функции записи разговора (One Touch Record).
;atxfer => *2 ; Комбинация кнопок для включения функции перевода вызова с консультацией (attended transfer).

[applicationmap]
; Не используйте комбинацию кнопок, такую как, например, #9 в секциях applicationmap или featuremap, 
только если Вы не поменяли комбинацию для параметра 'blindxfer' с значения # на какое-либо другое, например - #1 !
testfeature => *9,callee,Playback,tt-monkeys ;Проиграть файл tt-monkes вызываемому абоненту (callee), 
при наборе комбинации *9 - используйте опции 'callee' или 'caller', в зависимости от того, кому должен проигрываться файл.

Если Вы установите значение переменной __TRANSFER_CONTEXT , тогда оно будет использоваться в качестве контекста при переводе вызова на другой номер (обратите внимание на два ведущих символа подчеркивания). Более того: Вы должны установить значение переменной TRANSFER_CONTEXT, как для канала, на котором производиться перевод вызова, так и для канала, куда попадает переведенный вызов. Не знаю почему, но res_features считает более приоритетной переменную TRANSFER_CONTEXT из канала, куда попадает переведенный вызов, а если она не определена, то используется переменная канала, который был инициатором перевода вызова. Этот контекст используется для поиска и обработки номера, на который производится переадресация вызова. Итак, Вы можете установить значение этой переменной в любом контексте, в котором хотите.

Использую директиву blindxferв секции [featuremap], Вы можете переопределить комбинацию кнопок для слепого перевода вызова на другой номер. Например, если для параметра blindxferустановить значение «##», тогда вы сможете перевести вызов на другой номер только, если вы сначала два раза быстро нажмете кнопку «#». Это решает проблему при использовании голосового меню в сервере Asterisk, где может потребоваться эта клавиша для других целей, например, в случае с приглашением - «Введите Ваш код доступа и нажмите клавишу решетка (#)».

atxfer - позволяет совершать контролируемый перевод вызова на другой номер (attended transfer). Это работает примерно так:

В процессе разговора со своим собеседником, Вы можете набрать последовательность кнопок, определенную в директиве «atxfer». После этого Вы услышите звуковое приглашение от сервера Asterisk - «Transfer», далее будет генерироваться длинный тональный сигнал (КПВ). В это время Ваш собеседник будет переведен в режим ожидания и ему будет проигрываться музыка. Теперь Вы можете набрать номер, на который вы хотите перевести вызов и после соединения, можете сообщить этому абоненту, что он сейчас будет соединен с Вашим собеседником. После того, как Вы положите трубку, Ваш собеседник и абонент на которого вы перевели вызов, будут соединены между собой. В случае, когда абонент, на которого Вы переводите вызов, по каким-либо причинам не хочет говорить с Вашим собеседником, он может просто повесить трубку, и Вы снова соединитесь с ним.

Замечание: Вы ДОЛЖНЫ использовать в команде Dial() параметры T и/или t, чтобы эта функция могла работать у вызывающего и/или вызываемого абонента.

applicationmap

Вам необходимо назначить значение для переменной канала DYNAMIC_FEATURES, чтобы использовать функции, описанные в секции [applicationmap]:

Set(DYNAMIC_FEATURES=hangup#play#testfeature)

Замечание по поводу потоков медиаданных: Когда сервер Asterisk знает или предполагает, что он находиться не на пути потока с медиаданными, то он также предполагает, что не может принимать DTMFпосылки. Однако, если используется метод SIP INFO для DTMFсигнализации, тогда прием DTMFдолжен работать и в этом случае, т.к., когда сервер Asterisk находит нужные DTMFпосылки, он будет 'рассоединять', уже соединенные напрямую потоки медиаданных, и заново соединит их уже пропуская эти потоки через себя.

Пример Начало записи разговора, нажатием одной кнопки.

exten ⇒ 123,1,Set(DYNAMIC_FEATURES=automon) ; включаем функцию «One-touch». exten ⇒ 123,2,Dial(SIP/phone100,,wW) ; параметры «wW» включают функцию «запись разговора, нажатием одной кнопки».

Входящий и исходящий звуковой поток записываются в два отдельных файла, и будут доступны в директории Вашего сервера asterisk:

/var/spool/asterisk/monitor

Эти два звуковых файла можно смикшировать в один, используя утилиту sox: soxmix *in.wav *out.wav output.wav

При необходимости, полученный в результате файл можно конвертировать и ужать в другой формат, например, MP3, используя утилиту lame: lame –preset voice -v -B 64 -a output.wav output.mp3

Фактически, Вам не надо использовать везде, где только можно функцию SET для установки значения этой переменной, оно требуется только перед директивой Dial, Вашего плана набора. Вместо этого, можно глобально включить «automon», поместив следующую директиву в файл extensions.conf:

[globals] DYNAMIC_FEATURES⇒automon

При этом эта функция будет работать для всех команд Dial() или Queue(), с установленными параметрами «w» или «W».

По умолчанию, «automon» будет использовать формат «wav» для записи вызовов, но Вы можете указать другой формат, установив значение переменной TOUCH_MONITOR_FORMAT в нужное Вам значение.

Asterisk: Настройка

Follow Me - Следуй за мной

$
0
0

Follow Me - Следуй за мной

Модуль Follow Me предустановленный переход вызова на местный или внешний номер.

Edit Follow Me

  • Disable - Выключить Follow Me
  • Initial Ring Time - Время через которое будет вызван номер из списка Follow Me.
  • Ring Strategy - стратегия наведения вызова на несколько номеров.
    • ringallV2: Звонит первый в списке телефон в течении Initial Ring Time, по истечении этого времени звонят все телефоны из списка.
    • ringall - Звонят, одновременно, все телефоны из списка.
    • hunt - Звонит 1-й телефон из списка, если нет ответа в течении Ring Time, звонит следующий и так далее до конца списка.
    • memoryhunt - Звонит 1-й телефон из списка, затем 1-й и 2-й, затем 1-й, 2-й и 3-й и тд.
    • firstavaialbleЗвонит первый доступный из списка номер и Destination If No Answerпо неответу.
    • firstnotonphoneЗвонит первый доступный из списка номер и только он.
  • Ring Time - Время в течении которого будут вызываться номера из списка Follow Me.
  • Follow-Me List - список номеров для переадресации. Могут быть указаны как внутренние номера системы, так и внешние. Внешний номер должен заканчиваться #.

Пример списка:

2201 - Основной номер. 
4001 - Другой внутренний номер.
1234567890# - Внешний номер. Решетка символ конца номера. Используйте, также, префикс выхода на внешнюю линию.
  • Announcement - Здесь можно указать системное сообщение, которое прозвучит перед тем, как будут вызваны номера из списка Follow Me.
  • Play Music on Hold - Здесь можно выбрать музыку на удержании MOH, которая будет проигрываться вызывающему абоненту. Если указано Ring, абонент услышит КПВ.
  • CID Name Prefix - Здесь можно указать префикс CallerID отображаемого на местных телефонах, для указания что поступает переадресованный вызов. Т.к. префикс передается как CallerID NAME, на внешний номер, вероятнее всего, передаваться не будет.

Call Confirmation Configuration

  • Confirm Calls - Эта опция включает голосовое предупреждение о переадресации на внешний номер (отмеченный #). Для подтверждения надо нажать «1».
  • Remote Announce - Голосовое сообщение внешнему абоненту с запросом подтверждения о приеме вызова (нажмите 1)
  • To-Late Announce - Голосовое сообщение внешнему абоненту.

Change External CID Configuration

Модификация внешнего CallerID

  • Mode
    • Default - В этом режиме предается CallerID вызывающего абонента без изменений.
    • Fixed CID Value - Если вы выбрали этот режим будет передано CID назначенное в поле Fix CID Option
    • Outside Fixed CID Value - Тоже само, за исключением вызовов с внутренних номеров.
    • Use Dialed Number - Устанавливает в качестве CID входящий номер, на который пришел вызов.
    • Force Dialed Number - Тоже самое, только игнорирует опцию “Block Foreign Caller ID”, если таковая задана на транке, через который идет вызов.
  • Fixed CID Value - задайте CID если выбран режим Fixed CID Valueили Outside Fixed CID Value.

Change External CID Configuration

  • Destination if no answer - назначение вызова, если никто из списка Follow Me не ответил по истечении Ring Timeв соответствии со стратегией вызова. По умолчанию выполняется «Normal Extension Behavior» - нормальные условия для екстеншена, как если бы Follow Me не было задано.

см. также

FreePBX

function 'REALTIME_FIELD'

$
0
0

function 'REALTIME_FIELD'

Функция диалплана Asterisk.
Получает значение заданного поля, из строки, где поле сравнения, содержит указанное значение.

Описание
Данная функция получает одно значение - 'fieldname' из БД, где 'fieldmatch' содержит значение 'matchvalue'.
В режиме записи действие функции REALTIME_FIELD() аналогично function 'REALTIME'.

Синтаксис
REALTIME_FIELD(family,fieldmatch,matchvalue,fieldname)

Пример
Разрешим вызовы на VIP абонента, только с определенных номеров, где

  • 4888 - привилегированный абонент
  • 4ХХХ - все отстальные

/etc/asterisk/extconfig.conf

[settings]
did_family => odbc,sql,did
cos_family => odbc,sql,cos1
Формат - family ⇒ engine,контекст в res_odbc.conf,таблица в БД

/etc/asterisk/extensions.conf

 [realtime-did]
 switch => Realtime/did1@did_family

Формат - switch ⇒ Realtime/контекст-в-БД@family

таблица did

+----+---------+-------+----------+---------+---------------------+
| id | context | exten | priority | app     | appdata             |
+----+---------+-------+----------+---------+---------------------+
|  1 | did1    | _4888 |        1 | goto    | cos1,${EXTEN},1     |
|  2 | did1    | _4XXX |        1 | dial    | PJSIP/${EXTEN},,    |
+----+---------+-------+----------+---------+---------------------+
Здесь вызовы на привилегированного абонента отправляются в контекст cos1,
на остальных разрешается набор.

Контекст cos1

[cos1]
exten => _4XXX,1,gotoif($["${CALLERID(num)}" = "${REALTIME_FIELD(cos_family,master,${EXTEN},slave)}"]?vip:all)
exten => _4XXX,n(all),verbose(DENY for ${CALLERID(num)})
exten => _4XXX,n,hangup
exten => _4XXX,n(vip),verbose(ALLOW for ${REALTIME_FIELD(cos_family,master,${EXTEN},slave)})
exten => _4XXX,n,dial(PJSIP/${EXTEN},,)

В данном контексте, проверяется по таблице cos1, может ли абонент связываться с VIP абонентом.
Если CallerID присутствует в таблице, то может.

таблица cos1

+--------+-------+
| master | slave |
+--------+-------+
| 4888   | 2667  |
| 4888   | 2668  |
+--------+-------+

см. также

Asterisk: функции диалплана

function 'REALTIME_DESTROY'

$
0
0

function 'REALTIME_DESTROY'

Функция Asterisk: Удаляет запись из реалтайм хранилища.

Описание

Данная функция действует наподобие REALTIME(....),
но в отличии от нее, только удаляет запись из базы данных.
Если в asterisk.confпараметр live_dangerously=no, то функция REALTIME_DESTROY,
будет выполнять только из диалплана, но не по внешним протоколам.

Синтаксис

REALTIME_DESTROY(family,fieldmatch[,matchvalue[,delim1[,delim2]]])

пример

exten => _0001,1,PlayBack(beep)
    same => n,Verbose(${CALLERID(NUM)});
    same => n,GoSub(sub-delsip,s,1(${CALLERID(NUM)}))

[sub-delsip]
exten => s,1,Verbose(${ARG1})
  same => n,Set(REALTIME_DESTROY(hints,channels,${ARG1},:,:)=ignored)
  same => n,Playback(ru/agent-loggedoff)
  same => n,hangup
См. также

Asterisk: функции диалплана

Настроим Asterisk, FreeSWITCH, IP АТС.

$
0
0

Настроим Asterisk, FreeSWITCH, IP АТС.

Интегратор облачных систем телекоммуникаций Asterisk, FreeSWITCH.

Реализуем сложные ТЗ.

Удаленно, в любой точке мира.

Установка IP АТС на открытом программном обеспечении включает в себя следующие этапы:

  1. Разработка технического задания с учетом требований заказчика и возможностей IP АТС.
  2. Подготовка договора на установку и настройку и, если требуется, поставку оборудования.
  3. Подготовка счета на оплату с учетом технического задания, согласование сроков и порядка оплаты.
  4. Удаленная установка IP АТС в любой точке мира.
  5. Установка IP АТС с выездом на объект (Санкт Петербург).
  6. Предварительная настройка оборудования в нашем сервисном центре.
  7. Сдача проекта. Проверка работоспособности всех компонентов и алгоритмов работы IP АТС.
  8. Обучение для дальнейшей эксплуатации IP АТС сотрудниками заказчика.
  9. Бесплатная техническая поддержка в течении месяца с момента запуска в эксплуатацию.

Мы находимся в Санкт-Петербурге, но работаем по всему миру!

Решения

VoIPАТС

  • Неограниченное количество VoIPабонентов и транков.
  • Запись разговоров и детализированный отчет о звонках.
  • Факс на e-mail.
  • Русскоязычный интерфейс.
  • CTI - Интеграция со сторонними приложениями.

Колл Центр

Дополнительно

  • Аудит и обслуживание уже установленных систем Asterisk, FreeSWITCH и др.
  • Написание кастомизированного диаплана под любые нужды.
  • Интеграция с устаревшими TDMАТС (Avaya, NEC, Nortel, Samsung, Panasonic, LG).
  • Аудит и настройки безопасности VoIPсистем.
  • Биллинг. Многопользовательские системы.
  • SIP proxy, SBC.

Напишите нам!

Свяжитесь с нами для получения подробной информации!
Офисная АТС

Only edit this fieldset if “Функционал” is set to “Офисная АТС”.

Колл Центр

Only edit this fieldset if “Функционал” is set to “Колл Центр”.

Кастомные решения

Only edit this fieldset if “Функционал” is set to “Все сложно”.

Asterisk:Лог очереди (queue) в mysql

$
0
0

Asterisk:Лог очереди (queue) в mysql

создайте таблицу в БД asterisk.

CREATE TABLE IF NOT EXISTS `queue_log` (
`time` varchar(32) DEFAULT NULL,
`callid` char(64) DEFAULT NULL,
`queuename` char(64) DEFAULT NULL,
`agent` char(64) DEFAULT NULL,
`event` char(32) DEFAULT NULL,
`data` char(64) DEFAULT NULL,
`data1` char(64) DEFAULT NULL,
`data2` char(64) DEFAULT NULL,
`data3` char(64) DEFAULT NULL,
`data4` char(64) DEFAULT NULL,
`data5` char(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
в файле /etc/asterisk/logger.conf выключите лог в файл:
 queue_log_to_file = no

в файле /etc/asterisk/asterisk.conf

 [options]
 queue_adaptive_realtime = yes

в файле /etc/asterisk/extconfig.conf

 queue_log => odbc,asterisk,queue_log

где asterisk ваше db конфиг в /etc/asterisk/res_odbc.conf

[asterisk]
enabled => yes
dsn => asterisk
username => dbuser
password => dbpass
pre-connect => yes

Расшифровка типов данных для тех или иных событий.

eventdata1data2data3
ABANDONpositionorigpositionwaittime
AGENTDUMP
AGENTLOGINchannel
AGENTCALLBACKLOGINexten@context
AGENTLOGOFFchannellogintime
AGENTCALLBACKLOGOFFexten@contextlogintimereason
COMPLETEAGENTholdtimecalltimeorigposition
COMPLETECALLERholdtimecalltimeorigposition
CONFIGRELOAD
CONNECTholdtimeuniqueid
ENTERQUEUEurlcalleridenterposition
EXITWITHKEYkeyposition
EXITWITHTIMEOUTposition
QUEUESTART
SYSCOMPAT
TRANSFERextension,context

Asterisk app: AddQueueMember

Asterisk: PauseQueueMember

Asterisk: Queue

Asterisk: QueueLog

Asterisk: RemoveQueueMember

Asterisk: UnpauseQueueMember

Asterisk queuerules.conf

Настройка очередей (queues.conf) Asterisk

function 'QUEUE_EXISTS'

function 'QUEUE_MEMBER'

function 'QUEUE_MEMBER_LIST'

function 'QUEUE_VARIABLES'

function 'QUEUE_WAITING_COUNT'

FreePBX Queues

Asterisk Call Center Stats

Asterisk app: Gosub

$
0
0

Asterisk app: Gosub

Команда диалплана Asterisk - GoSub выполняет указанный контекст и возвращает вызов в исходный.

Описание

GoSub действует нподобии Macro, но в отличии от него может вызывать любой екстеншен, а не только s, как в Macro.

Синтаксис

Gosub([[context,]exten,]priority[(arg1[,...][,argN])])

Перенаправить выполнение диалплана в <sub контекст, на расширение exten и указанный приоритет, передав заданные аргументы,
с последующим возвращением в исходный контекст.

См. также

примеры

Запись вызова .

[from-om]
exten => _X.,1,GoSub(sub-monitor,s,1(${EXTEN}))
exten => _X.,n,Dial(PJSIP/${EXTEN}@sip_trunk,,)
  
[sub-monitor]
exten => s,1,Set(WAV=/var/spool/asterisk/monitor/${UNIQUEID})
exten => s,n,Set(MP3=/var/spool/asterisk/monitor/mp3/${UNIQUEID})
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32  --silent "${WAV}.wav"  "${MP3}.mp3" && rm -f "${WAV}.wav" && chmod o+r "${MP3}.mp3")
exten => s,n,Set(CDR(recordingfile)=${UNIQUEID}.mp3)
exten => s,n,Set(CDR(userfield)=${ARG1})
exten => s,n,MixMonitor(${WAV}.wav,b,${monopt})  
  
exten => s,n,return

FreePBX совместимая запись разговоров.

[from-internal]
include => record

[record]
exten => _X.,1,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => _X.,n,Dial(DAHDI/g0/${EXTEN}

[sub-record-check-custom1]
exten => s,1,Set(REC_POLICY_MODE_SAVE=${REC_POLICY_MODE})
exten => s,n,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR()
exten => s,n,GotoIf($["${REC_STATUS}" != "RECORDING"]?check)
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},a,${MIXMON_POST})
exten => s,n(check),Set(__MON_FMT=${IF($["${MIXMON_FORMAT}"="wav49"]?WAV:${MIXMON_FORMAT})})
exten => s,n,GotoIf($["${REC_STATUS}"!="RECORDING"]?next)
exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => s,n,Return()
exten => s,n(next),ExecIf($[!${LEN(${ARG1})}]?Return())
exten => s,n,ExecIf($["${REC_POLICY_MODE}"="" & "${ARG3}"!=""]?Set(__REC_POLICY_MODE=${ARG3}))
exten => s,n,GotoIf($["${REC_STATUS}"!=""]?${ARG1},1)
exten => s,n,Set(__REC_STATUS=INITIALIZED)
exten => s,n,Set(NOW=${EPOCH})
exten => s,n,Set(__DAY=${STRFTIME(${NOW},,%d)})
exten => s,n,Set(__MONTH=${STRFTIME(${NOW},,%m)})
exten => s,n,Set(__YEAR=${STRFTIME(${NOW},,%Y)})
exten => s,n,Set(__TIMESTR=${YEAR}${MONTH}${DAY}-${STRFTIME(${NOW},,%H%M%S)})
;exten => s,n,Set(__FROMEXTEN=${IF($[${LEN(${AMPUSER})}]?${AMPUSER}:${IF($[${LEN(${REALCALLERIDNUM})}]?${REALCALLERIDNUM}:unknown)})})
exten => s,n,Set(__FROMEXTEN=${CALLERID(name)})
exten => s,n,Set(__CALLFILENAME=${ARG1}-${ARG2}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID})
exten => s,n,Goto(${ARG1},1)



;exten => out,1,ExecIf($["${REC_POLICY_MODE}"=""]?Set(__REC_POLICY_MODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/external)}))
;статус записи вкл
exten => out,1,ExecIf($["${REC_POLICY_MODE}"=""]?Set(__REC_POLICY_MODE=always))
exten => out,n,GosubIf($["${REC_POLICY_MODE}"="always"]?record,1(exten,${ARG2},${FROMEXTEN}))
exten => out,n,Return()


exten => record,1,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => record,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => record,n,Set(__REC_STATUS=RECORDING)
exten => record,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => record,n,Return()

Команды диалплана Asterisk


Asterisk app:GosubIf

$
0
0

Asterisk app:GosubIf

Команда диалплана Asterisk GoSubIf, выполняет переход на лейбл диалплана или контекст по заданному условию и возвращается назад.

Описание

Если условие верно, переходит на labeliftrue.
Если уловие не верно, переходи на labeliffalse.
В обоих случаях вызов может быть возвращен на следующий приоритет, после GoSubIf, команндой Return

Синтаксис

GosubIf(condition?[labeliftrue[(arg1[,...][,argN])]][:labeliffalse[(arg1[,...][,argN])]])

Аргументы
  • labeliftrue - лейбл для перехода, если условие верно. Форма похожа на GoTo - [[context,]extension,]priority
  • labeliffalse - лейбл для перехода, если условие неверно.

См. также

Команды диалплана Asterisk

Asterisk app: Goto

$
0
0

Asterisk app: Goto

Команда диалплана Asterisk GoTo, выполняет переход на указанный приоритет, екстеншен или контекст.

Описание

Данное приложение выполняет переход вызова на указанный контекст, екстеншен и приоритет.
и продолжает выполнение диалплана по указанному месту. Если <extension> или <extension> и <context> не заданы, команда выполняет переход на указанный приоритет в текущем екстеншене (расширении).
Должен быть указан, как минимум аргумент <priority>, иначе приложение GoToвозвратит '-1' и канал будет отключен. Если назначение указанное приложению не существует и Asterisk не может его найти будет предпринята попытка найти расширение 'i' (invalid) в текущем контексте. Если же и такового не найдено, то будет выполнено стандартное расширение'h' (hangup). В случае если ни того, ни другого не найдено, вызов будет завершен.

Синтаксис

Goto([[context,]extensions,]priority)

см. также

Команды диалплана Asterisk

Asterisk Dialplan:Стандартные расширения

$
0
0

Asterisk Dialplan:Стандартные расширения

Расширение диалплана Asterisk (екстеншен) представляет из себя идентификатор,
числовое или буквенное выражение, которое вызывается в контексте диалплана.
Расширением может быть, как номер набираемый абонентом,
так и уникальный идентификатор, для обозначения шагов диалплана.
Стандартные расширения диалплана Asterisk предопределены заранее
и выполняются, обычно, в связи с какими-либо событиями:

  • a: Вызывается, когда пользователь нажимает '*' во время проигрывания приветствия системы голосовой почты.
  • h: Вызывается, по завершению вызова(hangup).
  • i: Вызывается, при попытке вызова неизвестного екстеншена (invalid).
  • o: Расширение оператора, используется для обработки нажатия нуля в системе голосовой почты.
  • s: Стартовое расширение в контексте. Очень часто используется, просто как символ расширения.
  • t: Вызывается, при наступлении состояния таймаута.
  • T: Вызывается, при наступлении состояния абсолютного таймаута, заданного функцией AbsoluteTimeout(absolute).
  • e: Перехват расширений i,t и T для обработки ошибки в едином месте. Для выяснения типа ошибки может быть использована функция function 'EXCEPTION'()
  • failed: Используется, если auto-dial out вызов завершился неудачно (который имеет определённый контекст, приоритет и расширение).
  • fax: Используется для определения факса на DAHDIканалах.
  • talk: Используется совместно с BackgroundDetect.

Краткая расшифровка назначения.

  • s: (Start) – Старт. В основном, используется в плане набора когда в контекст поступает вызов, не содержащий конкретной информации о вызываемом екстеншене. По примеру обычной телефонной линии: когда поступает вызов, мы слышим, что телефон звонит, и больше ничего не можем сказать об этом вызове и кому он адресован. Даже если мы знаем номер звонящего, у нас должна быть точка в контексте, с которой мы бы могли начать обработку этого вызова. Также, можно представить екстеншен s, как список команд плана набора, которые будут выполнены по умолчанию для абонентов, попавших в какой-либо контекст.
  • t: (Timeout) – Тайм-аут. Команды этого экстеншена будут выполнены, если вызывающий абонент не произвел никаких действий в течение заданного времени после того, как ему было проиграно сообщение или по истечению таймаута команды WaitExten, наример. Также используется для отключения бездействующих линий.
  • T: (AbsolutTimeout) – Абсолютный Таймаут. Используется для вызовов, которые были завершены из-за ограничения продолжительности вызовов, установленной функцией AbsoluteTimeout(absolute). Например, для проигрывания голосового уведомления приложением Playback.
  • h: (Hangup) – Отбой. Используется при завершении вызова. По завершению вызова, если задано стандартное расширение h, оно будет выполнено. Таким образом можно выполнить какое-либо действие, сохранить или передать данные о вызове и тд.
  • i: (Invalid) Используется, если в контексте вызывается неизвестный екстеншен или получен неопределенный в контексте DTMFввод в голосовом меню.

Замечание.

Использование этих екстеншенов может изменить содержание ваших CDRзаписей, что может Вам совсем не понравиться, например: Поле dst больше не будет содержать набранный номер! Как обходной маневр, Вы можете исследовать команду Dial() с опцией 'g' («go on in context») и обдумать использование ResetCDR(w) и/или NoCdr().

Стандартные приоритеты

  • hint: Приоритет 'hint' используется для ассоциации екстеншена с Астериск каналом, для того, чтобы можно было мониторить состояние этого канала, как состояние екстеншена (телефон не может обращаться к каналам, а только к экстеншенам).

В Asterisk, канал (технология/устройство) может иметь несколько состояний (недоступен, в использовании, занято, посылка вызова, и т.д.), но расширение – это только метка для последовательности приложений. Как бы то ни было, когда сообщая состояние канала к внешнему устройству, типа receptionist консоли, вы не можете использовать внутренние названия каналов Астериска, но должны использовать имя внешнего опознаваемого ресурса, обычно номер расширения.

Файлы конфигурации Asterisk

Asterisk: Настройка

$
0
0

Asterisk: Настройка

Документация по настройке Asterisk на русском языке.
Диалплан, SIPи DAHDIканалы, очереди, конференции, CDRи др.

Asterisk Настройка - Диалплан, Контексты, Екстеншены

Для понимания Asterisk очень важен - план набора (диалплан).
Диалплан направляет каждый звонок от его источника, с помощью различных приложений,
в пункт назначения. Все вызовы, будь-то голосовая почта, конференция, меню автосекретаря
или вызов телефона, определяются логикой и концепцией диалплана.
Русская документация мануал по dialplan Asterisk

* Asterisk Dialplan - extensions.conf

* Использование переменных в плане набора Asterisk

Команды или по другому приложения (applications) диалплана Asterisk

Функции диалплана Астериск

Asterisk Dialplan functions

Функции Asterisk используются в диалплане. Это не командыдиалпланаи не могут быть использованы прямо. Функции возвращают значение для дальнейшего использования в логике диалплана.

NAT

Конфигурационные файлы Asterisk

Большинство настроек Asterisk контролируются с помощью конфигурационных файлов, расположеных в директории /etc/asterisk. Синтаксис конфигурационных файлов был разработан для упрощенного взаимодействия с ПО (например FreePBX) или же редактирования вручную.

Каналы SIP, IAX2, DAHDI и H.323 и др.

Каналы в asterisk - это внешние или внутренние соединения, по которым производиться доставка вызовов в АТС Asterisk. Каналом может быть соединение с обычным телефонным аппаратом или с обычной телефонной линией, или он может быть виртуальным (логическим) каналом для совершения вызовов (как, например, совершение телефонных вызовов через Интернет). Сервер Asterisk не делает различий между классами каналов «FXO» и «FXS» (это значит, что он не делает различий между телефонными линиями и телефонными аппаратами). Каждый совершаемый или принимаемый вызов производиться через какой-либо определенный канал.

Шифрование в Asterisk

Очереди и Агенты Asterisk

В Asterisk поддерживается несколько очередей вызовов. Их определения находятся в файле Настройка очередей (queues.conf) Asterisk, имена очередей вызовов используются в качестве аргумента команды Queue в файле конфигурации плана набора extensions.conf. Агенты, которые обрабатывают вызовы, поступающие в очередь, описываются в файле /etc/asterisk/agents.conf.

Конференции

Asterisk позволяет организовать телеконференции с неограниченным числом пользователей.

Коды Asterisk - Абонентские функции и их свойства - feartures.conf

В файле features.conf назначаются пользовательские коды абонентских функций Asterisk и опции абонентских функций, такие как:
Переадресация вызова(transfer), перехват вызова (pickup), запись по требованию (record on demand), таймауты между набора и переадресации (digit timeout), паркинг (park) и др.

CDR

Детализированный отчет о звонках (CDR) backend для сохранения данных о входящих, исходящих и внутренних вызовах Asterisk. Полное описание на русском языке CDR, MySQL, ODBC etc.

logger

CLI - интерфейс командной строки Asterisk.

Командная строка является мощным инструментом для мониторинга и управления работой Asterisk PBX

Asterisk AMI

Asterisk manager Interface - интерфейс управления.

Asterisk ARI

Asterisk app: Queue

$
0
0

Asterisk app: Queue

Команда Asterisk постановки вызова в очередь

Описание

Приложение Asterisk Queue() вызывает указанную очередь, предварительно настроенную в queues.confили соответствующем модуле FreePBX
В дополнение к настройкам очереди используйте аргументы для определения дополнительных свойств очереди, таких как - продолжение выполнения диалплана по завершению вызова одной из сторон; перехода в другой контекст; назначения голосового приветствия; тайм-аут вызова и тд.

Приложение Queue() не отвечает на вызов автоматически (не открывает аудио канал).
Чтобы воспроизвести вызывающему абоненту голосовое приветствие и включить музыку на удержании (MOH) на время ожидания, перед ним должно быть выполнено какое-либо из приложений Asterisk app: Answer, Progressили Ringing.

Приложение возвращает переменную ${QUEUESTATUS}с одним из ниже перечисленных значений:

  • TIMEOUT
  • FULL
  • JOINEMPTY
  • LEAVEEMPTY
  • JOINUNAVAIL
  • LEAVEUNAVAIL
  • CONTINUE

Также приложение Queue() возвращает в переменную ${MEMBERINTERFACE}с номером агента принявшего вызов и другие переменные. Установите для этого параметр setinterfacevar=yesв настройках очереди queues.conf.

Синтаксис

Queue(queuename[,options[,URL[,announceoverride[,timeout[,AGI[,macro[,gosub[,rule[,position]]]]]]]]])

Аргументы

options

  • C: Установить статус вызова «answered elsewhere» даже если вызов отвергнут.
  • c: Продолжить выполнение диалплана, если вызываемыйпервым положил трубку.
  • d: режим модема с минимальной задержкой.
  • F([[context^]exten^]priority): Если вызывающийабонент повесил трубку первым, продолжить обработку вызова для вызываемогоагента в указанном контексте. Любые переменные определенные для данного контекста должны начинаться с одинарной или двойной нижней черты ('_'), чтобы наследоваться в контексте назначения.
  • F: Отличает от предыдущей опции тем, что не переходит в другой контекст, если вызывающийабонент повесил трубку, но продолжает выполнение текущего контекста со следующего приоритета.

Примечание: При использовании данной опции из Asterisk app Macroили Asterisk app: Gosubне будет возврата.(?)

  • h: Разрешить вызываемойстороне повесить трубку нажатием -'*'.
  • H: Разрешить вызывающейстороне повесить трубку нажатием -'*'.
  • n: Не предпринимать повторных попыток вызова агентов очереди по истечению таймаута и перейти к выполнению следующего приоритета в текущем контексте.
  • i: Игнорировать установки переадресации вызова, если таковые заданы на вызываемых екстеншенах агентов очереди.
  • I: Данная опция указывает Asterisk игнорировать любые запросы на обновление или перенаправление получаемые от вызываемых устройств.
  • r: Установить КПВ (гудки) вместо Музыки на Удержании для ожидающих в очереди. Периодические анонсы будут воспроизводится по прежнему, если заданы.
  • R: Установить КПВ (гудки) вместо Музыки на Удержании для ожидающих в очереди, если устройство действительно вызывается.
  • t: Разрешить вызываемомуабоненту переадресацию вызова при помощи кода, назначенного в features.conf.
  • T:Разрешить вызывающемуабоненту переадресацию вызова при помощи кода, назначенного в features.conf.
  • w: Разрешить вызываемомуабоненту записать разговор при помощи приложения Asterisk: Monitor.
  • W: Разрешить вызывающемуабоненту записать разговор при помощи приложения Asterisk: Monitor.
  • k: Разрешить вызываемойстороне припарковать вызов посылкой DTMFкода, назначенного в features.conf.
  • K: Разрешить вызывающейстороне припарковать вызов посылкой DTMFкода, назначенного в features.conf.
  • x: Разрешить вызываемомуабоненту записать разговор при помощи приложения Asterisk: MixMonitor
  • X: Разрешить вызывающемуабоненту записать разговор при помощи приложения Asterisk: MixMonitor

URL - Добавить значение Access-URL: в SIP Invite. Если вызываемое устройство поддерживает данную функцию, возможно вывести на дисплей телефона дополнительную информацию.

timeout - Завершить вызов приложения Queue() по истечению заданного в секундах таймаута. Данная опция превалирует над параметром <timeout> в настройках очереди queues.conf, если в настройках очереди задано timeoutpriority=app. Например, если timeout=30, но Queue(qname,,,,10), то вызов перейдет на следующий приоритет через 10 секунд.
Смотрите подробнее в queue timing options - queues.conf.

AGI - выполнить AGI скрипт, когда вызывающая при ответе оператора.

macro - Перейти в Macro-контекст при ответе оператора.

gosub - Перейти по Sub-маршруту при ответе оператора.

rule - Назначить специфические правила, вместо правил по умолчанию см. Asterisk queuerules.conf.

position - Попытаться поставить вызывающего абонента на указанную позицию в очереди. Например, если указано '1' на первую, а '3' на третью.

См. также

Команды диалплана Asterisk

Соединение двух FreePBX

$
0
0

Соединение двух FreePBX

Существуют две точки входа в Диалплан FreePBX.
Это контексты [from-trunk] и [from-internal]. Когда вызов направляется в контекст [from-trunk], он обрабатывается как DIDи рассматривается как внешний вызов. Если же вызов направляется в контекст [from-internal] он рассматривается как внутренний вызов от SIP, IAXили DAHDIекстеншена Вашей АТС. Далее будет рассмотрен пример объединения двух FreePBX с созданием общего Диалплана, так, чтобы для конечного пользователя две машины работали как одна.

FreePBX «офис1» выходит через '9' на внешние линии и имеет внутреннюю нумерацию от 110 до 149.

FreePBX «офис2» выходит через '0' на внешние линии и имеет внутреннюю нумерацию в диапазоне от 200 до 249.

Первым делом создадим IAXтранк между двумя сторонами.

Для FreePBX «офис1»

Trunks

Trunk Name

office2
PEER Details
deny=all              запрещает использование всех аудио кодеков.
allow=g729&alaw       разрешает использование кодеков g729 и g711 alaw.
type=friend           может совершать и принимать звонки
host=IP'office2'      может совершать и принимать звонки с хоста 'office2'.
qualify=yes           регулярно поддерживать связь с удаленной машиной.
context=from-internal обрабатывать входящие звонки из 'office2'в контексте [from-internal]

Для FreePBX «офис2» создается такой же транк. Только изменяем host на IP'office1'. Trunk Name

 office1
PEER Details
deny=all
allow=g729&alaw
type=friend
host=IP 'office1'
qualify=yes
context=from-internal

Вот и все с транками. Теперь создадим исходящую маршрутизацию.

Для FreePBX «офис1»

Outbound Routes

Route Name

tooffice2
Dial Patterns
2[0-4]X
Trunk Sequence
IAX/office2

Для FreePBX «офис»

Route Name

tooffice1
Dial Patterns
1[1-4]X
Trunk Sequence
IAX/office1

FreePBX

Asterisk:amd.conf

$
0
0

Asterisk:amd.conf

;
; Распознавание автоответчика на линии.
;

[general]
total_analysis_time = 5000	; Максимальное время отведенное на распознавание Человек или Автоответчик.

silence_threshold = 256  ;если средний уровень шума в канале менее заданного значения, считать тишиной.

; Greeting ;
initial_silence = 2500  ;максимальная длина паузы перед началом сообщения(в миллисекундах). Если превышен , то считается роботом.

after_greeting_silence = 800  ; Тишина после сообщения (в миллисекундах).  Если превышен , то считать человеком

greeting = 1500 ; Максимальная длина сообщения. Если превышена , то считать роботом.

; Word detection ;
min_word_length = 100 ; мин. длина слова

maximum_word_length = 5000 ;  макс. длина слова

between_words_silence = 50 ; минимальная пауза между словами, для определения следующего слова

maximum_number_of_words = 3  - если слов произнесено более трех, считать роботом

=============================================================================================== 

total_analysis_time = 5000	; Maximum time allowed for the algorithm to decide
				; on whether the audio represents a HUMAN, or a MACHINE
silence_threshold = 256		; If the average level of noise in a sample does not reach
				; this value, from a scale of 0 to 32767, then we will consider
				; it to be silence.

; Greeting ;
initial_silence = 2500		; Maximum silence duration before the greeting.
				; If exceeded, then the result is detection as a MACHINE.
after_greeting_silence = 800	; Silence after detecting a greeting.
				; If exceeded, then the result is detection as a HUMAN
greeting = 1500			; Maximum length of a greeting. If exceeded, then the
				; result is detection as a MACHINE.

; Word detection ;
min_word_length = 100		; Minimum duration of Voice to considered as a word
maximum_word_length = 5000  	; Maximum duration of a single Voice utterance allowed.
between_words_silence = 50	; Minimum duration of silence after a word to consider
				; the audio what follows as a new word

maximum_number_of_words = 2	; Maximum number of words in the greeting
				; If exceeded, then the result is detection as a MACHINE

Файлы конфигурации Asterisk


Файлы конфигурации Asterisk

$
0
0

Файлы конфигурации Asterisk

Asterisk: agents.conf

$
0
0

Asterisk: agents.conf

Агенты в Asterisk

ACD распределяет входящие вызовы, поступающие в очереди, по агентам или интерфейсам. Агенты описываются в файле конфигурации queues.conf: Глобальные настройки

[agents]

; Определение времени автоматического отключения агента, если такая
; функция необходима. Т.е. этим параметром мы определяем, как долго
; будет звонить телефон у агента (в секундах) без ответа на входящий вызов,
; до того, как этот агент будет автоматически исключен из участников, которые
; обрабатывают очередь вызовов. Заметьте, что если это значение
; больше, чем значение таймаута Вашей очереди, то для агентов не будет
; работать система автоматического выхода!

autologoff=15
;
; Следующим параметром мы определяем, необходимо ли от агента
; подтверждение, нажатием '#', когда он входит в систему, через
; agentcallpark. По умолчанию - "yes".
;
;ackcall=yes
;
; Параметр wrapuptime - это значение минимального промежутка времени,
; с момента, когда звонящий абонент отключился от линии и до того,
; как агент может принять новый вызов из очереди.
; Значение в миллисекундах.
;
;wrapuptime=5000
;
; Определение фоновой музыки ожидания по умолчанию для агентов.
; musiconhold => music_class
;
musiconhold => default
;
; Опциональный звуковой файл, который будет проигрываться для
; подключенных агентов.
;
;custom_beep=beep
;
; Определение членства в группах для агентов. (may change in mid-file just)
;
;group=3
;group=1,2
group=1

Параметры записи общения агентов с клиентами.

Эта секция посвящена записи вызовов, поступающих агентам. Эти определения являются глобальными для всех агентов в канале chan_agen

; Включить запись всех вызовов, которые обрабатывают агенты.
; Выключено по умолчанию.
recordagentcalls=yes
;
; Формат, который будет использоваться для записи звонков (wav, gsm, wav49)
; По умолчанию - "wav".
;recordformat=gsm
;
; Включать в CDR записи пользовательское поле с именем файла, который
; содержит запись этого вызова.
; По умолчанию - выключено.
;createlink=yes
;
; Текст, который будет добавлен к имени файла, созданной записи в CDR.
; Позволяет формировать url ссылки.
; urlprefix=http://host.domain/calls/
;
; Необязательное имя директории, где будут сохраняться файлы записи разговоров.
; По умолчанию:
; /var/spool/asterisk/monitor
;savecallsin=/var/calls

Определения для агентов

Последняя секция этого файла содержит определения каждого из агентов.

Синтаксис:

agent => agentid,agentpassword,name
agent => 3000,1234,Santiago Ruano Rincon
agent => 4002,1234,Maria Lucia Mu
Файлы конфигурации Asterisk

Asterisk: Установка и настройка

/etc/asterisk/alsa.conf

$
0
0

/etc/asterisk/alsa.conf

1. make sure that “chan_oss” and “chan_alsa” are compiled while installing asterisk.

2. ensure that “alsa.conf” exists in /etc/asterisk/alsa.conf.

I’m simply using the alsa.conf created from the samples file.

In case, alsa.conf doesn’t exist, you’ll get the following error, while loading chan_alsa.so.

*CLI> module load chan_alsa.so
Unable to load module chan_alsa.so
Command 'module load chan_alsa.so ' failed.
3. for some reason module “chan_alsa” is not loaded automatically, after restart.
*CLI> module load chan_alsa.so
Loaded chan_alsa.so
*CLI> module show like alsa
Module                         Description                              Use Count
chan_alsa.so                   ALSA Console Channel Driver              0
1 modules loaded
and now you should have the console command.

;
; Open Sound System Console Driver Configuration File
;
[general]
;
; Automatically answer incoming calls on the console?  Choose yes if
; for example you want to use this as an intercom.
;
autoanswer=yes
;
; Default context (is overridden with @context syntax)
;
context=local
;
; Default extension to call
;
extension=s
;
; Default language
;
;language=en
;
; Default Music on Hold class to use when this channel is placed on hold in
; the case that the music class is not set on the channel with
; Set(CHANNEL(musicclass)=whatever) in the dialplan and the peer channel
; putting this one on hold did not suggest a class to use.
;
;mohinterpret=default
;
; Silence suppression can be enabled when sound is over a certain threshold.
; The value for the threshold should probably be between 500 and 2000 or so,
; but your mileage may vary.  Use the echo test to evaluate the best setting.
;silencesuppression = yes
;silencethreshold = 1000
;
; To set which ALSA device to use, change this parameter
;input_device=hw:0,0
;output_device=hw:0,0

;
; Default mute state (can also be toggled via CLI)
;mute=true

;
; If enabled, no audio capture device will be opened.  This is useful on
; systems where there will be no return audio path, such as overhead pagers.
;noaudiocapture=true

;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
; jbenable = yes              ; Enables the use of a jitterbuffer on the receiving side of an
                              ; ALSA channel. Defaults to "no". An enabled jitterbuffer will
                              ; be used only if the sending side can create and the receiving
                              ; side can not accept jitter. The ALSA channel can't accept jitter,
                              ; thus an enabled jitterbuffer on the receive ALSA side will always
                              ; be used if the sending side can create jitter.

; jbmaxsize = 200             ; Max length of the jitterbuffer in milliseconds.

; jbresyncthreshold = 1000    ; Jump in the frame timestamps over which the jitterbuffer is
                              ; resynchronized. Useful to improve the quality of the voice, with
                              ; big jumps in/broken timestamps, usually sent from exotic devices
                              ; and programs. Defaults to 1000.

; jbimpl = fixed              ; Jitterbuffer implementation, used on the receiving side of a SIP
                              ; channel. Two implementations are currently available - "fixed"
                              ; (with size always equals to jbmax-size) and "adaptive" (with
                              ; variable size, actually the new jb of IAX2). Defaults to fixed.

; jbtargetextra = 40          ; This option only affects the jb when 'jbimpl = adaptive' is set.
                              ; The option represents the number of milliseconds by which the new
                              ; jitter buffer will pad its size. the default is 40, so without
                              ; modification, the new jitter buffer will set its size to the jitter
                              ; value plus 40 milliseconds. increasing this value may help if your
                              ; network normally has low jitter, but occasionally has spikes.

; jblog = no                  ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------

Файлы конфигурации Asterisk

Asterisk: app_mysql.conf

$
0
0

Asterisk: app_mysql.conf

Конфигурационный файл для аддона MySQL

[general]

Nullvalue управляет тем, как NULL значения возвращаются из базы данных. В предыдущих версиях, специальное значение NULL возвращалось как «NULL» строка Теперь возможно настраивать поведение глобально.

  • nullstring - строка "NULL"
  • emptystring - пустая строка " "
  • null - переменная не задана

Предупреждение: установка 'nullvalue=null' может вызывать непредсказуемое поведение,
особенно при использование AEL и function 'LOCAL'переменных.

 nullvalue = nullstring

Если установлено, autoclear=yes все соединения и состояния будут закрыты когда канал разъединится. В большинстве случаев, это хорошее поведение, но плохо, если MySQL соединение используется сразу несколькими каналами связи. Поэтому значение по умолчанию - autoclear=no

 autoclear=yes

Файлы конфигурации Asterisk

Asterisk:app_skel.conf

$
0
0

Asterisk:app_skel.conf

Конфигурационный файл приложения Asterisk app_skel - основа для создания новых приложений для Asterisk.

[general]
games=3
cheat=no

[sounds]
prompt=please-enter-your,number,queue-less-than
wrong_guess=vm-pls-try-again
right_guess=auth-thankyou
too_high=high
too_low=low
lose=vm-goodbye

[easy]
max_number=10
max_guesses=4

[medium]
max_number=100
max_guesses=6

[hard]
max_number=1000
max_guesses=7

[nightmare]
max_number=1000
max_guesses=1

Файлы конфигурации Asterisk

http://www.scytheofwise.com/writing-asterisk-module/

Viewing all 1135 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>