Захотелось использовать штатную функцию sayto() для отправки сообщения на колонку
У меня есть колонка Ирбис с облачным управлением.
Сейчас предлагается использовать Я.колонку либо для проговаривания сообщений с помощью уровня важности minMsgLevel, либо используя функцию callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>'раз-два-три'));
Заметил, что моя колонка может проговорить фразу, содержащую не более 100 символов.
Для произнесения длинных сообщений родилась функция:
//Скажем через Ирбис с учётом ограничения в 100 символов
function say_irbis($phrase)
{
if($phrase == '') return 0;
if(mb_strlen($phrase,'UTF-8')>100){ //если фраза > 100 букв, поделим на предложения
$phs = explode('.',$phrase);
foreach($phs as $ph){ //переберем предложения
if(mb_strlen($ph,'UTF-8')<100){
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$ph));
}else{
$ph = mb_strimwidth($ph, 0,99, "..."); //не получилось( обрежем
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$ph));
}
sleep(2);// на всякий случай
}
}else{ //скажем, как есть
callAPI('/api/module/yadevices','GET',array('station'=>1,'say'=>$phrase));
}
return 1;
}
Теперь прогноз погоды произносится нормально.
А потом захотелось использовать колонку как терминал, чтобы можно было использовать стандартную функцию sayto("hello",3,"Irbis")
Для этого сделал файлик \modules\terminals\tts\irbisnotifier.addon.php
<?php
class irbisnotifier extends tts_addon {
function __construct($terminal) {
$this->title="Yandex Irbis";
parent::__construct($terminal);
}
function say($phrase, $level = 0)
{
say_irbis($phrase);
return true;
}
}
Потом создал терминал Irbis с настройками TTC irbisnotifier
проверяем
sayto("приветики",5,"Irbis");
Спасибо за внимание
ps.
Так как у меня только одна колонка(, я прошил хардкодом ее номер в функции ('station'=>1)
Домодедово, Россия
На форуме: xor