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

Настроим 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/


asterisk.conf

$
0
0

asterisk.conf

/etc/asterisk/asterisk.conf

В файле конфигурации asterisk.conf Вы определяете следующее:

  • Местоположение, права доступа и владельца сокета, которые используется для подключения удаленной консоли управления сервером.
  • Местоположение различных директорий, используемых сервером Asterisk для определения местоположения файлов конфигурации, библиотек, скриптов и место, где будут создаваться лог фалы.
  • Параметры командной строки запуска сервера, используемые по умолчанию.

Пример конфигурации.

Директории

Директории используемые в Asterisk.

directories

[directories](!)
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdbdir => /var/lib/asterisk
astkeydir => /var/lib/asterisk
astdatadir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
astsbindir => /usr/sbin

astetcdir => /etc/asterisk

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

ls -1 /etc/asterisk

astmoddir => /usr/lib(64)/asterisk/modules

Модули (applications, codec, functions)

modules

astvarlibdir => /var/lib/asterisk

Скрипты, документация, звуковые файлы, изображения, лицензии,

ls -1 /var/lib/asterisk/
ls -1 /var/lib/asterisk/bin

astspooldir => /var/spool/asterisk

Директории для файлов создаваемых Asterisk в процессе работы. Например: Записи разговоров, принятые факсы, голосовая почта, call-файлы итд.

 ls -1  /var/spool/asterisk/
/fax
/meetme
/monitor
/outgoing
/sysadmin
/system
/tmp
/voicemail

astrundir => /var/run/asterisk

Место куда Asterisk записывает UNIX control socket файл (asterisk.ctl) и файл ID процесса (asterisk.pid)

ls -1  /var/run/asterisk/
asterisk.ctl
asterisk.pid

astlogdir => /var/log/asterisk

Файлы логов Asterisk. Настройки вывода логов производятся в файле /etc/asterisk/logger.conf

 ls -1  /var/log/asterisk
/cdr-csv ;директории CDR файлов
/cdr-custom

full
queue_log

а также могут быть:

 fail2ban   ; 
 freepbx_debug 
 freepbx.log

astsbindir => /usr/sbin

Исполняемые файлы Asterisk.

 ls /usr/sbin | grep asterisk
 asterisk
 rasterisk
 safe_asterisk

Раздел (секция) [options]

live_dangerously

Включить выполнение «опасных» функций из внешних источников (AMI, AGI и тд)
Некоторые функции и приложения (например, такие как SHELL)
опасны тем, что могут предоставлять дополнительные привилегии. По умолчанию = no.

Параметр Значение по умолчанию / ПримерОписание
verbose 0 Устанавливает уровень детализации (verbose) консоли и лога . Это значние также может быть установлено в консоли коммандой 'core set verbose <0-9> или off.
debug 0 Залает значение уровня отладки (debug). по умолчанию - 0
alwaysfork no всегда в фоновом режиме, даже с опциями -v или -d
nofork no Отключить фоновое выполнение.
quiet no Работать тихо (-q). Уменьшает выхлоп консоли.
timestamp no Временные отметки в выводе консоли(-T) CLI verbose output
execincludes no Разрешить #EXEC записи в файлах конфигурации
console no Всегда запускать в консольном режиме, с приглашением CLI.
highpriority no Запускать Asterisk c наивысшим приоритетом в режиме реального времени.
initcrypto noЗагружать ключи из ../astkeydir при старте.
nocolor no Цветная консоль.
dontwarn no Отключить предупреждения (warning messages).
dumpcore no Делать дамп (содержимое рабочей памяти процесса, ядра)при падении
languageprefix yes Как находится путь к звуковому файлу с языковым префиксом. По умолчанию, 'yes' - перфикс языка в пути к файлу перед подкаталогов, например ../ru/digits/1.gsm. Если 'no' то префикс после имени каталога, например: (digits/ru/1.gsm).
internal_timing yes Включить внутренний источник синхронизации для аудио
systemname not set Уникальное имя Asterisk. Используется как часть UNIQUEID в CDR. По умолчанию не задано
autosystemname no Автоматом задавать 'systemname' на основании имени хоста
maxcalls not set Максимальное кол-во одновременных входящих вызовов. По умолчанию не ограничено
maxload not set/0.9 Максимальная нагрузка на процессор, при которой Asterisk прекратит новые соединения.
minmemfree not set /256
cache_record_files yes / noКэшировать записи
record_cache_dir <dir> директория кэша записей
transmit_silence no Транслировать тишину, если нет другог источника звука
transcode_via_sln yes перекодировать кодеки через SLINEAR
runuser asterisk Владелец Asterisk.
rungroup asterisk Группа Asterisk.
documentation_language en / es / ru Язык документации
hideconnect no Не показывать сообщения о подключении удаленных консолей
asterisk.conf

