По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В сегодняшней статье рассмотрим один из самых важных модулей Asterisk, который является необходимым инструментом в решении проблем со звонками (траблшутинга), статистики и отчётности. Речь пойдёт о модуле CDR Reports. Все примеры, традиционно, будем приводить на нашем FreePBX 13 /p> CDR (Call Detailed Record) – это подробная запись об акте коммутации (звонке), которые были проведены на телефонной станции. Такие записи есть практически у любой существующей цифровой АТС. Каждый производитель цифровой АТС предлагает свои сервисы для просмотра CDR. В Asterisk это модуль CDR Reports. Модуль CDR Reports позволяет формировать мгновенные отчёты о телефонных звонках, которые так или иначе проходили через Вашу IP-АТС. Это могут быть как внутренние звонки между сотрудниками компании, так и звонки из/во “внешний мир", Asterisk записывает всё. Можно посмотреть, как полную историю звонков, так и создать уникальный отчёт, отфильтровав записи по дате, временным интервалам, только исходящим звонкам, только по определенным номерам CID и так далее. Звонки, которые появятся в сформированном отчёте, можно прослушать прямо из модуля. Важно отметить, что модуль CDR Reports требует, чтобы CDR – записи хранились в базе данных. О том, как Asterisk записывает детализирует телефонные события, вы можете прочитать в статье про cистему CEL (Channel Event Logging) Для формирования вышеупомянутых отчётов, модуль CDR Reports имеет интерфейс. Нужно отметить, что неопытному пользователю может быть трудно работать с интерфейсом, поскольку он имеет множество опций, с которыми не все знакомы. Однако, напротив каждой опции предусмотрены подсказки, подробно описывающие для чего они нужны. Рассмотрим интерфейс на примере FreePBX 13. Для того, чтобы в него попасть, с главной страницы переходим по следующему пути Reports - > CDR Reports, как показано на рисунке. Перед нами открывается интерфейс модуля CDR Reports с множеством фильтров Как видно, благодаря имеющимся фильтрам можно создавать самые разные отчёты. Коротко рассмотрим каждый фильтр: Call Date – Дата звонка. Справа можно выбрать временной промежуток, который нас интересует CallerID Number – Номер звонящего. Выводит все записи по определенному интересующему номеру телефона. Можно ввести множество номеров, разделяя их запятыми. Справа можно выбрать условия совпадения – “Начинается с", “Содержит", “Заканчивается на" и “Совпадает точно" данные условия можно применить и для остальных фильтров CallerID Name – Имя звонящего Outbound CallerID Number – Номер, с которого звонят, при исходящем звонке DID – Искать по набранному номеру. Это удобно, когда в компании несколько входящих линий Destination –Искать по номеру назначения. Например, когда звонок переведен на внутреннего сотрудника или звонок попал на Ring группу Destination CallerID Name – Искать по имени, присвоенного номеру назначения Userfield – Искать по полю Userfield, если оно включено на Extension’е Account Code – Искать по Аккаунт коду Duration – Продолжительность звонка. Справа можно выбрать интервал в секундах Disposition – Искать по характеру обработки вызова. Например: ANSWERED, BUSY, NO ANSWER. Позволяет найти не отвеченные звонки, звонки которые были приняты, звонки, которые не были приняты по причине занятости абонента Также записи можно сгруппировать по различным параметрам при помощи опции Group By Как только все нужные фильтры заполнены интересующими входными данными, необходимо нажать клавишу Search, чтобы сформировался отчёт Интерфейс статистики Merion Metrics Как видите, стандартный модуль CDR Report содержит очень много различных фильтров и параметров, которые, зачастую, просто не нужны рядовому пользователю. Именно поэтому, мы создали свой собственный интерфейс построения отчётов для Asterisk, интуитивно понятный и упрощенный. Наша разработка обладает не только базовым функционалом модуля CDR Report, но также позволяет формировать визуализированные отчёты и диаграммы. Посмотрите видео о том, как много радости приносит наш интерфейс статистики для IP - АТС Asterisk: Интерфейс можно попробовать бесплатно, пройдя по ссылке -
img
Ищешь бесплатное решение по реализации исходящих звонков из CRM Битрикс24 в связке с Asterisk? Поздравляем, нашел. Можешь закрыть все остальные вкладки и оставить только эту – пошаговое руководство по интеграции Б24 и Астериска в статье :) Как это работает? Легко (на этом можно было бы закончить). Мы создаем исходящий вебхук в Битрикс, он дергает php - скрипт на Asterisk каждый раз, когда мы будем нажимать на номер телефона в лиде, сделке, контакте – где угодно. Поехали. Попробовать Битрикс24 Подготовка Создадим AMI (Asterisk Manager Interface)– юзера, через которого будем инициировать вызовы. Откроем файл настройки: vim /etc/asterisk/manager.conf Обращаем внимание на секцию [general] - параметр enabled должен быть в значении yes: [general] enabled = yes // вот этот параметр :) port = 5038 bindaddr = 0.0.0.0 Проверьте, чтобы в самом конце файла manager.conf были следующие строки (если их нет, добавьте): #include manager_custom.conf Проверили. А теперь открываем файл /etc/asterisk/manager_custom.conf (если его нет – создайте и дайте права) и добавляем туда: [имя] secret = пароль deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 permit=ip_адрес_Asterisk/маска read = all,system,call,log,verbose,command,agent,user,config,originate write = all,system,call,log,verbose,command,agent,user,config,originate имя - придумайте имя для юзера; пароль - создайте устойчивый к взломам пароль, с помощью сервисов онлайн генерации, например; ip_адрес_Asterisk/маска - укажите вашу подсеть. В указанной подсети должен находится IP – адрес, с которого скрипт будет обращаться к AMI. Пример записи - 192.168.1.0/255.255.255.0; Переходим в Битрикс24 и создаем вебхуки. Вебхуки Первый вебхук мы сделаем входящим – по нему наш скрипт будет получать внутренний номер сотрудника по его идентификатору. Переходим в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Входящий вебхук. Делаем вот что: Название - любое название, как вам удобно; Описание - нужный момент, чтобы не запутаться в вебхуках; Права доступа - отметьте галочкой Пользователи (user); Нажимаем сохранить. Должно получиться примерно вот так: Обратите внимание: на скриншоте, красной линией подчеркнут URL параметра Пример URL для вызова REST. Скопируйте его ровно до последней части /profile/. Например, у нас получилось: https://merionet.bitrix24.ru/rest/2/1a2b3c4d5e6f7g8h Сохраните этот URL – он нам еще пригодится :) Перед тем, как мы сделаем исходящий вебхук, давайте обсудим будущий URL нашего скрипта. Так как он будет располагаться в веб директории, мы предлагаем вам сгенерировать последовательно 3 директории, в которых будет лежать скрипт. И вот о чем мы: представим, что ваш домен выглядит вот так: http://ilovemerionet.ru/ Гуд. Давайте последовательно сгенерируем 3 уникальных названия директорий, например: IpVy7ul85sz1Doi C49BNGJW3Yf30eo qBN0NBC56lj07yh После чего, в директории /var/www/html/ создадим три вложенных папки, чтобы наш файл в конечно итоге размещался в директории: /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Сам файл скрипта, который мы сгенерируем, будет называться index.php, тем самым, вебхук со стороны Битрикс24 будет обращаться по следующему URL: http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ Кажется, разобрались :) Теперь создаем исходящий вебхук – прыгаем в раздел Приложения → Вебхуки. Нажимаем кнопку Добавить вебхук и выбираем Исходящий вебхук. Делаем вот что: Код авторизации - это наш проверочный код, который мы используем в скрипте; Адрес обработчика - как мы привели пример выше, тут будет http://ilovemerionet.ru/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ - у вас, само собой, свой URL :); Название - явное название, чтобы не запутаться. Сделайте Asterisk Calls, например?; Комментарий - можете оставить комментарий для себя, чтобы было проще разобраться; Тип события - выбираем Инициация звонка через приложение (ONEXTERNALCALLSTART); Великолепно. Мы выходим на финишную прямую. Скрипт для Asterisk Ловите скрипт, который будет принимать вебхуки от Битрикс24. Комментарии к самым важным строкам, как всегда, присутствуют: <?php $check_token = "Код_авторизации"; // это значение будет прилетать нам в вебхуке. А мы будем его сравнивать, чтобы быть уверенными, что это Битрикс; $user_hook_url = "Часть_входящего_вебхука"; // нужно, для получения внутреннего номера пользователя, которые инициирует звонок; $ami_login = "ami_логин"; // логин к AMI, который мы создавали ранее; $ami_password = "пароль"; // пароль к AMI, который мы создавали ранее; $strhost = "IP_адрес"; // IP - адрес вашего Asterisk; if (strcmp($_POST['auth']['application_token'], $check_token) === 0) { function writeToLog($data, $title = '') { $log = " ------------------------ "; $log .= date("Y.m.d G:i:s") . " "; $log .= (strlen($title) > 0 ? $title : 'DEBUG') . " "; $log .= print_r($data, 1); $log .= " ------------------------ "; file_put_contents(getcwd() . '/hook.log', $log, FILE_APPEND); return true; } writeToLog($_REQUEST, 'incoming'); $UID = $_POST['data']['USER_ID']; $bitrix_contact_url = "$user_hook_url/user.get.json?ID=$UID"; $btc = curl_init(); curl_setopt ($btc, CURLOPT_URL,$bitrix_contact_url); curl_setopt ($btc, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($btc, CURLOPT_TIMEOUT, 60); curl_setopt ($btc, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($btc, CURLOPT_RETURNTRANSFER, 1); $bitrix_contact = curl_exec ($btc); curl_close($btc); $bitrix_contact_o = json_decode($bitrix_contact, true); $cid = $bitrix_contact_o['result'][0]['UF_PHONE_INNER']; $strport = "5038"; $timeout = "5"; $num = str_replace("+","",$_POST['data']['PHONE_NUMBER_INTERNATIONAL']); $callid = $_POST['data']['CALL_ID']; $c="from-internal"; $p="1"; $errno=0 ; $errstr=0 ; $sconn = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn) { echo "$errstr ($errno) "; } else { $sconn1 = fsockopen($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn1) { echo "$errstr ($errno) "; } else { fputs($sconn1, "Action: login "); fputs($sconn1, "Username: $ami_login "); fputs($sconn1, "Secret: $ami_password "); fputs($sconn1, "Events: off "); usleep(500); fputs($sconn1, "Action: Setvar "); fputs($sconn1, "Variable: B24ID "); fputs($sconn1, "Value: $callid/$cid "); fputs($sconn1, "Action: Logoff "); usleep(500); $wrets1=fgets($sconn1,128); fclose($sconn1);} fputs($sconn, "Action: login "); fputs($sconn, "Username: $ami_login "); fputs($sconn, "Secret: $ami_password "); fputs($sconn, "Events: off "); usleep(500); fputs($sconn, "Action: Originate "); fputs($sconn, "Channel: SIP/$cid "); fputs($sconn, "Callerid: $cid "); fputs($sconn, "Timeout: 20000 "); fputs($sconn, "Context: $c "); fputs($sconn, "Exten: $num "); fputs($sconn, "Priority: $p "); fputs($sconn, "Async: yes " ); usleep(500); $wrets=fgets($sconn,128); fclose($sconn); exit; }} else { exit; }; ?> Скачать скрипт интеграции После загрузки файла, сохраните его с расширением .php В нем вам нужно поменять 5 переменных: $check_token - код авторизации, который вы получили на этапе создания исходящего вебхука; $user_hook_url - та часть входящего вебхука, которая подчеркнута на скриншоте до слов /profile/; $ami_login - логин в AMI, создавали ранее; $ami_password - пароль в AMI; $strhost - IP - адрес вашего Asterisk; Чтобы скрипт заработал, нужно, как мы говорили ранее, загрузить его в директорию /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/ (после генерации директорий у вас будет свой путь!) и дать следующие команды: dos2unix /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chown asterisk:asterisk /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php chmod 775 /var/www/html/IpVy7ul85sz1Doi/C49BNGJW3Yf30eo/qBN0NBC56lj07yh/index.php Кстати, профит этого скрипта в том, что он ведет логирование в файле hook.log, который будет располагаться в той же директории. Если кто – то из ваших менеджеров скажет, что не смог позвонить клиенту – это будет легко проверить :) Почти готово. Остался только один штрих. Снова открываем CRM Битрикс24, переходим в сегмент Телефония → Настройки и в параметре Настройка номеров по-умолчанию выбираем созданный нами вебхук (у нас он называется Приложения: Asterisk Calls: А вот теперь готово. Звоним Звонит :) Но! Не закрывает карточку и не добавляет отметку об исходящем звонке в сущность CRM (запись разговора). Внимательные пользователи обратят внимание – в AMI сегменте скрипта, который обсуждали ранее, мы кинули команду Setvar (присвоение переменной) к B24ID = $callid. Тем самым, на всем протяжении звонка у нас будет идентификатор этой телефонной транзакции. Фактически, чтобы получить отметку о звонке, запись разговора и прочее, по факту окончания разговора нужно методом telephony.externalcall.finish кинуть массив данных, где будет отметка об идентификаторе вызова (которую передаем через диалплан), телефон инициатора вызова, длительность и ссылка на запись разговора. Если данная статья вызовет интерес, мы покажем, как это сделать. Удачи с настройкой :)
img
Создание разделов диска позволяет разделить жесткий диск на несколько разделов, которые действуют независимо. В Linux пользователи должны структурировать устройства хранения (USB и жесткие диски) перед их использованием. Разбиение на разделы также полезно, когда вы устанавливаете несколько операционных систем на одном компьютере. В этом пошаговом руководстве вы узнаете, как создать раздел с помощью команды Linux parted или fdisk. Вариант 1: разбить диск на разделы с помощью команды parted Выполните следующие действия, чтобы разбить диск в Linux с помощью команды parted. Шаг 1. Список разделов Перед созданием раздела составьте список доступных запоминающих устройств и разделов. Это действие помогает определить устройство хранения, которое вы хотите разбить на разделы. Выполните следующую команду с sudo, чтобы вывести список устройств хранения и разделов: sudo parted -l Терминал распечатывает доступные устройства хранения с информацией о: Model - Модель запоминающего устройства. Disk - Имя и размер диска. Sector size - логический и физический размер памяти. Не путать с доступным дисковым пространством. Partition Table - тип таблицы разделов (msdos, gpt, aix, amiga, bsd, dvh, mac, pc98, sun и loop). Disk Flags - разделы с информацией о размере, типе, файловой системе и флагах. Типы разделов могут быть: Primary (Основной) - содержит файлы операционной системы. Можно создать только четыре основных раздела. Extended (Расширенный) - особый тип раздела, в котором можно создать более четырех основных разделов. Logical (Логический) - Раздел, созданный внутри расширенного раздела. В нашем примере есть два устройства хранения - /dev/sda и /dev/sdb Примечание. Первый диск хранения (dev/sda или dev/vda) содержит операционную систему. Создание раздела на этом диске может сделать вашу систему не загружаемой. Создавайте разделы только на дополнительных дисках (dev/sdb, dev/sdc, dev/vdb или dev/vdc). Шаг 2: Откройте диск для хранения Откройте диск хранения, который вы собираетесь разделить, выполнив следующую команду: sudo parted /dev/sdb Всегда указывайте запоминающее устройство. Если вы не укажете имя диска, он будет выбран случайным образом. Чтобы сменить диск на dev/sdb, выполните: select /dev/sdb Шаг 3: Создайте таблицу разделов Прежде чем разбивать диск, создайте таблицу разделов. Таблица разделов расположена в начале жесткого диска и хранит данные о размере и расположении каждого раздела. Типы таблиц разделов: aix, amiga, bsd, dvh, gpt, mac, ms-dos, pc98, sun и loop. Чтобы создать таблицу разделов, введите следующее: mklabel [partition_table_type] Например, чтобы создать таблицу разделов gpt, выполните следующую команду: mklabel gpt Введите Yes, чтобы выполнить: Примечание. Два наиболее часто используемых типа таблиц разделов - это gpt и msdos. msdos поддерживает до шестнадцати разделов и форматирует до 16 ТБ, а gpt форматирует до 9,4 ЗБ и поддерживает до 128 разделов. Шаг 4: проверьте таблицу Запустите команду print, чтобы просмотреть таблицу разделов. На выходе отображается информация об устройстве хранения: Примечание. Запустите команду help mkpart, чтобы получить дополнительную справку о том, как создать новый раздел. Шаг 5: Создайте раздел Давайте создадим новый раздел размером 1854 Мбайт, используя файловую систему ext4. Назначенное начало диска должно быть 1 МБ, а конец диска - 1855 МБ. Чтобы создать новый раздел, введите следующее: mkpart primary ext4 1MB 1855MB После этого запустите команду print, чтобы просмотреть информацию о вновь созданном разделе. Информация отображается в разделе Disk Flags: В таблице разделов gpt, тип раздела - это обязательное имя раздела. В нашем примере primary - это имя раздела, а не тип раздела. Чтобы сохранить свои действия и выйти, введите команду quit. Изменения сохраняются автоматически с помощью этой команды. Примечание. Сообщение «You may need to update /etc/fstab file» сигнализирует о том, что раздел может быть смонтирован автоматически во время загрузки. Вариант 2: разбить диск на разделы с помощью команды fdisk Выполните следующие действия, чтобы разбить диск в Linux с помощью команды fdisk. Шаг 1. Список существующих разделов Выполните следующую команду, чтобы вывести список всех существующих разделов: sudo fdisk -l Вывод содержит информацию о дисках и разделах хранилища: Шаг 2: Выберите диск для хранения Выберите диск для хранения, на котором вы хотите создать разделы, выполнив следующую команду: sudo fdisk /dev/sdb Диск /dev/sdbstorage открыт: Шаг 3: Создайте новый раздел Запустите команду n, чтобы создать новый раздел. Выберите номер раздела, набрав номер по умолчанию (2). После этого вас попросят указать начальный и конечный сектор вашего жесткого диска. Лучше всего ввести в этом разделе номер по умолчанию (3622912). Последний запрос связан с размером раздела. Вы можете выбрать несколько секторов или установить размер в мегабайтах или гигабайтах. Введите + 2 GB, чтобы установить размер раздела 2 ГБ. Появится сообщение, подтверждающее создание раздела. Шаг 4: запись на диск Система создала раздел, но изменения не записываются на диск. 1. Чтобы записать изменения на диск, выполните команду w: 2. Убедитесь, что раздел создан, выполнив следующую команду: sudo fdisk -l Как видите, раздел /dev/sdb2 создан. Отформатируйте раздел После создания раздела с помощью команды parted или fdisk отформатируйте его перед использованием. Отформатируйте раздел, выполнив следующую команду: sudo mkfs -t ext4 /dev/sdb1 Смонтировать раздел Чтобы начать взаимодействие с диском, создайте точку монтирования (mount point) и смонтируйте к ней раздел. 1. Создайте точку монтирования, выполнив следующую команду: sudo mkdir -p /mt/sdb1 2. После этого смонтируйте раздел, введя: sudo mount -t auto /dev/sbd1 /mt/sdb1 Терминал не распечатывает вывод, если команды выполнены успешно. 3. Убедитесь, что раздел смонтирован, с помощью команды df hT:
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59