По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Друг, в статье быстро покажем, как заставить звонить IP – телефон Grandstream GXP1610 в связке с IP – АТС Asterisk. Настройки выполним с помощью графической оболочки FreePBX 14. Let's get it started!
$dbName_ecom = "to-www_ecom";
$GoodID = "2524508967";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName_ecom) or die(mysql_error());
$query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';";
$res_ecom=mysql_query($query_ecom) or die(mysql_error());
$row_ecom = mysql_fetch_array($res_ecom);
echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧
Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽';
$dbName_ecom = "to-www_02";
$GoodID = "2524508967";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName_ecom) or die(mysql_error());
Пошаговое видео
Настройка FreePBX
Открыв FreePBX переходим в меню Applications → Extensions, нажимаем + Add Extension и создаем сущность вида Chan_Sip. Внутри страницы настройки:
User Extension - желаемый номер для аппарата;
Display Name - имя, которое увидим на дисплее телефонного аппарата;
Обратите внимание, по умолчанию, chan_sip слушает пор 5160!
Из поля Secret скопируйте пароль, который FreePBX сгенерировал для нового номера. Сохраняем настройки.
Настройка GXP1610
Следующее, что нам предстоит сделать – выяснить IP – адрес (если он получил его по протоколу DHCP), который наш подключенный в сеть GXP1610 получил. Все очень просто – на дисплее телефона нажмите на кнопку NextScr - вот и наш IP – адрес.
Открываем новую вкладку в браузере и попадаем на страницу графической оболочки (web gui) нашего Grandstream GXP1610. Вводим логин и пароль.
По умолчанию, логин для входа - admin, пароль такой же - admin
SIP – регистрации на телефоне нет – исправляем. Открываем Accounts → General Settings и начинаем заполнять поля:
Account Name - имя учетной записи. Например, Мерион Нетворкс;
SIP Server - IP – адрес сервера Asterisk и через двоеточие порт, на котором слушает chan_sip. Например, 192.168.2.19:5160;
Outbound Proxy - аналогично сип – серверу, IP – адрес сервера Asterisk и через двоеточие порт;
SIP User ID - номер телефона, который создали на FreePBX. Например, 155;
Authenticate ID - аналогично как выше, внутренний номер. Например, 155;
Authenticate Password - пароль, который вы скопировали из поля Secret на этапе настройки FreePBX;
Name - указываем тоже самое, что и в поле Account Name;
Account Display - рекомендуем выбрать User ID, чтобы на дисплее телефона отображался номер, а не имя. Все-таки, дисплей не очень большой :);
Нажимаем Save and Apply
Проверка
В меню навигации в WEB – интерфейсе управления телефоном нажмите на Status. Если в опции SIP registration на зеленом фоне указано Yes, то телефон успешно зарегистрирован.
Не получилось? Напиши свой вопрос в комментариях – поможем :)
Друзья, сегодня речь пойдет о синтезе речи в 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.
В статье расскажем, как работать с основными фичами рабочего места агента и супервизора в Cisco - Finesse. Продукт создан для работы с "сердцем" контактных центров на базе UCCX и UCCE.
Подключаемся к Extension Mobility
Чтобы подключиться к Extension Mobility, с телефонного аппарата:
Нажмите на кнопку Services;
Вводим Used ID и PIN;
Подтверждаем операцию.
После этого, телефон перезагрузится и будет с новым профилем и номером. Разлогиниться можно в аналогичной последовательности.
Запуск агентского приложения Finesse
Запускаем совместимый интернет браузер;
Вводим URL адрес вашего Finesse приложения;
Подключившись к форме авторизации, вводим:
ID - ваш агентский идентификатор;
Password - пароль;
Extension - номер, под которым будет работать агент;
Подключаемся.
Готово. Если вам нужно выйти из приложения, то под залогиненным пользователем нужно изменить статус работы на "Не готов", "Конец смены" или аналогичный статус у вас, который обозначает окончание работы. Затем, нажмите в правом верхнем углу кнопку Sign Out.
Как выглядит интерфейс менеджера в Finesse?
Как выглядит интерфейс агента/оператора в Finesse?
Статистика по очереди показывает агенту количество звонящих в КЦ людей, ожидающих ответа в очереди. Так же сегмент покажет самое длинное время ожидания ответа в очереди.
В зоне "Отчет по команде", агент может видеть своих коллег, их статусы готовности, а также причину неготовности в виде числового кода.
Состояния агентов
Тут все достаточно просто. Если агент не готов, то его статус выглядит вот так (красный индикатор):
Если агент готов к работе, то зеленый индикатор будет в зоне статус оператора - все просто:
Меняем статус агента
Как вы могли заметить, рядом с индикатором состояния агента, есть небольшая стрелочка, которая смотрит вниз - это не что иное как выпадающий список статусов, при нажатии на который, вы сможете выбрать один из статусов работы/перерыва, доступный вам:
Ответить на звонок
Первое - чтобы принимать вызовы, вам необходимо быть в статусе "Готов". Далее, когда вызов прилетает в десктоп оператора, агент автоматически резервируется. Зона "Статус звонка", которую мы обозначили на скриншоте ранее в разделе "Как выглядит интерфейс агента/оператора в Finesse?" расширяется и отображается различные параметры звонка для агента: Чтобы ответить на звонок, нужно нажать на соответствующую кнопочку "Answer". Она зеленого цвета.
Обработка звонка в Finesse
Во время разговора с клиентом агент видит:
Трансфер звонка
Чтобы выполнить трансфер звонка:
Нажмите на кнопку "Consult", как показано на скриншоте выше;
Введите внутренний номер, с которым необходимо переговорить;
Переговорите с адресатом. Если он готов принять звонок, нажмите кнопку "Transfer".
Конференция
Чтобы собрать конференцию звонка:
Нажмите на кнопку "Consult";
Наберите номер;
Нажмите "Call";
Переговорите с контактом. Если все ОК, нажмите кнопку "Conference"
Выполнить исходящий вызов
Чтобы выполнить исходящий звонок из Cisco Finesse:
Установите свой статус в "Not Ready", чтобы перестать принимать входящие звонки;
Нажмите на кнопку "Make a New Call"
Выберите адресата звонка среди листа контактов или наберите номер с помощью специальной клавиатуры:
Нажмите "Call";
Чтобы завершить вызов, нажмите "End".