Asterisk: ari.conf

$
0
0

Asterisk: ari.conf

[general]
enabled = yes       ; Включить поддержку Asterisk REST Interface.
;pretty = no        ; Форматировать ответы ARI в удобный для чтения вид.
;allowed_origins =  ; Разделенный запятыми список источников (хостов) обращающихся к ARI. Можно задать  * , чтобы разрешить всем.
;auth_realm =       ;  Облать для аутентификацииRealm to use for authentication. По умолчанию собственно ARI.
;
; Тайм-аут записи по умолчанию для WebSockets. Изменение этого значения может потребоваться
; для соединений, где Asterisk должен записать значительный объем данных, а
; клиенты медленно обрабатывают полученную информацию. Значение в задано
; миллисекундах и по умолчанию задано 100 мс.
;websocket_write_timeout = 100

;[username]
;type = user        ; определяет конфигурацию ка кпользователькую
;read_only = no     ; Если задано yes, авторизованному пользователю будут разрешены запросы только для чтения.
;
;password =         ; пароль, зашифрованный или текстовый.
;
; Пароль может быть просто текстовым или шифрованным. Если установлено crypt, 
; используется функция шифрования linux  - crypt(3).
;
; Если задано plain, то в качестве пароля можно использовать простой текст.
;
;password_format = plain

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

ARI - Asterisk REST Interface

Приступая к работе с ARI

ARI Nodejs Bridge-dial

Asterisk RESTful Interface (ARI) Swagger-UI

Ari Node Confbridge

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

Asterisk: iax.conf

$
0
0

Asterisk: iax.conf

Inter-Asterisk eXchange используется как для соединения серверов Asterisk, так и для подключения клиентов.

Файл iax.conf начинается с общего раздела в котором определены глобальные настройки севера. Также там можно настроить регистрацию на другом сервере Asterisk для совместного использования плана набора (диалплана).

Следующие опции используются в iax.conf.

Опции [general] для глобальных настроек

port: порт для прослушивания входящих подключений. Не должен использоваться другими службами.
bindaddr: Если в системе используется несколько IP адресов, эта опция привязывает Asterisk к одному интерфейсу.
amaflags: устанавливает AMA (Automated Message Accounting) флаги для Call Detail Records. Также могут быть установлены для каждого абонента. Имеет следующие значения:

