Skip to content

Commit

Permalink
v-1.1.1
Browse files Browse the repository at this point in the history
Исправления и улучшения

Добавлено локальное хранилище для SmartApp.
Исправлены опечатки и ошибки
  • Loading branch information
ma.mochalov committed Mar 30, 2021
1 parent 9ecf6e7 commit b782e5b
Show file tree
Hide file tree
Showing 31 changed files with 353 additions and 35 deletions.
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
Все заметные изменения в u_bot задокументированы в этом файле с использованием принципов [Keep a CHANGELOG](http://keepachangelog.com/).


## [1.1.1] - 2021-03-13
## [1.1.1] - 2021-03-29

### Добавлено

* Unit тесты
* Результат выполнения запроса теперь класс, а не массив
* Отслеживание изменений(Changelog)
* Для карточек добавлена возможность задавать свой шаблон
* Демка, демонстрирующая возможность указания своего обработчика для подключения к бд
* Для Сбер SmartApp была добавлена возможность локального хранения данных(данные сохраняются в бд Сбера)

### Исправлено

Expand Down
51 changes: 51 additions & 0 deletions demo/skills/userDbConnect/controller/StandardController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php
/**
* Стандартный пример приложения.
* Отвечает на команды:
* - Привет
* - Пока
* - Список
* - Карточка
*
* Class StandardController
*/
class StandardController extends MM\bot\controller\BotController
{
public function action($intentName): void
{
switch ($intentName) {
case WELCOME_INTENT_NAME:
$this->text = 'Привет';
$this->buttons->btns = ['Пример кнопки галереи'];
$this->buttons->links = ['Пример ссылки для изображения'];
break;

case HELP_INTENT_NAME:
$this->text = 'Помощь';
break;

case 'bigImage':
$this->text = '';
$this->tts = 'Большая картинка';
$this->card->add('565656/78878', 'Заголовок изображения', 'Описание изображения');
break;

case 'list':
$this->tts = 'Галерея из нескольких изображений';
$this->card->title = 'Галерея';
$this->card->add('565656/78878', 'Элемент с картинкой"', 'Описание изображения');
$this->card->add(null, 'Элемент без изображения', 'Описание изображения');
$this->card->button->addBtn('Текст в footer');
break;

case 'by':
$this->text = 'Пока пока!';
$this->isEnd = true;
break;

default:
$this->text = 'Команда не найдена!';
break;
}
}
}
166 changes: 166 additions & 0 deletions demo/skills/userDbConnect/dbConnect/DbConnect.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
<?php

use MM\bot\api\request\Request;
use \MM\bot\models\db\IModelRes;
use MM\bot\models\db\QueryData;

class DbConnect extends \MM\bot\models\db\DbControllerModel
{
/**
* Переменная, отвечающая за отправке curl запросов
* @var Request
*/
private $query;

public function __construct()
{
parent::__construct();
/**
* Будем отправлять запрос на какой-то сервис
*/
$this->query = new Request();
$this->query->url = 'https://query.ru/query';
}

/**
* Приводим полученный результат из-запроса к требуемому виду.
* В данном случае, ожидаем что полученные данные будут вида:
* [
* 'key' => 'value'
* ]
*
* @param IModelRes|null $res
* @return mixed|null
*/
public function getValue(?IModelRes $res)
{
return $res->data;
}

/**
* Отправляем запрос на получение данных
*
* @param array $select
* @param bool $isOne
* @return IModelRes
*/
public function select(array $select, bool $isOne = false): IModelRes
{
$this->query->post = [
'type' => 'select',
'table' => $this->tableName,
'select' => $select
];
$res = $this->query->send();
if ($res['status']) {
if ($isOne) {
return (new IModelRes(true, $res['data'][0]));
} else {
return (new IModelRes(true, $res['data']));
}
}
return (new IModelRes(false, null, $res['err']));
}

/**
* Отправляем запрос на добавление данных
*
* @param QueryData $insertData
* @return mixed|IModelRes
*/
public function insert(QueryData $insertData)
{
$this->query->post = [
'type' => 'insert',
'table' => $this->tableName,
'data' => $insertData
];
$res = $this->query->send();
if ($res['status']) {
return (new IModelRes(true, $res['data']));
}
return (new IModelRes(false, null, $res['err']));
}

/**
* Выполняем запрос на обновление данных
*
* @param QueryData $updateData
* @return mixed|IModelRes
*/
public function update(QueryData $updateData)
{
$this->query->post = [
'type' => 'update',
'table' => $this->tableName,
'data' => $updateData
];
$res = $this->query->send();
if ($res['status']) {
return (new IModelRes(true, $res['data']));
}
return (new IModelRes(false, null, $res['err']));
}

/**
* Выполняем запрос на сохранение данных.
* Тут сть в том, что если данных для обновления нет, то будет добавлена новая запись.
*
* @param QueryData $insertData
* @param bool $isNew
* @return mixed|IModelRes
*/
public function save(QueryData $insertData, bool $isNew = false)
{
$this->query->post = [
'type' => 'save',
'table' => $this->tableName,
'data' => $insertData
];
$res = $this->query->send();
if ($res['status']) {
return (new IModelRes(true, $res['data']));
}
return (new IModelRes(false, null, $res['err']));
}

/**
* Выполняем запрос на удаление данных
*
* @param QueryData $deleteData
* @return mixed|IModelRes
*/
public function delete(QueryData $deleteData)
{
$this->query->post = [
'type' => 'delete',
'table' => $this->tableName,
'data' => $deleteData
];
$res = $this->query->send();
if ($res['status']) {
return (new IModelRes(true, $res['data']));
}
return (new IModelRes(false, null, $res['err']));
}

/**
* Выполняем произвольный запрос
*
* @param string $sql
* @return mixed|IModelRes
*/
public function query(string $sql)
{
$this->query->post = [
'type' => 'query',
'table' => $this->tableName,
'query' => $sql
];
$res = $this->query->send();
if ($res['status']) {
return (new IModelRes(true, $res['data']));
}
return (new IModelRes(false, null, $res['err']));
}
}
14 changes: 14 additions & 0 deletions demo/skills/userDbConnect/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php
require_once __DIR__ . '/../../../src/MM/bot/init.php';
require_once __DIR__ . '/controller/StandardController.php';
require_once __DIR__ . '/dbConnect/DbConnect.php';

$bot = new MM\bot\core\Bot();
$bot->initTypeInGet();
$bot->initConfig(include __DIR__ . '/../../config/skillDefaultConfig.php');
$bot->initParams(include __DIR__ . '/../../config/skillDefaultParam.php');
$logic = new StandardController();
\MM\bot\core\mmApp::$userDbController = new DbConnect();
$bot->initBotController($logic);
//echo $bot->run();
$bot->test();
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"type": "library",
"homepage": "https://www.maxim-m.ru",
"license": "MIT",
"version": "1.1.0",
"version": "1.1.1",
"authors": [
{
"name": "Maxim-M",
Expand Down
1 change: 1 addition & 0 deletions src/MM/bot/api/TelegramRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ public function call(string $method): ?array
* - 'description' => string
* ]
* @api
* @throws Exception
*/
public function sendMessage($chatId, string $message, array $params = []): ?array
{
Expand Down
3 changes: 0 additions & 3 deletions src/MM/bot/api/YandexImageRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ class YandexImageRequest extends YandexRequest
*/
public function __construct(?string $oauth = null, ?string $skillId = null)
{
if ($oauth === null) {
$oauth = mmApp::$params['yandex_token'] ?? null;
}
if ($skillId === null) {
$skillId = mmApp::$params['app_id'] ?? null;
}
Expand Down
3 changes: 0 additions & 3 deletions src/MM/bot/api/YandexSoundRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ class YandexSoundRequest extends YandexRequest
*/
public function __construct(?string $oauth = null, ?string $skillId = null)
{
if ($oauth === null) {
$oauth = mmApp::$params['yandex_token'] ?? null;
}
if ($skillId === null) {
$skillId = mmApp::$params['app_id'] ?? null;
}
Expand Down
4 changes: 3 additions & 1 deletion src/MM/bot/api/YandexSpeechKit.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\api;


use Exception;
use MM\bot\core\mmApp;

/**
Expand Down Expand Up @@ -163,8 +164,9 @@ protected function initPost()
*
* @param string|null $text Текст для преобразования
* @return mixed
* @see (https://cloud.yandex.ru/docs/speechkit/tts/request) Смотри тут
* @throws Exception
* @api
* @see (https://cloud.yandex.ru/docs/speechkit/tts/request) Смотри тут
*/
public function getTts(?string $text = null)
{
Expand Down
3 changes: 3 additions & 0 deletions src/MM/bot/components/card/Card.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\components\card;


use Exception;
use MM\bot\components\button\Buttons;
use MM\bot\components\card\types\AlisaCard;
use MM\bot\components\card\types\SmartAppCard;
Expand Down Expand Up @@ -107,6 +108,7 @@ public function add(?string $image, string $title, string $desc = ' ', $button =
*
* @param TemplateCardTypes|null $userCard Пользовательский класс для отображения каточки.
* @return array
* @throws Exception
* @api
*/
public function getCards(?TemplateCardTypes $userCard = null): array
Expand Down Expand Up @@ -159,6 +161,7 @@ public function getCards(?TemplateCardTypes $userCard = null): array
*
* @param TemplateCardTypes|null $userCard Пользовательский класс для отображения каточки.
* @return string
* @throws Exception
* @api
*/
public function getCardsJson(?TemplateCardTypes $userCard): string
Expand Down
2 changes: 2 additions & 0 deletions src/MM/bot/components/card/types/AlisaCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\components\card\types;


use Exception;
use MM\bot\components\button\Buttons;
use MM\bot\components\standard\Text;
use MM\bot\models\ImageTokens;
Expand Down Expand Up @@ -66,6 +67,7 @@ protected function getItem(): array
*
* @param bool $isOne True, если в любом случае отобразить 1 элемент карточки
* @return array
* @throws Exception
* @api
*/
public function getCard(bool $isOne): array
Expand Down
2 changes: 2 additions & 0 deletions src/MM/bot/components/card/types/MarusiaCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\components\card\types;


use Exception;
use MM\bot\components\button\Buttons;
use MM\bot\components\standard\Text;
use MM\bot\models\ImageTokens;
Expand All @@ -23,6 +24,7 @@ class MarusiaCard extends TemplateCardTypes
*
* @param bool $isOne True, если в любом случае отобразить 1 элемент карточки
* @return array
* @throws Exception
* @api
*/
public function getCard(bool $isOne): array
Expand Down
2 changes: 2 additions & 0 deletions src/MM/bot/components/card/types/TelegramCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\components\card\types;


use Exception;
use MM\bot\api\TelegramRequest;
use MM\bot\core\mmApp;
use MM\bot\models\ImageTokens;
Expand All @@ -20,6 +21,7 @@ class TelegramCard extends TemplateCardTypes
* todo подумать над корректным отображением.
* @param bool $isOne True, если нужно отобразить только 1 элемент. Не используется.
* @return array
* @throws Exception
* @api
*/
public function getCard(bool $isOne): array
Expand Down
2 changes: 2 additions & 0 deletions src/MM/bot/components/card/types/VkCard.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace MM\bot\components\card\types;


use Exception;
use MM\bot\components\button\Buttons;
use MM\bot\models\ImageTokens;

Expand All @@ -18,6 +19,7 @@ class VkCard extends TemplateCardTypes
*
* @param bool $isOne True, если в любом случае отобразить 1 элемент карточки
* @return array
* @throws Exception
* @api
*/
public function getCard(bool $isOne): array
Expand Down
Loading

0 comments on commit b782e5b

Please sign in to comment.