Создаем навык "Хомяк повторюшка" для Алисы на PHP

Алиса это умеет

Тем кто не знаком с созданием навыков, с начала рекомендую прочитать статью Как создать навык для голосового помощника Алиса от Яндекс на 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.