Внимание!
Эта wiki об устаревших версиях
Документация к актуальной версии интеграции 1С и телефонии доступна по ссылке

Инструменты пользователя

Инструменты сайта


astpanel:dialplan_miko_ajam:configs

Описание конфигурационный файлов

AJAM / AMI

Эти настройки крайне важны. Необходимо настроить использование API Asterisk.
Подробное описание доступно на странице.

manager.conf
 
[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
http.conf
 
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk

Переадресации

Следующие опции обязательно должны быть назначены. Значения могут быть произвольными.
features.conf
 
[general]
; Необходимо настроить парковку:
parkext => 700                  
parkpos => 701-720               
context => parkedcalls          
parkinghints = yes              

[featuremap]                    

blindxfer => ##  ; Это лишь пример значения. Можно установить свое.              
disconnect => *0 ; Это лишь пример значения. Можно установить свое. 
; ОБЯЗАТЕЛЬНО включите опцию "atxfer"            
atxfer => **     ; Это лишь пример значения. Можно установить свое.               
Обратите внимание!!! Пользователей необходимо отучить использовать кнопку Transfer (SIP Transfer) на телефонном аппарате. Asterisk плохо работает с таким звонками, в истории такие вызовы отображаются не корректно.

Следует использовать переадресацию средствами feature кодов.

История звонков

cdr.conf
 
[general]
enable=yes
cel.conf
 
;
; Asterisk Channel Event Logging (CEL)
;
[general]

enable=yes
apps=all
events=BRIDGE_START,BRIDGE_END
; asterisk 13
;events=BRIDGE_EXIT,BRIDGE_ENTER
cdr_manager.conf
 
;
; 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

res_odbc.conf
 
; настройка соединения 
[PT1C_asteriskcdrdb]
enabled=>yes
dsn=>MySQL-asteriskcdrdb
pooling=>no
limit=>10
pre-connect=>yes
username=>root; имя пользователя базы данных
password=>123 ; пароль пользователя базы данных
cdr_adaptive_odbc.conf
 
[PT1C_Global]
connection=PT1C_asteriskcdrdb
table=PT1C_cdr
alias recordingfile=>recordingfile
alias start=>calldate
cel_odbc.conf
 
[PT1C_cel]
connection=PT1C_asteriskcdrdb
loguniqueid=yes
table=cel

SIP

sip.conf
 
[general]
callcounter=yes
callevents=yes

; call-limit - не рекомендуем использовать этот параметр. По возможности его следует заменить на busylevel. 

Обратите внимание на параметр call-limit, см. документацию

Extensions

extensions.conf
 
[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 для обработки входящего звонка

Подробнее об отслеживании состояния каналов...

Запись разговоров

При настройке записи разговоров, в поле таблицы 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» будет производить поиск записи именно в этой директории.

Перехват на ответственного

Если необходима работы этой функции, следует выполнить рекомендации, описанные в инструкциях.

Функция "Ответить на звонок"

Переадресация на мобильный

На текущий момент функция может работать только с АТС 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:

features.conf
 
[general]
; Необходимо настроить парковку:
parkext => 700 	  	   ; Не актуально для asterisk13              
parkpos => 701-720 	   ; Не актуально для asterisk13               
context => parkedcalls ; Не актуально для asterisk13         
parkinghints = yes 	   ; Не актуально для asterisk13         

Для asterisk13 опции были перенесены в файл /etc/asterisk/res_parking.conf

res_parking.conf
 
[general] 
parkeddynamic = yes 

[default] 
context => parkedcalls 
parkedcallreparking = caller
parkedcalltransfers = caller
parkext => 700 
findslot => next
comebacktoorigin=no
comebackcontext = parkedcallstimeout
parkpos => 701-720               

Опишем контекст, в котором будет описана логика возврата с парковки по таймауту.

extensions.conf
 
[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/configs.txt · Последние изменения: 2019/02/01 09:36 — apor