Почти во всех ответах с вики есть часть ответа в скобках. Алиса не всегда читает ее так как прочитал бы человек. Например, по запросу что такое китай:Svetлая писал(а): ↑Пн май 07, 2018 12:54 amСпойлерПоказатьКод: Выделить всё
$keywords = preg_split("/[\s,]+/",$original); // помещаем запрос в массив $totalz=count($keywords); for($i=2;$i<$totalz;$i++) { // i=2 отсекаем голосовую команду (шаблон). в моем случае "что такое" или "кто такой". Значение i= равна кол-ву слов в голосовой комманде. $message_textz=$message_textz." ".$keywords[$i]; } say("$message_textz,ожидайте,ищу по вики ",2); // Установка свойства объекта на основании полученной переменной sg("Объект.Свойство",$message_textz); context_getuser(); context_clear(); context_activate(ID); $zap="$message_textz"; $zapurl=urlencode($zap); $url='https://ru.wikipedia.org/w/api.php?action=opensearch&search='.$zapurl.'&prop=info&format=xml&inprop=url'; $answ=file_get_contents($url); $data_xml = simplexml_load_string($answ); //загружаем ответ от вики в массив $otvet=$data_xml->Section[0]->Item[0]->Description[0]; //получаем первый найденный вариант $description = $data_xml->Section[0]->Item[0]->Description[0]; //получаем определение слова if (empty($description)) { //если ничего не нашлось say ("по прямому запросу ничего нет. уточните запрос",2); for ($i=1; $i<50;) { // максимальное количество выводимых найденых вариантов запросов. можно сократить. $description = $data_xml->Section[0]->Item[$i]->Description[0]; //получаем определение слова if (!empty($description)) { //если определение есть, продолжаем $otvet2=$data_xml->Section[0]->Item[$i]->Text[0]; // записываем следующий вариант запроса //удаление спецсимволов $otvet2=iconv("UTF-8","CP1251//IGNORE",$otvet2); $otvet2=iconv("CP1251","UTF-8",$otvet2); $otvet2="Вариант ".$i.":".$otvet2." "; // подготавливаем для озвучивания/ вывода на экран say($otvet2,2); $i++; } else { say("Больше вариантов нет.",2); $i=100; } } } else { //удаление спецсимволов $otvet=iconv("UTF-8","CP1251//IGNORE",$otvet); $otvet=iconv("CP1251","UTF-8",$otvet); say($otvet,2); //Сохраняем запросы в файл. это лог. на работу скрипта не влияет. можно удалить $data = fopen('wiki.xml', 'a'); //открываем файл для до записи 'a' для перезаписи 'w' $message_textz = "\n#######\n".$message_textz." = ".$otvet."\n\n"; fwrite($data, $message_textz); //записываем результат выполнения fclose($data); //закрываем }
Кита́й (Кита́йская Наро́дная Респу́блика, КНР; кит. трад. 中華人民共和國, упр. 中华人民共和国, пиньинь: Zhōnghuá Rénmín Gònghéguó, палл.: Чжунхуа Жэньминь Гунхэго) — государство в Восточной Азии.
Можно обрезать часть ответа в скобках. Для этого после 46 строчки перед say($otvet,2); надо вписать $otvet = preg_replace("/\(.*\)/i", "", $otvet);
и все что идет в скобках будет обрезано и останется: Китай — государство в Восточной Азии.