Установлено на ubuntu 16, плагин rhvoice рожает wav-файлы.
В каталог /lib веб-сервера положил файлик vlcvoice.php
Код: Выделить всё
<?php
/**
Установка VLC
"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" -I ntservice --ntservice-extraintf dummy -I ntservice --http-password=Parol --extraintf=http --http-port=8080
С паролем
start /D "C:\Program Files (x86)\VideoLAN\VLC\" vlc.exe -I ntservice --ntservice-install --ntservice-name=VLC --ntservice-extraintf=dummy --ntservice-options="-I ntservice --http-password=YourPassword --extraintf=http --http-port=8080
Без пароля
start /D "C:\Program Files (x86)\VideoLAN\VLC\" vlc.exe -I ntservice --ntservice-install --ntservice-name=VLC --ntservice-extraintf=dummy --ntservice-options="-I ntservice --extraintf=http --http-port=8080"
sc start vlc
Для удаления
start /D "C:\Program Files (x86)\VideoLAN\VLC\" vlc.exe -I --ntservice-uninstall --ntservice-name=VLC
$media="http://md64/cached/voice/rh_ac112f7951ece2dd36be25fe2393dd53.wav";
$mediaurl=urlencode($media);
$urlo='http://192.168.1.9:8080/requests/status.xml?command=in_play&input='.$mediaurl;
//$urlo='http://Parol@192.168.1.9:8080/requests/status.xml';
var_dump ($urlo);
///cached/voice/rh_ac112f7951ece2dd36be25fe2393dd53.wav
$otv=getURL($urlo,0);
*/
function sendtovlc($ph,$destination){
$compname=exec("hostname");
$terminal_rec=SQLSelectOne("SELECT * FROM terminals WHERE NAME LIKE '".DBSafe($destination)."'");
//var_dump($terminal_rec);
if ($terminal_rec['CANPLAY'] && $terminal_rec['HOST'] && $terminal_rec['PLAYER_TYPE'] == "vlcweb") {
$terminalport=$terminal_rec['PLAYER_PORT'];
$terminalip=$terminal_rec['HOST'];
$address=$terminal_rec['HOST'];}
else{debmes ("Not found terminal ".$destination);return 0;}
debmes ("Starting sendtovlc $ph $terminalip $terminalport");
$media="http://".$compname."/cached/voice/rh_".md5($ph).'.wav';
//взято из модуля rhvoice
$voice='Anna';
$cached_filename = ROOT . 'cached/voice/rh_' . md5($ph) . '.wav';
if (!file_exists($cached_filename)) {
$ex='echo "' . $ph . '" | RHVoice-test -p ' . $voice . ' -o '.$cached_filename ;
$ex_res=safe_exec($ex);
debmes("Creating wav.. ".$ex);
debmes($ex_res);
sleep(5);
if (!file_exists($cached_filename)) {
debmes ("No file created!!! ".$ph);
}
}
debmes("Media URL ".$media);
$mediaurl=urlencode($media);
$urlo="http://".$terminalip.":".$terminalport."/requests/status.xml?command=in_play&input=".$mediaurl;
debmes($urlo);
$otv=getURL($urlo,0);
if(!$otv){
debmes ("Error! Was not connected to ".$destination);}
}
надо поставить в файл common.class.php вызов функции sendtovlc, место находится до и после // LYSYY's code
Код: Выделить всё
if ($terminal_rec['LINKED_OBJECT'] && $terminal_rec['LEVEL_LINKED_PROPERTY']) {
$min_level=(int)getGlobal($terminal_rec['LINKED_OBJECT'].'.'.$terminal_rec['LEVEL_LINKED_PROPERTY']);
} else {
$min_level=(int)getGlobal('minMsgLevel');
}
if ($level < $min_level) {
return 0;
}
// LYSYY's code
debmes("call sendtovlc ".$destination." ".$ph);
sendtovlc($ph,$destination);
//
if ($terminal_rec['MAJORDROID_API'] && $terminal_rec['HOST']) {
$service_port='7999';
$in='tts:'.$ph;
$address=$terminal_rec['HOST'];
Работают say,sayto, sayreply при корректной настройке-должна стоять canplay в таблице terminals-это галка "может проигрывать медиаконтент"
Нужен плагин (От всей души благодарю его создателя Dark_Veter!) rhvoice