billing: Пометить для биллинга
documentation: пометить для документации.
omit: не делать запись.
default: использовать значение по умолчанию.
accountcode: Устанавливает код счета по умолчанию. Также может быть установлен индивидуально для каждого клиента (канала).
accountcode = wmeadows
amaflags = documentation
bandwidth: эта опция используется для управления использованием кодеков, но не методом запрещения того или иного кодека, а ограничением пропускной способности. Принимает значения 'low' и 'high'.
disallow - запрещает использование конкретных кодеков. Принимает название кодека или 'all'.
allow - Разрешает использование конкретного кодека.
bandwidth=low
disallow=all
allow=gsm
jitterbuffer - включает или выключает использование джиттер-буфера. Буфер используется для настройки качества звука, балансируя между задержкой и количеством пропущенных пакетов. (Если задержка слишком велика, часть пакетов может быть удалена, что приведет к проглатыванию звуков. Если задержка слишком велика, но пакеты не будут удалены, возникнет сильное эхо.):!:Для уверенного прохождения факсов пакеты не должны удаляться.
dropcount: устанавливает максимальное количество пакетов, которые могут быть отброшены, чтобы уменьшить время отклика.
maxjitterbuffer: Устанавливает максимальный размер jitterbuffer.
maxexcessjitterbuffer: Устанавливает максимальный размер джиттера, при превышении которого, буфер будет постепенно уменьшаться для улучшения отклика.
register: используется для регистрации на другом сервере Asterisk.Полезно если локальный сервер имеет динамический IP и должен указать удаленному серверу, где его искать.
register => username:secret@server
Поле 'secret' не является обязательным. Если используется RSA шифрование пошлите ключ RSA в следующем формате:
register => username:[key]@server
tos: установите требуемые биты, чтобы улучшить маршрутизацию пакетов. Возможны следующие значения:
lowdelay: свести к минимуму задержки 
troughput: максимальная пропускная способность 
reliability: максимальная надежность 
mincost: использование самой низкой стоимости маршрута 
None: не использовать маршрутизацию флагов 

Asterisk: iax.conf

Настройки каждого канала начинаются с имени заключенного в квадратные скобки. Далее следуют опции и их значения:

type: Устанавливает тип канала. Возможны следующие типы:

user: пользователь может осуществлять звонки.
peer: принимает звонки.
friend: осуществляет вызовы через Asterisk.Если вы сомневаетесь ставьте friend.
context: Определяет правила набора и приема вызовов для канала. Перекрывает значение по умолчанию в секции general.
CallerID: Устанавливает Caller ID, который будет использоваться для этого канала. Этот CallerID будет использоваться внутри системы, и будет послан в ТфОП, если линия используется как транк. Если оставить пустым, будет использован полученный Caller ID.
callerid => “Katia” <812 321-6111>

Auth: Устанавливает тип аутентификации. IAXподдерживает три метода аутентификации. Первый (и наименее безопасный) является открытым текстом. пароли передаются в незашифрованном виде по сети. Второй MD5, который использует MD5 Challenge алгоритм ответа. Обе машины будут иметь доступ к записаным открытым текстом паролям, но они будут зашифрованы с помощью MD5 при прохождении через сеть. Самым безопасным вариантом является использование RSA открытый / закрытый ключ шифрования. Открытый / закрытый пары ключей могут быть сгенерированы помощью программы astgenkey. Публичный ключ необходимо вручную передать на сервер,где он хранится в /var/lib/asterisk/keys/name.pub. Закрытые ключи хранятся там же, как name.key.

inkeys: публичные ключи используемые для аутентификации входящих запросов клиента или регистрации.
outkey: закрытый ключ исходящей аутентификации для шифрования связи этого клиента.

auth=md5
secret=password
auth=rsa
inkeys=theirkey
outkey=mykey

permit: хосты с которых разрешено регистрироваться. Может иметь значение host или host/netmask
deny: хосты с которых запрещена регистрация.

deny = 0.0.0.0/0.0.0.0
permit=192.168.0.1/255.255.255.0
permit=216.207.245.45
host: ожидаемый IP адрес с которого будет произведена регистрация. Указывается IP или 'dynamic'.
defaultip: IP-адрес по умолчанию для клиентов IAX. Если Asterisk получает вызов для динамического и не зарегистрированого IAXклиента, указывает на предположительный IP адрес клиента.
host=dynamic
defaultip=192.168.0.1

accountcode: станавливает код счета только для этого канала. Это используется при вызове регистрации услуги.
qualify: проверяет доступен ли клиент для вызовов. Аргумент устанавливает кол-во миллисекунд прежде чем будет установлен статус «недоступен» (unavailable)

