По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В нашей базе знаний достаточно много статей касаемо установки и настройки FreePBX, поэтому вы наверняка неоднократно натыкались на скриншоты Dashboard в FreePBX – окна, содержащего в себе сводку по всем сервисам, службам и «железным» характеристикам сервера АТС – в сегодняшней статье мы расскажем как установить похожий дэшборд абсолютно на любой сервер – в нашем примере мы будем его ставить на CentOS 6. Установка Для начала обновим все пакеты с помощью командыyum update, а затем установим Apache, PHP и git пакеты: yum -y install httpd git php php-json php-xml php-common Далее включим и запустим сервис httpd командами: systemctl start httpd systemctl enable httpd Следующим шагом необходимо скачать сам дэшборд с помощью git, но для этого необходимо сначала сменить рабочую директорию на /var/www/html с помощью команды cd /var/www/html. После смены директории вводим команду для скачивания - git clone https://github.com/afaqurk/linux-dash.git - в общем и целом, почти всё готово для запуска. Запуск Теперь перезагружаем сервис httpd с помощью команды service httpd restart и пробуем зайти по следующему адресу: http://адрес_вашего_сервера/linux-dash Если всё прошло успешно – у вас должен запуститься веб-интерфейс следующего вида, как на скриншоте ниже: Обратите внимание, что есть 5 вкладок: System Status - информация о загруженности оперативной памяти, CPU и так далее; Basic Info - общая информация о сервере; Network - информация о сетевых интерфейсах; Accounts - информация об аккаунтах пользователей; Apps - описание используемых приложений; Данное приложение находится в процессе постоянной доработки разработчиком, поэтому вы всегда можете обратиться к нему напрямую через GitHub.
img
Друзья, сегодня речь пойдет о синтезе речи в Asterisk. Этот простой способ позволит вам озвучивать требуемое голосовое сообщение в структурах IVR или обычных приветствиях. Да где угодно. Профит этого решения: Единый голос для всех аудио – файлов; Кэширование и сохранение озвученных текстов, фраз в виде медиа - файлов, для последующего использования на Asterisk; Получаем токен Приступим. Прежде всего нужно получить API - токен на использование сервиса от Яндекс. Этот процесс расписан в статье по ссылке ниже (раздел Получение API - токена Yandex.SpeechKit): Получение токена Возвращайтесь с токеном и будем приступать к коду :) Кодим! Для начала создадим директорию /var/lib/asterisk/tts/ и дадим права. Там мы будем хранить текстовый файл, благодаря которому, сможем идентифицировать аудио – файлы по совпадению MD5 названия. Внутри файла будет фраза: mkdir /var/lib/asterisk/tts/ chown asterisk:asterisk /var/lib/asterisk/tts/ chmod 775 /var/lib/asterisk/tts/ В зависимости от дистрибутива и вариантов установки IP – АТС Asterisk, звуковые файлы могут располагаться в другой директории. Вы можете самостоятельно поправить это в скрипте. Использовать будем AGI приложение. Традиционно, комментарии к коду прикладываются: #!/usr/bin/php -q <?php error_reporting(0); // выключаем ошибки, необязательно, нужно в процесcе дебага скрипта require('phpagi.php'); $agi = new AGI(); $str = $agi->request['agi_arg_1']; //записываем в переменную текст, который необходимо озвучить $str = iconv('cp1251', 'utf-8', $str); // конвертируем в кириллическую кодировку $md5 = md5($str); //вычисляем md5 - хэш от переменной $str $prefix = '/var/lib/asterisk/sounds/ru/custom/'; //устанавливаем директорию для файлов. Мы ее создавали по ходу движения $filename = $prefix.$md5; //устанавливаем название файла(оно будет равно md5 текста) $format = 'wav'; //устанавливаем формат получаемого файла от Яндекс $quality = 'hi'; //устанавливаем качество $speaker = 'oksana'; //выбираем голос. На момент написания статьи доступны женские голоса: jane, oksana, alyss и omazh и мужские голоса: zahar и ermil. $emotion = 'evil'; // выбираем интонацию голоса, good — радостный, доброжелательный, evil — раздраженный, neutral — нейтральный (используется по умолчанию). Будем злее :) $speed = '0.9'; // данный параметр отвечает за скорость (темп) речи, подбирается опытным путем на слух, в данном случае оптимальный $key = 'Ваш_токен'; //ваш токен, который вы получили ранее. if (!file_exists($filename.'.wav')) { $qs = http_build_query(array("format" => $format,"quality" => $quality,"lang" => "ru-RU","speaker" => $speaker,"speed" => $speed,"key" => $key,"emotion" => $emotion, "text" => $str)); //формируем строку запроса $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); //запрашиваем файл $file = fopen("file1.wav", "w"); //открываем файл для записи fwrite($file, $soundfile); // пишем в файл данные fclose($file); //закрываем файл shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 '.$filename.'.wav'); //конвертируем файл под требования Asterisk и закидываем в директорию для аудио shell_exec('chown asterisk:asterisk '.$filename.'.wav'); shell_exec('chmod 775 '.$filename.'.wav'); // даем файлу нужные пермишны; shell_exec('rm -f file1.wav'); // удаляем файл, который создали в процессе обращения к API; shell_exec('echo '.$str.' > /var/lib/asterisk/tts/'.$md5.'.txt'); // добавляем магии ;-) о ней ниже в тексте статьи. } $agi->exec('Playback',"custom/$md5"); //проигрываем файл звонящему. Скачать скрипт синтеза речи После загрузки файла, сохраните его с расширением .php Сохраняем скрипт как texttospeech.php и закидываем его в директорию /var/lib/asterisk/agi-bin. После, даем последовательность следующих команд: dos2unix /var/lib/asterisk/agi-bin/texttospeech.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/texttospeech.php chmod 775 /var/lib/asterisk/agi-bin/texttospeech.php Как вы могли заметить, скрипт настраивается. Голос, интонация, скорость речи, качество получаемого файла – подлежат корректировке для вашей задачи. Схема работы всего процесса следующая: Скрипт получает из диалплана текст по AGI и сохраняет в переменной; Если у нас уже существует аудио – файл для заранее записанной фразы, мы отдаем в диалплан команду на воспроизведение. Если нет – обращаемся к API; Скрипт отправляет запрос в сторону API Яндекса; Происходит конвертация полученного аудио – файла в нужный формат; Даем права файлу для воспроизведения на Asterisk и удаляем временный файл; Делаем отметку о создании файла в служебный текстовый файл; Воспроизводим файл; А как заставить скрипт работать? Очень просто. Открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [text_to_speech] exten => s,1,Answer() exten => s,2,AGI(texttospeech.php,"Привет! Это Мерион Нетворкс. Если ты слышишь это сообщение, значит все сделал правильно!") Сохраняем изменения и прыгаем в FreePBX. Будем вызывать кастомный контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Настроили и сохранили. Наша задумка такова – человек звонит на наш номер, набирает 13 и попадает на синтезированное сообщение. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Звоним, проверяем. Работает :) Если хотите заменить фразу, которую нужно озвучить, просто поправьте ее в файле /etc/asterisk/extensions_custom.conf.
img
Протокол EIGRP имеет гораздо более быструю сходимость по сравнению с протоколами RIP и IGRP, потому что в отличие от дистанционно – векторных протоколов маршрутизации, которым необходимо передать таблицы маршрутизации для сходимости, в протоколе EIGRP соседи маршрутизаторы обмениваются только “Hello” пакетами. Используя протокол EIGRP, маршрутизаторы узнают друг друга в процессе сходимости, обмениваясь различными параметрами для установления таблиц маршрутизации. Аналогичные процессы происходят в протоколе OSPF и других протокола состояния канала. Два маршрутизатора могут стать соседями только при выполнении следующих условий: Произошел успешный обмен “Hello” сообщениями Интерфейсы находятся в рамках одной автономной системы Используют одинаковые метрики: EIGRP использует полосу пропускания и задержку в качестве метрик по умолчанию. Если вы решите использовать и другие метрики, такие как загрузка, надежность и MTU, то их необходимо настроить на обоих маршрутизаторах. Таймера “Hello” пакетов используют одно и то же значение для следующих значений: Частота, с которой маршрутизаторы отправляют “Hello” пакеты друг другу. Время, в течении которого, маршрутизатор не отвечает на пакеты и маркируется недоступным. «Hello» пакеты отправляются не только во время процесса сходимости, но и после, для отслеживания статуса того, или иного узла маршрутизации. Если маршрутизатор становится недоступен (не отвечает на пакеты «Hello»), то по истечению указанного выше таймера маршрутизатор отмечаются как недоступный. Обновление маршрутов Даже после полной сходимости, EIGRP продолжает обновлять маршруты на основании доступности роутеров – соседей. Это позволяет маршрутизаторам поддерживать свою собственную таблицу «состояния связей», или по другом, link – state. После того, как маршрутизаторы построят таблицу соседей и таблицу состояния связей, они знают своих соседей, топологию сети в своем ближайшем окружении и топологию сети в ближайшем окружении своих соседей. Далее, каждый маршрутизатор рассчитывает параметры и качество каждого маршрута, который находятся в таблице состояния связей. EIGRP использует DUAL (Diffusing Update Algorithm) для расчета качества маршрута. DUAL (Diffusing Update Algorithm) Cisco использует Diffusing Update Algorithm, или DUAL алгоритм для расчет качества сетевого маршрута в рамках протокола EIGRP. Алгоритм DUAL повышает эффективность протокола EIGRP по сравнению с IGRP, предотвращая появление петель маршрутизации. Отметим следующие характеристики алгоритма DUAL: Для каждой сети назначения рассчитывается маршрут через Successor, или другими словами – лучший маршрут, а также, рассчитывается маршрут через Feasible Successor (второй по приоритету маршрут). DUAL поддерживает маски переменной длинны или VLSA (variable-length subnet masking), позволяя EIGRP выполнять маршрутизации в различных подсетях. Алгоритм DUAL очень быстро рассчитывает новый маршрут в пункт назначения, в случаях, если основной маршрут недоступен. DUAL поддерживает две опции, которые обеспечивают быстрый переход на новую маршрутизацию в случаях недоступности: Successor и Feasible Successor маршруты. Для каждого из путей у EIGRP всегда есть резервный путь. Если оба маршрута, Successor и Feasible Successor недоступны, DUAL выполняет опрос соседей маршрутизаторов, для выбора лучшего маршрута. По причине того, что каждый из соседей маршрутизатора так же имеют Successor и Feasible Successor маршруты, новый маршрут в сеть назначения, полученный от них, является наиболее приемлемым и качественным с точки зрения метрик.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59