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

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


faq:quality_custom

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

faq:quality_custom [2019/11/22 13:15]
Портнов Алексей [Доработка Dialplan]
faq:quality_custom [2020/04/05 15:07]
Строка 1: Строка 1:
-====== Реализация механизма оценки качества обслуживания (Входящие) ====== 
  
-[[:​faq|Обартно в FAQ...]] 
- 
-Совершенствование качества сервиса организации - крайне важная составляющая успешной работы компании. Механизм оценки работы оператора будет полезен любому бизнесу. ​ 
- 
-В текущей статье предлагаем пример реализации механизма оценки качества клиентом для АТС Askozia. ​ 
- 
-===== Доработка Dialplan ===== 
- 
-<note important>​На АТС предварительно следует закачать файлы записей вопросов / приветствия. Формат записей WAV (Microsoft) signed 16-bit PCM. \\ 
-Файлы можно для удобства разместить в каталоге:​ **/​storage/​usbdisk1/​quality/​sounds**.\\ 
-В dialplan путь к файлу следует указывать **без** расширения. 
-</​note>​ 
-Для начала дополним логику обработки входящих звонков:​ 
- 
-1. Перейдите в раздел **Маршрутизация** -> **Провайдеры телефонии**. Откройте для редактирования учетную запись провайдера для редактирования. Скопируйте в адресной строке **ID провайдера**,​ через которого абоненты звонят Вам в компанию. Обращаем Ваше внимание,​ что в нашем примере используется **единственный** провайдер Zadarma. Если у Вас настроено подключение **нескольких** провайдеров,​ то ниже описанные действия необходимо выполнить **для каждого провайдера**.\\ \\  
-В нашем примере ID провайдера принимает вид: **SIP-PROVIDER-B63EE3497989BF6597FF8C9DEC77EB49**.\\ {{ :​providers:​2019-02-05_105038.png |}}\\ \\  
-2. Перейдите в раздел **Система** -> **Кастомизация системных файлов**.\\ {{ :​providers:​many_hosts:​2019-02-04_173507.png |}}\\ \\  
-3. Откройте для редактирования конфигурационный файл **extensions.conf**. Установите режим "​**Добавлять в конец файла**"​.\\ \\  
-4. В черное окно добавьте следующий фрагмент кода: <​code>​ 
-[SIP-PROVIDER-B63EE3497989BF6597FF8C9DEC77EB49-after-dial-custom] 
-exten => _.!,​1,​Goto(quality-start,​s,​1) 
- same => n,return 
- 
-[SIP-PROVIDER-B63EE3497989BF6597FF8C9DEC77EB49-outgoing-custom] 
-exten => _.!,​1,​Set(DOPTIONS=${DOPTIONS}F(quality-start,​s,​1)) 
- same => n,return 
- 
-[quality-start] 
-exten => _.!,​1,​NoOp(--- Quality assessment ---) 
- same => n,​ExecIf($[${M_DIALSTATUS}!=ANSWER]?​return) 
- ;​Описываем путь к файлу завершения разговора. Благодарим за оценку качества. ​ 
- same => n,​Set(filename_bye=/​storage/​usbdisk1/​quality/​sounds/​bye) 
- ; Описываем пути к файлам опроса. ​ 
- same => n,​Set(filename_1=/​storage/​usbdisk1/​quality/​sounds/​miko_hello) 
- same => n,​Set(filename_2=/​storage/​usbdisk1/​quality/​sounds/​q_1) 
- same => n,​Set(filename_3=/​storage/​usbdisk1/​quality/​sounds/​q_2) 
- same => n,​Set(f_num=0);​ 
- same => n,​Goto(ivr-quality,​s,​1) 
- 
-[ivr-quality] 
-exten => s,1,NoOP( start ivr quality ) 
- same => n,​Set(f_num=$[${f_num} + 1]) 
-  same => n,​Set(filename=${filename_${f_num}}) 
- same => n,​GotoIf($["​x${filename}"​ == "​x"​]?​ivr-quality,​bye,​1);​ 
- same => n,​Background(${filename}) 
- same => n,​WaitExten(5) 
- 
-exten => _[1-5],​1,​NoOP( quality is ${EXTEN}) 
- ; AGI скрипт,​ который сохранит результат оценки разговора клиентом. 
- same => n,​AGI(/​storage/​usbdisk1/​quality/​quality_agi.php) 
- same => n,​Goto(ivr-quality,​s,​1) 
- 
-exten => _[06-9],​Goto(ivr-quality,​s,​1) 
- 
-exten => bye,​1,​ExecIf($["​x${filename_bye}"​ != "​x"​]?​Playback(${filename_bye}));​ 
- same => n,Hangup() 
-</​code>​ 
- 
-В выше приведенном фрагменте кода Вам необходимо составить правильное наименование контекста.\\ ​ 
-Формат создаваемого контекста:​\\ ​ 
-<​code>​ 
-[ID-ПРОВАЙДЕРА-incoming-custom] 
-</​code>​ 
-  * **ID-ПРОВАЙДЕРА** - значение,​ которое вы сохранили на первом шаге данной инструкции. В нашем примере это **SIP-PROVIDER-B63EE3497989BF6597FF8C9DEC77EB49**. ​ 
-===== Скрипт обработки результата оценки ===== 
-<note important>​Файл следует сохранить на АТС по пути **/​storage/​usbdisk1/​quality/​quality_agi.php**\\ 
-Создать файл можно используя файловый менеджер [[faq:​winscp|WinSCP]]\\ 
-Файлу следует установить права доступа на выполнение. Подключитесь по [[faq:​putty|SSH]] и выполните команду <​code>​ 
-chmod +x /​storage/​usbdisk1/​quality/​quality_agi.php 
-</​code>​ 
-</​note>​ 
- 
-Пример реализации quality_agi.php:​ 
- 
-<​code>​ 
-#​!/​usr/​bin/​php 
-<?php 
-require_once '​phpagi.php';​ 
-require_once '​globals.php';​ 
- 
-$agi = new AGI(); 
-$linkedid ​  = $agi->​get_variable('​CDR(linkedid)',​ true); 
- 
-$arr = [ 
-    '​quality' ​  => $agi->​request['​agi_extension'​],​ 
-    '​f_num' ​    => $agi->​get_variable('​f_num',​ true), 
-    '​filename' ​ => $agi->​get_variable('​filename',​ true), 
-    // '​Оцененный оператор:'​ => $operator, 
-    '​linkedid' ​ => $linkedid, 
-    '​date' ​     => date('​Y-m-d H:​i:​s'​),​ 
-    '​callerid' ​ => $agi->​request['​agi_callerid'​] 
-]; 
- 
-$file_log = '/​storage/​usbdisk1/​quality/'​.$linkedid.'​.log';​ 
-Util::​mw_mkdir(dirname($file_log));​ 
-file_put_contents($file_log,​ json_encode($arr)."​\n",​ FILE_APPEND);​ 
-</​code>​ 
- 
- 
-<note warning>​Результат оценки будет сохранятся в файлы вида **/​storage/​usbdisk1/​quality/<​ID>​.log**</​note>​ 
- 
-Пример файла: 
-<​code>​ 
-{"​quality":"​1","​f_num":"​1","​filename":"​\/​offload\/​asterisk\/​sounds\/​other\/​miko_hello","​linkedid":"​mikopbx-1574331248.66","​date":"​2019-11-21 13:​14:​13","​callerid":"​79265775289"​} 
-{"​quality":"​2","​f_num":"​2","​filename":"​beep","​linkedid":"​mikopbx-1574331248.66","​date":"​2019-11-21 13:​14:​15","​callerid":"​79265775289"​} 
-{"​quality":"​3","​f_num":"​3","​filename":"​\/​offload\/​asterisk\/​sounds\/​other\/​out_work_times","​linkedid":"​mikopbx-1574331248.66","​date":"​2019-11-21 13:​14:​16","​callerid":"​79265775289"​} 
- 
-</​code>​ 
-[[:​faq|Обартно в FAQ...]] 
faq/quality_custom.txt · Последние изменения: 2020/04/05 15:07 (внешнее изменение)