qualify=300
mailbox: определяет голосовой почтовый ящик для данного клиента
mailbox=1234@device
.

trunk: включает и выключает режим соединительной линии для канала.

IAX2 channels

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

Asterisk:calendar.conf

$
0
0

Asterisk:calendar.conf

Конфигурационный файл модуля res_calendar.
APIслужбы календаря Asterisk, это интерфейс для интеграции с внешними серверами календарей. Позволяет читать и записывать события сервера и выполнять на основании полученной информации запланированные действия через диалплан Asterisk.

Поддерживаются следующие сервера календарей:

Calendar Server Support Module Name
iCalenda res_calendar_icalendar.so
CalDAV res_calender_caldav.so
Microsoft Exchange Server res_calendar_exchange.so
Microsoft Exchange Web Services res_calendar_ews.so

Приступая к работе убедитесь, что нужный модуль скомпилирован в Asterisk:

*CLI> module show like calendar
Module                         Description                              Use Count  Status      Support Level
res_calendar.so                Asterisk Calendar integration            0          Not Running          core
res_calendar_ews.so            Asterisk MS Exchange Web Service Calenda 0          Not Running          core
В приведенном примере, мы видим, что только один из 4-х доступных модулей загружен. В этом случае придется скомпилировать недостающие модули, а также установить их зависимости, если требуется:
./configure
make menuselect
              XXX res_calendar_caldav
              [*] res_calendar_ews
              XXX res_calendar_exchange
              XXX res_calendar_icalendar

         Asterisk CalDAV Calendar Integration
        Depends on: neon(E), ical(E), libxml2(E)
В данном примере, под Centos 7 для компиляции модуля res_calendar_caldav не хватало пакета libical (libical-devel).
s*CLI> module show like calendar
Module                         Description                              Use Count  Status      Support Level
res_calendar.so                Asterisk Calendar integration            0          Running          core
res_calendar_caldav.so         Asterisk CalDAV Calendar Integration     0          Running          core
res_calendar_ews.so            Asterisk MS Exchange Web Service Calenda 0          Running          core
res_calendar_icalendar.so      Asterisk iCalendar .ics file integration 0          Running          core
4 modules loaded
Далее можно приступать к конфигурации службы в файле /etc/asterisk/calendar.conf.
Рассмотрим конфигурацию на примере календаря google.
[calendar_google]
type = caldav            ;  тип календаря, поддерживаются: ical, caldav, exchange, or ews
url = https://www.google.com/calendar/dav/username@gmail.com/events/  ; GMail календарь (слэш в конце обязателен)
user = jdoe@gmail.com    ; имя пользователя
secret = mysecret        ; пароль
refresh = 15             ; обновление каждые 15 минут
timeframe = 60           ; за какой период календаря учитывать обновление (в минутах)
                         ; should always be >= refresh


autoreminder = 10        ; Повторить оповещение через заданный период (в минутах), если было занято.

channel = PJSIP/1234     ; Вызываемый канал (номер)
context = default        ; Контекст для ответа 
extension = s            ; расширение в контексте для ответа

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

app = Playback          ; Приложение выполняемое по ответу (вместо context/extension)
appdata = tt-weasels    ; данные (аргумент) приложения

waittime = 30            ; Время ожидания ответа

