Hold писал(а):
Эх, да я в мажордомо полгода, в php и линуксе итого меньше. Вот недавно с винды на малину перешел. Можно код целиком? Посмотрел в HOOK_EVENT_SAY и темный лес. По поводу как формируется имя понял.
У меня примерно та же история, за исключением того, что Мажердомо уже почти 2 года стоит. И да - тоже недавно с Винды на Малинку перешёл. Целиком кода естественно нету. Есть намётки. Можно взять за образец модуль RHVoice. Сделать в /modules/ директорию dlnavoice. В него скопировать файл из директории rhvoice. Поменять
class dlnavoice extends module {
function dlnavoice() {
$this->name = "dlnavoice";
$this->title = "DLNAVoice";
$this->module_category = "<#LANG_SECTION_APPLICATIONS#>";
$this->checkInstalled();
}
Посмотреть функцию admin - убрать не нужные конфиги, добавить свои (если нужны)
$out['VOICE']=$this->config['VOICE']; - там где OUT это мы выводит на экран (в соответствующий темплейт) параметр VOICE. Наверное можно всё выкинуть для начала.
В функции оставить
Код: Выделить всё
function processSubscription($event, &$details) {
$this->getConfig();
if ($event == 'SAY' && !$details['ignoreVoice']) {
$level = $details['level'];
$message = $details['message'];
$cached_filename = ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
if (file_exists($cached_filename)) {
\\И вот тут берём $cached_filename и отправляем
$url='http://IPMDM/'.$cached_filename;
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');
}
}
}
Когда этот модуль будет инсталлироваться, он сделает subscribeToEvent($this->name, 'SAY');
Потом в phpmyadmin в таблице settings найти HOOK_EVENT_SAY и поставить у rhvoice priority=50
По идее теперь когда Мажордомо будет что-то произносить, то RHVoice закеширует сообщение, а DLNAVoice отправит этот файл на DLNA устройство. Но конечно всё это умозрительно и надо пробовать
Если этот код, вставленный куда-нибудь в сценарий, сможет отправить голосовое сообщение, то можно пытаться реализовать и то, что выше набрано
Код: Выделить всё
$message='какая-нибудь из фраз закешированных';
$cached_filename = ROOT . 'cached/voice/rh_' . md5($message) . '.wav';
$url='http://IPMDM/'.$cached_filename;
sg('MultiCastBathroom.playUrl',$url);
DebMes($url,'googlenotifier');