1. Go to this page and download the library: Download isamarin/alisa library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
isamarin / alisa example snippets
$bot = new Alisa('NAME');
//Такой используется по умолчанию
$bot->setDictionaryPath($_SERVER['DOCUMENT_ROOT'] . '/dicts/');
$bot = new Alisa('NAME');
//Такой используется по умолчанию
$bot->setDictionaryPath($_SERVER['DOCUMENT_ROOT'] . '/sessions/');
//Создаем бота. Аргумент – название навыка
$bot = new Alisa('myawesomebot');
//Создаем триггер, в качестве аргумента строка с уникальным именем
$helloTrigger = new Trigger('HELLO');
//Привязываем к триггеру токены – в данном случае в одну группу.
//Токены – ключевые слова, объединенные в группы
$helloTrigger->linkTokens(['привет','здравствуйте','приветсвую']);
$bayTrigger = new Trigger('bay');
$bayTrigger->linkTokens(['пока','до свидания','прощай']);
//Привязываем триггеры боту
$bot->addTrigger($helloTrigger,$bayTrigger);
//Отправляем ответ, если распознан $helloTrigger
$bot->sendResponse($helloTrigger,static function(){
//$answer - экземпляр отправляемого ответа
$answer = new Response();
$answer->addText('Привет!');
$answer->addText('Доброго времени суток!');
//обязательно возвращаем объект Response
return $answer;
);
//Отправляем ответ, если распознан $bayTrigger
$bot->sendResponse($bayTrigger,static function(){
$answer = new Response();
$answer->addText('Прошай!');
$answer->addText('Всего доброго');
//обязательно возвращаем объект Response
return $answer;
);
//Будет вызван автоматически, при первом обращении пользователя к навыку
$helloTrigger = new Trigger('HELLO');
$helloTrigger->setAsInit(true);
//Будет вызыван автоматически, если ну удалось распознать запрос
$mistakeTrigger = new Trigger('MISTAKE');
$mistakeTrigger->setAsMistake(true);
//Отправляем ответ, если распознан $mistakeTrigger
$bot->sendResponse($mistakeTrigger,static function(){
$answer = new Answer();
$answer->addText('Не удалось понять вашу команду :( ');
return $answer;
);
// Декларируем триггеры
$nameTrigger = new Trigger('NAME');
$sNameTrigger = new Trigger('SECOND_NAME');
$yoTrigger = new Trigger('YEARS');
$personTrigger = new Trigger('PERSON');
// Назначаем токены для триггера
$nameTrigger->setTokens(['давай','хочу','может'],['знакомиться','познакомиться','представлюсь']);
// Привязываем следующие триггеры
$nameTrigger->nextDelegate($sNameTrigger);
$sNameTrigger->nextDelegate($yoTrigger);
$yoTrigger->nextDelegate($personTrigger);
// Обрабочтик запроса. Сработает если пользователь произнес "Давай познакомимся"
$bot->sendResponse($nameTrigger,static function() use ($bot){
$answer = new Response();
$answer->addText('Какое твое имя?');
return $answer;
});
// После шага $nameTrigger сработает обработчик $sNameTrigger
$bot->sendResponse($sNameTrigger,static function() use ($bot){
$answer = new Response();
$answer->addText('А фамилия?');
return $answer;
});
// После шага $sNameTrigger сработает обработчик $yoTrigger
$bot->sendResponse($yoTrigger,static function() use ($bot){
$answer = new Response();
$answer->addText('Сколько тебе лет?');
return $answer;
});
//$personTrigger – назначен как следующий триггер после $yoTrigger
$bot->sendResponse($personTrigger,static function() use ($bot){
//В качестве аргумента строка, уникальное название триггера
$name = $bot->getTriggerData('NAME');
$sName = $bot->getTriggerData('SECOND_NAME');
$yo = $bot->getTriggerData('YEARS');
$answer = new Answer();
$answer->addText("Хорошо {$name} {$sName}, я тебя запомнила, и что тебе {$yo} лет – тоже");
return $answer;
);
//$personTrigger – назначен как следующий триггер после $yoTrigger
$bot->sendResponse($personTrigger,static function() use ($bot){
$answer = new Answer();
$answer->addText('Один вариант ответа','Од!ин вари!ант отв!ета');
return $answer;
);
$bot->sendResponse($bullshitTrigger,static function() {
$answer = new Answer();
$answer->addText('Да не может быть!');
$answer->addText('Чушь собачья!');
$answer->addText('Не верю!');
return $answer;
);
$bot->sendResponse($helloPerson,static function() {
$answer = new Answer();
$answer->addText('Может познакомимся?');
$buttonY = new Button('Давай');
$answer->addButton($button);
$buttonN = new Button();
$buttonN->setTitle('Неа');
return $answer;
);
$bButton = new Button('Это кнопка');
//Будет отображена как кнопка, под диалогом. Со следующем ответом отображена не будет, если ее не привязатели к ответу Response
$bButton->setHide(true);
$bLink = new Button('Это кнопка, но как ссылка')
//Будет отображена в ответе. Даже если пользователь выбирал что-то другие, эта ссылка так и останется в сообщении.
$bButton->setHide(false);
$bButton = new Button('Это кнопка');
* * *
// Можно установить заголовок не в конструкторе, а в методе. Можно использовать как способ изменеия заголовка имеющейся кнопки, тем самым создавая вариативность
$bButton->setTitle('Это все еще кнопка')
// К кнопке можно добавить ссылку. При клике на нее произойдет переход по адресу в браузере.
$bButton->addLink('www.SITENAME.DOMAIN');
// Кнопке можно добавить обработчик какого-нибудь тригера. При клике на кнопку бот в первую очередь проверяет есть ли связанный Триггер для кнопки, и если есть – вызывает именно его.
$bButton->linkTrigger(Trigger $trigger);
//Кнопке можно передать какие-нибудь данные, которые можно будет забрать и использовать, если пользователь нажимал на эту кнопку.
$bButton->addPayload(['DATA'=>'SOME_DATA']);
$bot->sendResponse($firstRequest,static function() use($bot) {
* * *
$bot->storeCommonData('Черный чай','TEA');
$bot->getCommonData('TEA'); // Вернет "Черный чай", в т.ч. если пользователь уже перешел к другому запросу
* * *
);
$bot->sendResponse($secondRequest,static function() use($bot) {
* * *
$bot->getCommonData('TEA'); // Вернет "Черный чай", в т.ч. если пользователь уже перешел к другому запросу
* * *
);
//Допустим что код триггера $chooseMeds – "MEDS"
$bot->sendResponse($chooseMeds, static function () use ($bot) {
$answer = new Response();
//Проверяем, это первичный запрос или цикл?
if ( ! $bot->isRepeatedRequest()) {
//Нет, значит это первичный запрос со стороны пользователя, предлагаем выбор
$answer->addText('Какую таблетку ты выберешь, Нео?');
//Задаем циклирование, результат будем проверять в этом же триггере
$bot->setRepeat(true);
} else {
//Неправильный выбор?
if ($bot->getTriggerData('MEDS') !== 'Синяя') {
$answer->addText('Неверный выбор, Нео');
//Задать цикл
$bot->setRepeat(true);
} else {
//Все ок, выход из триггера
$answer->addText('Ты сделал правильный выбор о-о');
}
}
return $answer;
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.