;[calendar1]
;type = ical              ;  type of calendar--currently supported: ical, caldav, exchange, or ews
;url = https://example.com/home/jdoe/Calendar/   ; URL to shared calendar (Zimbra example)
;user = jdoe              ; web username
;secret = supersecret     ; web password
;refresh = 15             ; refresh calendar every n minutes
;timeframe = 60           ; number of minutes of calendar data to pull for each refresh period
;                         ; should always be >= refresh
;
; You can set up res_calendar to execute a call upon an upcoming busy status
; The following fields are available from the ${CALENDAR_EVENT(<field>)} dialplan function:
;
; summary     : The VEVENT Summary property or Exchange subject
; description : The text description of the vent
; organizer   : The organizer of the event
; location    : The location field of the event
; calendar    : The name of the calendar tied to the event
; uid         : The unique ID for this event
; start       : Start time of the event
; end         : The end time of the event
; busystate   : 0=FREE, 1=TENTATIVE, 2=BUSY
;
;autoreminder = 10        ; Override event-defined reminder before each busy status (in mins)
;
;channel = SIP/60001      ; Channel to dial
;context = default        ; Context to connect to on answer
;extension = 123          ; Extension to connect to on answer
;
; or
;
;app = Playback          ; Application to execute on answer (instead of context/extension)
;appdata = tt-weasels    ; Data part of application to execute on answer
;
;waittime = 30            ; How long to wait for an answer, defaults to 30 seconds
;
; Channel variables can be set on the notification channel. The format is
; setvar=name=value. Variable subsitution is done on the value to allow the use of dialplan
; functions like CALENDAR_EVENT. The variables are set in order, so one can use the value
; of earlier variables in the definition of later ones.
;
;setvar = CALLERID(name)=${CALENDAR_EVENT(summary)}

;[calendar2]
; Note: Support for Exchange Server 2003 
;
;type = exchange          ;  type of calendar--currently supported: ical, caldav, exchange, or ews
;url = https://example.com/exchange/jdoe   ; URL to MS Exchange OWA for user (usually includes exchange/user)
;user = jdoe              ; Exchange username
;secret = mysecret        ; Exchange password
;refresh = 15             ; refresh calendar every n minutes
;timeframe = 60           ; number of minutes of calendar data to pull for each refresh period
;                         ; should always be >= refresh
;
; You can set up res_calendar to execute a call upon an upcoming busy status
;autoreminder = 10        ; Override event-defined reminder before each busy status (in mins)
;
;channel = SIP/1234       ; Channel to dial
;context = default        ; Context to connect to on answer
;extension = 1234         ; Extension to connect to on answer
;
; or
;
;[calendar3]
; Note: Support for Exchange Server 2007+
;
;type = ews               ; type of calendar--currently supported: ical, caldav, exchange, or ews
;url = https://example.com/ews/Exchange.asmx ; URL to MS Exchange EWS
;user = jdoe              ; Exchange username
;secret = mysecret        ; Exchange password
;refresh = 15             ; refresh calendar every n minutes
;timeframe = 60           ; number of minutes of calendar data to pull for each refresh period
;                         ; should always be >= refresh
;
; You can set up res_calendar to execute a call upon an upcoming busy status
;autoreminder = 10        ; Override event-defined reminder before each busy status (in mins)
;
;channel = SIP/1234       ; Channel to dial
;context = default        ; Context to connect to on answer
;extension = 1234         ; Extension to connect to on answer
;
; or
;
;app = Playback          ; Application to execute on answer (instead of context/extension)
;appdata = tt-weasels    ; Data part of application to execute on answer
;
;waittime = 30            ; How long to wait for an answer, defaults to 30 seconds

;[calendar4]
;type = caldav            ;  type of calendar--currently supported: ical, caldav, exchange, or ews
;url = https://www.google.com/calendar/dav/username@gmail.com/events/  ; Main GMail calendar (the trailing slash is significant!)
;user = jdoe@gmail.com    ; username
;secret = mysecret        ; password
;refresh = 15             ; refresh calendar every n minutes
;timeframe = 60           ; number of minutes of calendar data to pull for each refresh period
;                         ; should always be >= refresh
;
; You can set up res_calendar to execute a call upon an upcoming busy status
;autoreminder = 10        ; Override event-defined reminder before each busy status (in mins)
;
;channel = SIP/1234       ; Channel to dial
;context = default        ; Context to connect to on answer
;extension = 1234         ; Extension to connect to on answer
;
; or
;
;app = Playback          ; Application to execute on answer (instead of context/extension)
;appdata = tt-weasels    ; Data part of application to execute on answer
;
;waittime = 30            ; How long to wait for an answer, defaults to 30 seconds

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

