Тем кто не знаком с созданием навыков, с начала рекомендую прочитать статью Как создать навык для голосового помощника Алиса от Яндекс на PHP
Ниже переведен рабочий код webhook`a для навыка "Хомяк повторюшка"
header('Content-type:application/json;charset=utf-8');
include __DIR__.'/vendor/autoload.php';
# удаляем сессию если она к нам придет
if(isset($_COOKIE[session_name()])){
unset($_COOKIE[session_name()]);
}
$in = new \alexstar\JsonMaker(file_get_contents('php://input'));
$out = new \alexstar\JsonMaker();
$out->version = '1.0';//$in->version;
$out->response->end_session = false;
$out->session->session_id = $in->session->session_id;
$out->session->message_id = $in->session->message_id;
$out->session->user_id = $in->session->user_id;
if (session_status() != PHP_SESSION_ACTIVE) {
# Запускаем сессию
session_id(md5('Sol'.$in->session->session_id . $in->session->skill_id));
session_start();
}
# в сессии храним переменную $_SESSION['intro'] если значение 0 то говорим приветствие
if(empty($_SESSION['intro']))$_SESSION['intro']=0;
if($in->request->command=='выход' || $in->request->command=='Выход'){
# ответ
$out->response->text = "Всего доброго, заходите еще!";
# Звук закрывающейся двери
$out->response->tts ='<speaker audio="alice-sounds-things-door-2.opus"> Всего доброго, заходите еще!';
# говорим что нужно закрыть диалог
$out->response->end_session = true;
}elseif($in->request->command=='что ты умеешь'|| $in->request->command=='чего ты умеешь' ){
$out->response->text = "Я умею повторять всё, что вы скажите, для выхода из навыка произнесите выход";
}elseif($in->request->command=='помощь' || $in->request->command=='Помощь'){
$out->response->text = "Навык повторяет всё, что вы говорите, для выхода из навыка произнесите выход";
}
else{
if($_SESSION['intro']===0){
# можно было не использовать сессии потому, как при запуске навыка приходит пустая строка и по ней можно судить что навык только запустили
# Приветствие
$_SESSION['intro']++;
$out->response->text = "Я хомяк повторюшка, всё что вы скажите я буду повторять, для выхода из навыка произнесите выход";
}else {
# отвечаем пользователю его фразой
$out->response->text = $in->request->command;
}
}
echo $out;
Вот и все :)
назад в раздел phpПт 23 Ноя 2018.