По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Предположим, у вас есть увесистый дистрибутив софта в формате .iso, гигабайт на 5, например, и вы хотите передать его через сеть партнеру. Вы загружаете его на FTP сервер и даете ссылку партнеру, мол «На, скачивай, дружище!». Ваш партнер скачивает его и работает с ним. Думаете этого достаточно? Нет. Сейчас объясним почему. p> Зачем сверять контрольную сумму? Дело в том, что при загрузке файла из сети файл может прилететь к вам побитым. Да –да, вы не ослышались. Любой .iso это так или иначе, набор блоков данных. И при скачивании, а особенно по нестабильному FTP, он может «крашнуться». И чтобы избежать этого, используется следующий алгоритм передачи файла. Его последовательность такова: Владелец файла считает контрольную сумму рабочего файла (по MD5, например); Загружает файл на публичное хранилище и передает контрольную сумму получателю файла; Получатель файла скачивает файл, считает его контрольную сумму на своей стороне и сверяет ее с оригинальной, которую посчитал владелец файла; Получатель и Владелец кидают смешные стикеры в Telegram друг другу из стикерпака про лягушку Пепе. Как работает контрольная - простым языком Контрольная сумма - результат некой хэш – функции. Запомнили. Далее, что такое хэш – функция? Это функция, которая получает на вход массив данных, «прокручивает» эти данные по определенному алгоритму и дает на выходе битовую строку, длина которой задана заранее. Не вдаваясь в подробности сложных алгоритмов, так это и работает: Массив данных на вход (файл); Магия внутри; Контрольная сумма на выходе! Как рассчитать контрольную сумму? Будем использовать криптографическую функцию MD5. Скачиваем утилиту WinMD5Sum по ссылке: https://sourceforge.net/projects/winmd5sum/. Установите ее и идем дальше. Итак, вот мой заветный дистрибутив. Лежит в папке: Запускаем WinMD5Sum: Тут все предельно просто. Просто в поле File Name выбираем наш дистрибутив и нажимаем кнопку Calculate. Зачастую, как только вы выберите файл в поле File Name через кнопку поиску (три точки), то подсчет хэша начнется без нажатия на кнопку Calculate. Огонь. Копируйте значение из поля MD5 Sum и сохраняйте себе отдельно. Теперь, по легенде, мы берем этот файл и отправляем другу/партнеру/коллеге. Выкладываем файл на FTP, а контрольную сумму передаем ему отдельно – по смс, емаил, в чате. Далее, давайте рассмотрим процесс с точки зрения получателя файла. Как сверить контрольную сумму? Мы получили файл и его контрольную сумму. Как ее проверить? Все так же, как и при расчете контрольной суммы! Сначала считаем контрольную сумму скачанного файла: С одним лишь отличием. Теперь мы берем контрольную сумму которая была посчитана ранее, вставляем ее в поле Compare и нажимаем кнопку Compare: Вот и все. Наша контрольная сумма совпала, а это значит, что файл во время загрузки поврежден не был. Иначе, мы бы получили вот такое значение:
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 добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
img
Процесс русификации интерфейса FusionPBX не является трудоемким, но, для русификации вам скорее всего придется переустановить FusionPBX с нуля - дело в том, что разработчики добавили русский перевод только в master ветку, а не в stable. Русификация Поэтому перед запуском установочного скрипта FusionPBX (как это делается, вы можете ознакомиться в нашей статье), необходимо провести некоторые манипуляции с ним: Открыть файл любым текстовым редактором по пути usr/src/fusionpbx-install.sh/centos/resources/config.sh - мы будем использовать vim. vim usr/src/fusionpbx-install.sh/centos/resources/config.sh Далее строчку system_branch нужно поменять на master и запустить скрипт, как описано в нашей статье. После установки необходимо зайти в веб-интерфейс, в раздел Home → Account Settings и в поле Language выбрать Russian [ru-ru]. Следующим шагом переходим в Advanced → Menu Manager, кликаем на иконку карандаша справа и меняем установку языка на ru-ru: После чего необходимо перейти в раздел Advanced → Upgrade, выбрать сброс настроек меню (как на скриншоте ниже) и нажать Execute: После чего необходимо будет перезайти в веб-интерфейс и вы должны будете увидеть его на русском!
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59