Asterisk: ccss.conf

$
0
0

Asterisk: ccss.conf

;
; --- Call Completion Supplementary Services ---
;
; For more information about CCSS, see the CCSS user documentation
; https://wiki.asterisk.org/wiki/display/AST/Call+Completion+Supplementary+Services+(CCSS)
;

[general]
; The cc_max_requests option is a global limit on the number of
; CC requests that may be in the Asterisk system at any time.
;
;cc_max_requests = 20
;
; The cc_STATE_devstate variables listed below can be used to change the
; default mapping of the internal state machine tracking the state of
; call completion to an Asterisk Device State value. The acceptable values
; that can be provided are as follows, with a description of what the
; equivalent device BLF that this maps to:
;
;	UNKNOWN      ; Device is valid but channel didn't know state
;	NOT_INUSE    ; Device is not used
;	INUSE        ; Device is in use
;	BUSY         ; Device is busy
;	INVALID      ; Device is invalid
;	UNAVAILABLE  ; Device is unavailable
;	RINGING      ; Device is ringing
;	RINGINUSE    ; Device is ringing *and* in use
;	ONHOLD       ; Device is on hold
;
; These states are used to generate DEVICE_STATE information that can be
; included with Asterisk hints for phones to subscribe to the state information
; or dialplan to check the state using the EXTENSION_STATE() function or
; the DEVICE_STATE() function.
;
; The states are in the format of: "ccss:TECH/ID" so an example of device
; SIP/3000 making a CallCompletionRequest() could be checked  by looking at
; DEVICE_STATE(ccss:SIP/3000) or an Asterisk Hint could be generated such as
;
; [hint-context]
; exten => *843000,hint,ccss:SIP/3000
;
; and then accessed with EXTENSION_STATE(*843000@hint-context)
; or subscribed to with a BLF button on a phone.
;
; The available state mapping and default values are:
;
; cc_available_devstate = NOT_INUSE
; cc_offered_devstate = NOT_INUSE
; cc_caller_requested_devstate = NOT_INUSE
; cc_active_devstate = INUSE
; cc_callee_ready_devstate = INUSE
; cc_caller_busy_devstate = ONHOLD
; cc_recalling_devstate = RINGING
; cc_complete_devstate = NOT_INUSE
; cc_failed_devstate = NOT_INUSE

