По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Порой, например, при подключении аналогового телефона через FXS шлюз, на котором отсутствует регулировка громкости, необходимо отрегулировать громкость при разговоре. Предположим, что на FXS шлюзе отсутствует регулировка на порту, к которому подключен телефон. Давайте разберемся: Данная регулировка реализуется на базе VOLUME(TX|RX). Информацию по ней можно посмотреть через консоль Asterisk: asterisk*CLI> core show function VOLUME -= Info about function 'VOLUME' =- [Synopsis] Set the TX or RX volume of a channel. \ можно настроить громкость для канала [Description] The VOLUME function can be used to increase or decrease the 'tx' or 'rx' gain of any channel. For example: Set(VOLUME(TX)=3) Set(VOLUME(RX)=2) Set(VOLUME(TX,p)=3) Set(VOLUME(RX,p)=3) [Syntax] VOLUME(direction[,options]) [Arguments] direction Must be 'TX' or 'RX'. options p: Enable DTMF volume control [See Also] Not available Данная функция имеет 2 параметра: Направление, т.е TX – отправка, RX – прием. Дополнительная опция p, которая активирует контроль над звуком по DTMF На данном этапе мы разобрались с функцией VOLUME. Теперь открываем файл extensions_customs.conf и производим следующие настройки нового контекста: [root@asterisk ~]# vim /etc/asterisk/extensions_custom.conf [volume-set] exten => _X.,1,NoOp(Volume settings) same => n,Set(VOLUME(TX)=5) same => n,Set(VOLUME(RX)=5) same => n,Goto(from-internal,${EXTEN},1) Теперь открываем необходимый нам Extension, и в поле Context, вносим название созданного нами выше контекста - volume-set. Теперь можно регулировать громкость в настройках контекста, изменяя значение с 5 на другое, параллельно проверяя громкость в трубке
img
Многие пользуются возможностями, которые предоставляет виртуализация, но на 64-битной системе Windows – если Hyper-V включен, то в VirtualBox будет отсутствовать возможность создавать 64-битные виртуальные машины – учитывая, что потребность в создании таких виртуалок все-таки может возникнуть, то мы решили перечислить несколько способов как быстро включатьвыключать Hyper-V. Первый способ Первый способ также описывает процесс первоначального включения Hyper-V – сперва нужно открыть окно Windows Features и найти пункт Hyper-V (как на скриншоте ниже): Соответственно, если вам необходимо установить 64-битную машину на VirtualBox, нужно снять галочку Hyper-V и перезагрузить компьютер. Второй способ – с помощью PowerShell Сперва требуется запустить PowerShell (оболочка, разработанная Microsoft для конфигурации и автоматизации различных задач). Самое простое – ввести Powershell в строку поиска и кликнуть на нужное приложение. Далее, есть две команды, одна соответственно включает, а вторая отключает функционал виртуализации. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All - включение; Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All - соответственно выключение; Помните, что PowerShell должен быть запущен в elevated режиме – для этого просто нажмите правой кнопкой и запустите от имени администратора, иначе можете увидеть ошибку как на скриншоте ниже. Третий и четвёртый способы - через командную строку Важно – командную строку также необходимо запускать от имени администратора 3 способ -для включения нужно выполнить команду dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All , а для выключения, соответственно, нужно Enable заменить на Disable. Четвертый способ похож на предыдущий, только команды отличаются: Для включения – bcdedit /set hypervisorlaunchtype auto Для выключения - bcdedit /set hypervisorlaunchtype off Заключение Итак, мы привели в пример несколько возможных способов включения и выключения Hyper-V, для меня самым удобным является первый способ – через Windows Features. На мой личный вкус, возможности Hyper-V богаче, чем у VirtualBox, особенно в плане выделения ресурсов процессора, памяти, QoS и т.д. Однако, VirtualBox выгодно выделяется тем, что не требует включенной функции Intel Virtualization Technology (Intel VT) в BIOS.
img
Сегодня хотим рассказать про любопытный сценарий, которой наверняка может быть полезен в сфере E-commerce. Речь пойдет про автоматизацию клиентского обслуживания, а именно: /p> Клиент звонит в интернет – магазин и ему предлагают ввести номер заказа; Введенные абонентом значения по DTMF передаются в AGI скрипт; По номеру заказа, мы формируем SQL – запрос к базе данных, где храним информацию о заказах. Из соответствующей таблицы мы получаем статус заказа и имя клиента; Мы формируем строку, которую необходимо озвучить клиенту и отправляем ее на аудио-генерацию в сторону API Yandex.SpeechKit (TTS технология – text to speech); Получаем аудио файл от Yandex, декодируем его в нужный нам формат (.wav, 8k) и воспроизводим клиенту; Удаляем воспроизведенный файл и завершаем звонок клиента; На наш взгляд это любопытная автоматизация. Приступаем к настройке? :) Получение API - токена Yandex.SpeechKit Для знакомства с технологией Яндекс предоставляет бесплатный тестовый период в 1 месяц с момента отправки первого запроса. После этого, чтобы продолжить использование Yandex. SpeechKit Cloud нужно заключить договор. Подробности условия использования можно прочитать здесь. Первым делом перейдите в кабинет разработчика по ссылке https://developer.tech.yandex.ru и нажмите Получить ключ: Имя ключа - введите имя для ключа. Например, Asterisk + TTS; Подключение - выберите из списка SpeechKit Cloud; Запоминаем значение, которое выделено красным на скриншоте выше – это и есть ваш токен. Переходим к настройке AGI – скрипта. Создаем таблицу с заказами Создадим SQL – таблицу, в которой будем хранить данные о заказах. В лабораторных целях, мы развернем ее на том же хосте, что и IP – АТС Asterisk (+ это снизит задержку и процессинг по времени). Итак, вводим следующие команды в консоли сервера (предварительно подключитесь по SSH): use asteriskcdrdb; CREATE TABLE zakazy(name varchar(20),phone varchar(20),nomerzakaza varchar(20),status varchar(20)); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Александр", "79257777777", 300388, "Отправлен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Иван", "79251111111", 476656, "Оплачен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Сергей", "79252222222", 0089822, "Доставлен"); Мы создали и наполнили таблицу. Теперь необходимо создать пользователя, который сможет иметь SELECT – доступ к таблице: CREATE USER 'логин_mysql'@'localhost' IDENTIFIED BY 'пароль_mysql'; GRANT SELECT ON asteriskcdrdb.zakazy TO 'логин_mysql'; Запомните ваш логин и пароль и переходите к следующему шагу – адаптации скрипта AGI. Традиционно, комментарии к коду после двойного слеша //: AGI - скрипт Ниже представлена структура скрипта: #!/usr/bin/php -q <?php error_reporting(0); require('phpagi.php'); $agi = new AGI(); $result = $agi->get_data('custom/generate', 6000, 10); //принимаем DTMF от клиента; $number= $result['result']; //записываем в переменную введенный клиентом номер заказа; $hostname = "localhost"; // у нас localhost. У вас может быть IP адрес сервера, на котором хранится БД с заказами (настройте предварительно pg_hba.conf на удаленном хосте); $username = "логин_mysql"; // логин, который вы создали этапом ранее; $password = "пароль_mysql"; // пароль, который вы создали этапом ранее; $dbName = "asteriskcdrdb"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM zakazy WHERE `nomerzakaza`='$number';"; // подключаемся и парсим данные по номеру заказа; $res=mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $status = $row['status']; $name = $row['name']; // имя и статус, полученные из SQL пишем в переменные; }; $str = 'Дорогой '.$name.'! Статус вашего заказа '.$status.' Спасибо за обращение, всего доброго!'; // формируем строку, которую необходимо синтезировать; $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "ваш_токен","emotion" => "good", "text" => $str)); //описываем переменные, которые будем отправлять в сторону API Яндекса. Вы можете регулировать формат файла, локаль, спикера (мужской или женский голоса) и эмоциональный окрас. Заменить "ваш_токен" на ключ, полученный от API Yandex. SpeechKit Cloud; $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); // получаем аудио файл (сохраняем его как file1.wav); shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // выполняем преобразование аудио в нужный для Asterisk аудио-формат и копируем его в директорию /var/lib/asterisk/sounds/ru/custom/; shell_exec('chown asterisk:asterisk /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('chmod 775 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // даем файлу нужные пермишны; $agi->exec('Playback',"custom/output1"); // передаем в AGI команду проиграть полученный аудио – файл; shell_exec('rm -f /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('rm -f file1.wav'); // удаляем оба файла; Скачать скрипт AGI После загрузки файла, сохраните его с расширением .php Сохраните скрипт под именем tts.php в директории /var/lib/asterisk/agi-bin и дайте следующие команды в консоль сервера: dos2unix /var/lib/asterisk/agi-bin/tts.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/tts.php chmod 775 /var/lib/asterisk/agi-bin/tts.php Адаптируем функционал в «продакшн» Итак, первым делом, открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [tts_menu] exten => s,1,Answer() exten => s,2,AGI(tts.php) Очень хорошо. Сделаем вызов кастомного контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Нажимаем Submit и Apply Config. Мы хотим чтобы из главного IVR – меню клиент при нажатии 4 мог бы узнать статус своего заказа. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59