====== Описание конфигурационный файлов ======
[[astpanel:dialplan_miko_ajam|Обратно к основной инструкции...]]
===== AJAM / AMI =====
Эти настройки крайне важны. Необходимо настроить использование API Asterisk. \\
Подробное описание доступно на [[doc:1cajam:astcastomize_v6|странице]].
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
allowmultiplelogin = yes
webenabled = yes
httptimeout = 60
[1cami] ; имя пользователя AMI
secret = PASSWORD1cami ; пароль пользователя AMI
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
read = call,cdr,user
write = call,originate,reporting
;;; Дополнительные опции для ASTERISK 11+ ;;; Начало ;;;;
eventfilter=!Event: Newexten
eventfilter=!Event: DeviceStateChange
eventfilter=!Event: NewConnectedLine
eventfilter=!Event: Newchannel
eventfilter=!Event: SoftHangupRequest
eventfilter=!Event: HangupRequest
eventfilter=!Event: BridgeDestroy
eventfilter=!Event: MusicOnHoldStop
eventfilter=!Event: NewCallerid
eventfilter=!Event: LocalBridge
;;; Дополнительные опции для ASTERISK 11+ ;;; Конец ;;;;
[getvar1c] ; дополнительная "локальная" учетная запись
; Она используется в скрипте "/var/www/admin/1c/getvar/index.php"
; Если меняете логин и пароль - необходимо сменить их и в скрипте
secret = dfsdfsdjfSSS33fksd
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = call,cdr,user
write = call,originate,reporting
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
===== Переадресации =====
Следующие опции обязательно должны быть назначены. Значения могут быть произвольными.
[general]
; Необходимо настроить парковку:
parkext => 700
parkpos => 701-720
context => parkedcalls
parkinghints = yes
[featuremap]
blindxfer => ## ; Это лишь пример значения. Можно установить свое.
disconnect => *0 ; Это лишь пример значения. Можно установить свое.
; ОБЯЗАТЕЛЬНО включите опцию "atxfer"
atxfer => ** ; Это лишь пример значения. Можно установить свое.
Обратите внимание!!! Пользователей необходимо отучить использовать кнопку **Transfer** (SIP Transfer) на телефонном аппарате. Asterisk плохо работает с таким звонками, в истории такие вызовы отображаются не корректно. \\ \\ **Следует использовать переадресацию средствами feature кодов.**
===== История звонков =====
[general]
enable=yes
;
; Asterisk Channel Event Logging (CEL)
;
[general]
enable=yes
apps=all
events=BRIDGE_START,BRIDGE_END
; asterisk 13
;events=BRIDGE_EXIT,BRIDGE_ENTER
;
; Asterisk Call Management CDR
;
[general]
enabled = yes
[mappings]
; В AMI event CDR будем возвращать дополнительную информацию
; Имя файла записи разговора ${CDR(recordingfile)} - переменная dialplan, нужно ее определить
recordingfile => recordingfile
; Идентификатор звонка
; Имя файла записи разговора ${CDR(linkedid)} - переменная dialplan, определена в Asterisk 1.8+
linkedid => linkedid
===== ODBC MySQL =====
; настройка соединения
[PT1C_asteriskcdrdb]
enabled=>yes
dsn=>MySQL-asteriskcdrdb
pooling=>no
limit=>10
pre-connect=>yes
username=>root; имя пользователя базы данных
password=>123 ; пароль пользователя базы данных
[PT1C_Global]
connection=PT1C_asteriskcdrdb
table=PT1C_cdr
alias recordingfile=>recordingfile
alias start=>calldate
[PT1C_cel]
connection=PT1C_asteriskcdrdb
loguniqueid=yes
table=cel
===== SIP =====
[general]
callcounter=yes
callevents=yes
; call-limit - не рекомендуем использовать этот параметр. По возможности его следует заменить на busylevel.
Обратите внимание на параметр **call-limit**, [[astpanel:ats:asterisk:auto_answer|см. документацию]]...
===== Extensions =====
[globals]
; Необходимо описать параметры подключения к базе данных MySQL
AMPDBENGINE=mysql
AMPDBNAME=asteriskcdrdb
AMPDBHOST=127.0.0.1
AMPDBUSER=root
AMPDBPASS=123 ; пароль пользователя базы данных MySQL
; Установите контекст для переадресаций.
; Панель телефонии будет его использовать при переводах.
TRANSFER_CONTEXT=internal
[internal]
; ОБЯЗАТЕЛЬНО включите контекст парковки в те контексты,
; которые используют SIP учетные записи телефонов сотрудников;
include => parkedcalls
[internal-hint]
; необходимо описать хинты для отслеживания состояния каналов
exten => 231,hint,SIP/160-231 ;231 - добавочный номер; 160-231 - имя учетной записи SIP (sip.conf)
exten => 232,hint,SIP/232 ;232 - добавочный номер; 232 - имя учетной записи SIP (sip.conf)
[miko_ajam]
; ... пример контекста описан в файле
; "dialplan_miko_ajam/test_sample_configs/extensions.conf"
[miko_ajam_fax_tx]
; ... пример контекста описан в файле
; "dialplan_miko_ajam/test_sample_configs/extensions.conf"
; Пример входящего контекста
[SIP-PROVIDER-incoming]
exten => _X!,1,NoOp(--- Incoming call ---)
; Для определения внешней линии (модуль статистики)
same => n,Set(__FROM_DID=${EXTEN}); EXTEN - номер, на который звонит клиент
same => n,Set(__FROM_CHAN=${CHANNEL}); Канал клиента
same => n,Set(CDR(did)=${FROM_DID})
; Для работы функции перехвата нужно вызвать UserEvent "Interception"
same => n,UserEvent(Interception,CALLERID: ${CALLERID(num)},chan1c: ${CHANNEL})
; далее произвольный dialplan для обработки входящего звонка
[[astpanel:ats:asterisk:hints_table|Подробнее об отслеживании состояния каналов...]]
==== Запись разговоров ====
При настройке записи разговоров, в поле таблицы CDR "recordingfile" должно сохраняться имя файла записи разговора. Путь к файлу записи должен указываться относительно директории "**/var/spool/asterisk/monitor/**. В дальнейшем скрипт
"**dialplan_miko_ajam/1c/download/index.php**" будет производить поиск записи именно в этой директории. Пример реализации записи разговоров:
exten => 1000,n,Set(RecFile=${STRFTIME(${EPOCH},,%Y-%m/%d)}/in_${CDR(src)}_${STRFTIME(${EPOCH},,%Y-%m-%d-%H-%M-%S)}.gsm)
exten => 1000,n,Set(CDR(recordingfile)=${RecFile})
exten => 1000,n,MixMonitor(${RecFile})
==== Факсы ====
При отправке / получении факсимильных сообщений необходимо фиксировать эту информацию.
; при отправке
exten => h,n,Set(CDR(recordingfile)=${faxfile})
exten => h,n,Set(CDR(userfield)=SendFAX)
; при получении
exten => h,n,Set(CDR(recordingfile)=${faxfile})
exten => h,n,Set(CDR(userfield)=ReceiveFAX)
Путь к файлу записи должен указываться относительно директории "**/var/spool/asterisk/fax/**. В дальнейшем скрипт
"**dialplan_miko_ajam/1c/download/index.php**" будет производить поиск записи именно в этой директории.
==== Перехват на ответственного ====
Если необходима работы этой функции, следует выполнить рекомендации, описанные в [[astpanel:ats:asterisk:interception_v6|инструкциях]].\\
==== Функция "Ответить на звонок" ====
[[astpanel:ats:asterisk:auto_answer|Инструкции по настройке]].\\
[[astpanel:enterprise:ordinary#funkcija_otvetit_na_zvonok|Упр. панель телефонии]].\\
[[astpanel:enterprise:managed#funkcija_otvetit_na_zvonok|Об. панель телефонии]].\\
==== Переадресация на мобильный ====
На текущий момент функция может работать только с АТС Askozia 5 и более ранних версиях. \\
Для настройки функции в собственной сборке asterisk потребуются правки со стороны панели телефонии в 1С.
Пример dialplan (extensions,conf) для внутреннего номера 104:
[internal]
exten => 104,1,Set(dstnum=${EXTEN});
exten => 104,n,Set(fw=${DB(CF/${dstnum})})
exten => 104,n,Set(dstcontext=internal)
exten => 104,n,ExecIf($["${fw}x" != "x"]?Goto(${dstcontext},${fw},1)
exten => 104,n,Dial(SIP/${EXTEN},20,Tte)
exten => 104,n,Hangup
exten => 74922293045,1,Dial(SIP/TEST-PROVIDER/${EXTEN},20,Tte)
Теперь детальнее:
; Для того, чтобы поместить в базу данных Asterisk
; информацию о заменяющем номере можно выполнить команду:
; database put CF 104 74922293045
; Команду можно выполнить в CLI консоли Asterisk
; Аналог этой команды выполняет панель телефонии для 1С при установке статуса "Отошел" / "На мобильном".
; Определяем номер, на который осуществляется вызов.
Set(dstnum=${EXTEN}); Номер назначения, к примеру внутренний номер сотрудника.
; Получаем значение резервного номера из AstDB
Set(fw=${DB(CF/${dstnum})})
; Устанавливаем контекст назначания. В нем должен быть определен "fw" - резервный номер.
Set(dstcontext=internal)
; Если полученное значение не пустое, то выполняем переадресацию в контекст назначения:
ExecIf($["${fw}x" != "x"]?Goto(${dstcontext},${fw},1)
; Согласно текущему примеру, в контексте internal должен быть определен exten 74922293045.
; Проверка
; dialplan show 74922293045@internal
===== Парковка вызовов =====
**Обратите внимание**: номера парковки не должны пересекаться с существующими внутренними номерами (**extensions**).
Для настройки ранних версий asterisk необходимо поправить файл /etc/asterisk/features.conf:
[general]
; Необходимо настроить парковку:
parkext => 700 ; Не актуально для asterisk13
parkpos => 701-720 ; Не актуально для asterisk13
context => parkedcalls ; Не актуально для asterisk13
parkinghints = yes ; Не актуально для asterisk13
Для asterisk13 опции были перенесены в файл /etc/asterisk/res_parking.conf
[general]
parkeddynamic = yes
[default]
context => parkedcalls
parkedcallreparking = caller
parkedcalltransfers = caller
parkext => 700
findslot => next
comebacktoorigin=no
comebackcontext = parkedcallstimeout
parkpos => 701-720
Опишем контекст, в котором будет описана логика возврата с парковки по таймауту.
[internal]
; ОБЯЗАТЕЛЬНО включите контекст парковки в те контексты,
; которые используют SIP учетные записи телефонов сотрудников;
include => parkedcalls
[parkedcallstimeout]
exten => s,1,NoOp(This is all that happens to parked calls if they time out.)
same => n,Goto(internal,${PARKER:4},1)
same => n,Hangup()
Проверка. Выполняем команду в CLI asterisk "**parking show**":
~ # asterisk -rx 'parking show'
Parking General Options
-----------------------
Dynamic Parking : yes
Parking Lot: default
--------------------------------------------------------------------------
Parking Extension : 700
Parking Context : parkedcalls
Parking Spaces : 701-720
Parking Time : 45 sec
Comeback to Origin : no
Comeback Context : parkedcallstimeout
Comeback Dial Time : 30 sec
MusicOnHold Class :
Enabled : yes
Dynamic : no
[[astpanel:dialplan_miko_ajam|Обратно к основной инструкции...]]
===== Коментарии =====
~~DISQUS~~