Ой, крутяк получился
Мне очень нравится. Алиса теперь всех по телефону задалбливает
Выкладываю код для понимания. - Утреннее приветствие.
По сути, все что до этого Алиса говорила в колонку, теперь пофайлово объединяет в один звуковой файл alicesay.mp3 и проигрывает по телефону.
Я не программист, поэтому за код не пинайте. Если можно как-то упростить, сделать покрасивше - буду только рад.
Код: Выделить всё
$calltmp = "/var/spool/asterisk/tmp/alicesay";
$calldir = "/var/spool/asterisk/outgoing/alicesay";
$callnumber = "SIP/6"; //Указываем внутренний на который звонить. Или внешний через донгл: Dongle/dongle0/holdother:0505555555
$dirmessage = "/var/www/mjd/cached/voice/";
$message = ("alicesay");
$mesend = ("_yandex");
$message1=("");
$message2=("");
$message3=("");
$message4=("");
$message5=("");
$message6=("");
$message7=("");
$message8=("");
$message9=("");
$message10=("");
say("Доброе утро ",1);
$message1 = (md5("Доброе утро "). $mesend);
say("сегодня. ". gg("ThisComputer.Day")." .". gg("ThisComputer.DateDAlt")." .".gg("ThisComputer.MonthAlt"),1);
$message2 = (md5("сегодня. ". gg("ThisComputer.Day")." .". gg("ThisComputer.DateDAlt")." .".gg("ThisComputer.MonthAlt")). $mesend);
say("Московское время. ". (int)date('G',time()). ".часов". ".". chti((int)date('i',time()),'минута','минуты','минут'),1);
$message3 = (md5("Московское время. ". (int)date('G',time()). ".часов". ".". chti((int)date('i',time()),'минута','минуты','минут')). $mesend);
//---------------------------------------------------Погода------------------
$status="";
$status.="На улице ".gg("Moscow.Type").".";
say($status,1);
$message4 = (md5($status). $mesend);
$status="";
$w=round(gg("sensorTemp63.temp"));
if ($w < 0){
$tempw=($w*-1);
}else{
$tempw=$w;
}
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if(($tempw == 0) or ($tempw >= 5 and $tempw <= 9)){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if(($tempw >= 2) and ($tempw <= 4)){
$tempcels= градуса ; }
}
//$tNew = abs((float)getGlobal('Moscow.Temp'));
$status.=' Температура '.getGlobal('sensorTemp63.temp')." ".$tempcels." цельсия";
say($status,1);
$message5 = (md5($status). $mesend);
$tempw="";
$tempcels="";
$status="";
$w=round(gg("Moscow.Temp"));
if ($w < 0){
$tempw=($w*-1);
}else{
$tempw=$w;
}
if($tempw >= 11 and $tempw <= 14){
$tempcels=" градусов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if(($tempw == 0) or ($tempw >= 5 and $tempw <= 9)){
$tempcels= градусов ; }
if($tempw == 1){
$tempcels= градус ; }
if(($tempw >= 2) and ($tempw <= 4)){
$tempcels= градуса ; }
}
//$tNew = abs((float)getGlobal('Moscow.Temp'));
$status.=' По прогнозу '.getGlobal('Moscow.Temp')." ".$tempcels." цельсия";
say($status,1);
$message6 = (md5($status). $mesend);
$tempw="";
$tempcels="";
$status="";
$h=round(gg("Moscow.Humidity"));
$tempw=$h;
if($tempw >= 11 and $tempw <= 14){
$tempcels=" процентов ";
}
else{
while ($tempw > 9){
$tempw=$tempw-10;
}
if(($tempw == 0) or (($tempw >= 5) and ($tempw <= 9))){
$tempcels= процентов ; }
if($tempw == 1){
$tempcels= процент ; }
if(($tempw >= 2) and ($tempw <= 4)){
$tempcels= процента ; }
}
$status.="Относительная влажность ".gg("Moscow.Humidity")." ".$tempcels. ".";
say($status,1);
$message7 = (md5($status). $mesend);
$tempw="";
$tempcels="";
$status="";
$pressure=(float)gg("Moscow.Pressure");
if ($pressure<746) {
$status.=' Атмосферное давление пониженное';
} elseif ($pressure>750) {
$status.=' Атмосферное давление повышенное.';
} else {
$status.=' Атмосферное давление нормальное.';
}
say($status,1);
$message8 = (md5($status). $mesend);
$status="";
// ветер
$WindSpeed=(float)gg("Moscow.WindSpeed");
if ($WindSpeed<1) {
$status.=' Ветра нет.';
} elseif ($WindSpeed<3) {
$status.=' Ветер слабый.';
} elseif ($WindSpeed<6) {
$status.=' Ветер сильный.';
} elseif ($WindSpeed<9) {
$status.=' Ветер очень сильный.';
} else {
$status.=' Ветер очень! Очень сильный.';
}
$status.=' Направление '.getGlobal('Moscow.WindDir').'.';
say($status,1);
$message9 = (md5($status). $mesend);
if (gg("Moscow.Rain") > 0){
say("Внимание, обещают дождь, не забудьте зонтик");
$message10 = (md5("Внимание, обещают дождь, не забудьте зонтик"). $mesend);
}
//---------------------------------------------------------------------------
$asterisk=exec("sudo cat $dirmessage$message1.mp3 $dirmessage$message2.mp3 $dirmessage$message3.mp3 $dirmessage$message4.mp3 $dirmessage$message5.mp3> $dirmessage$message6.mp3 $dirmessage$message7.mp3 $dirmessage$message8.mp3 $dirmessage$message9.mp3 $dirmessage$message10.mp3 $dirmessage$message11.mp3 > $dirmessage$message.mp3");
$callfile = fopen ($calltmp, "w");
fwrite ($callfile,"Channel: $callnumber\n");
fwrite ($callfile,"Callerid: 299\n");
fwrite ($callfile,"MaxRetries: 2\n");
fwrite ($callfile,"RetryTime: 60\n");
fwrite ($callfile,"WaitTime: 60\n");
fwrite ($callfile,"Context: majordomo\n");
fwrite ($callfile,"Extension: s\n");
fwrite ($callfile,"Priority: 1\n");
fwrite ($callfile,"Set: playfile=$dirmessage$message\n");
fwrite ($callfile,"Archive: Yes\n");
fclose($callfile);
copy ($calltmp,$calldir);
function chti($string, $ch1, $ch2, $ch3){
$ff=Array('0','1','2','3','4','5','6','7','8','9');
if(substr($string,-2, 1)==1 AND strlen($string)>1) $ry=array("0 $ch3","1 $ch3","2 $ch3","3 $ch3" ,"4 $ch3","5 $ch3","6 $ch3","7 $ch3","8 $ch3","9 $ch3");
else $ry=array("0 $ch3","1 $ch1","2 $ch2","3 $ch2","4 $ch2","5 $ch3"," 6 $ch3","7 $ch3","8 $ch3"," 9 $ch3");
$string1=substr($string,0,-1).str_replace($ff, $ry, substr($string,-1,1));
return $string1;
}