;
;============================================
;           PLEASE READ THIS!!!
; The options described below should NOT be
; set in this file. Rather, they should be
; set per-device in a channel driver
; configuration file.
;           PLEASE READ THIS!!!
;===========================================
;
; --------------------------------------------------------------------
;                                Timers
; --------------------------------------------------------------------
;There are three configurable timers for all types of CC: the
;cc_offer_timer, the ccbs_available_timer, and the ccnr_available_timer.
;In addition, when using a generic agent, there is a fourth timer,
;the cc_recall_timer. All timers are configured in seconds, and the
;values shown below are the defaults.
;
;When a caller is offered CCBS or CCNR, the cc_offer_timer will
;be started. If the caller does not request CC before the
;cc_offer_timer expires, then the caller will be unable to request
;CC for this call.
;
;cc_offer_timer = 20
;
;Once a caller has requested CC, then either the ccbs_available_timer
;or the ccnr_available_timer will run, depending on the service
;requested. The reason why there are two separate timers for CCBS
;and CCNR is that it is reasonable to want to have a shorter timeout
;configured for CCBS than for CCNR. If the available timer expires
;before the called party becomes available, then the CC attempt
;will have failed and monitoring of the called party will stop.
;
;ccbs_available_timer = 4800
;ccnr_available_timer = 7200
;
; When using a generic agent, the original caller is called back
; when one of the original called parties becomes available. The
; cc_recall_timer tells Asterisk how long it should let the original
; caller's phone ring before giving up. Please note that this parameter
; only affects operation when using a generic agent.
;
;cc_recall_timer = 20
; --------------------------------------------------------------------
;                                Policies
; --------------------------------------------------------------------
; Policy settings tell Asterisk how to behave and what sort of
; resources to allocate in order to facilitate CC. There are two
; settings to control the actions Asterisk will take.
;
; The cc_agent_policy describes the behavior that Asterisk will
; take when communicating with the caller during CC. There are
; three possible options.
;
;never:   Never offer CC to the caller. Setting the cc_agent_policy
;         to this value is the way to disable CC for a call.
;
;generic: A generic CC agent is one which uses no protocol-specific
;         mechanisms to offer CC to the caller. Instead, the caller
;         requests CC using a dialplan function. Due to internal
;         restrictions, you should only use a generic CC agent on
;         phones (i.e. not "trunks"). If you are using phones which
;         do not support a protocol-specific method of using CC, then
;         generic CC agents are what you should use.
;
;native:  A native CC agent is one which uses protocol-specific
;         signaling to offer CC to the caller and accept CC requests
;         from the caller. The supported protocols for native CC
;         agents are SIP, ISDN ETSI PTP, ISDN ETSI PTMP, and Q.SIG
;cc_agent_policy=never
;
; The cc_monitor_policy describes the behavior that Asterisk will
; take when communicating with the called party during CC. There
; are four possible options.
;
;never:   Analogous to the cc_agent_policy setting. We will never
;         attempt to request CC services on this interface.
;
;generic: Analogous to the cc_agent_policy setting. We will monitor
;         the called party's progress using protocol-agnostic
;         capabilities. Like with generic CC agents, generic CC
;         monitors should only be used for phones.
;
;native:  Analogous to the cc_agent_policy setting. We will use
;         protocol-specific methods to request CC from this interface
;         and to monitor the interface for availability.
;
;always:  If an interface is set to "always," then we will accept
;         protocol-specific CC offers from the caller and use
;         a native CC monitor for the remainder of the CC transaction.
;         However, if the interface does not offer protocol-specific
;         CC, then we will fall back to using a generic CC monitor
;         instead. This is a good setting to use for phones for which
;         you do not know if they support protocol-specific CC
;         methodologies.
;cc_monitor_policy=never
;
;
; --------------------------------------------------------------------
;                              Limits
; --------------------------------------------------------------------
;
; The use of CC requires Asterisk to potentially use more memory than
; some administrators would like. As such, it is a good idea to limit
; the number of CC requests that can be in the system at a given time.
; The values shown below are the defaults.
;
; The cc_max_agents setting limits the number of outstanding CC
; requests a caller may have at any given time. Please note that due
; to implementation restrictions, this setting is ignored when using
; generic CC agents. Generic CC agents may only have one outstanding
; CC request.
;
;cc_max_agents = 5
;
; The cc_max_monitors setting limits the number of outstanding CC
; requests can be made to a specific interface at a given time.
;
;cc_max_monitors = 5
;
; --------------------------------------------------------------------
;                            Other
; --------------------------------------------------------------------
;
; When using a generic CC agent, the caller who requested CC will be
; called back when a called party becomes available. When the caller
; answers his phone, the administrator may opt to have a macro run.
; What this macro does is up to the administrator. By default there
; is no callback macro configured.
;
;cc_callback_macro=
;
; Alternatively, the administrator may run a subroutine. By default
; there is no callback subroutine configured.  The subroutine should
; be specified in the format: [[context,]exten,]priority
;
;cc_callback_sub=
;
; When using an ISDN phone and a generic CC agent, Asterisk is unable
; to determine the dialstring that should be used when calling back
; the original caller. Furthermore, if you desire to use any dialstring-
; specific options, such as distinctive ring, you must set this
; configuration option. For non-ISDN phones, it is not necessary to
; set this, since Asterisk can determine the dialstring to use since
; it is identical to the name of the calling device. By default, there
; is no cc_agent_dialstring set.
;
;cc_agent_dialstring=

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

Viewing all 1041 articles
Browse latest View live