Вы можете встроить в ваш смартап запрос оценки у пользователя.
Статистика по оценкам доступна в Studio в разделе Оценки.
Формат запроса
Чтобы запросить у пользователя оценку, настройте в сессии диалога отправку сообщения с "messageName": "CALL_RATING"
и обработку ответа.
Метод CALL_RATING
позволяет вызывать сервис только по инициативе пользователя — после нажатия на соответствующую кнопку или саджест. Для этого вам нужно добавить в сценарий кнопку или саджест, предлагающие пользователю оценить смартап. Рекомендуемые названия смотрите в разделе Правила использования.
- Пример
- Описание
Формат ответа
Ответ возвращается в сообщении RATING_RESULT
.
- Пример
- Описание
Примеры встраивания в смартап
Вы можете встроить сервис в сценарий смартапа независимо от того, с помощью каких инструментов он разработан. Для этого отправьте в сессии диалога сообщение CALL_RATING
.
Для Code
Вызов оценки
Если вы создали Chat App или Canvas App с помощью Code, то для вызова оценки по методу CALL_RATING
добавьте в стейт, который будет обрабатывать действие пользователя, следующий скрипт:
script: $smartRating.callRating();
Чтобы настроить вызов CALL_RATING
более детально, используйте следующий код:
script:
$response.replies = $response.replies || [];
$response.replies.push({
'type': "raw",
'messageName': 'CALL_RATING',
'body': { }
});
Обработка ответа
Для обработки ответа RATING_RESULT
добавьте в стейт, куда будет возвращен пользователь после оценки или отказа, строку:
event!: RATING_RESULT
Статус запроса
Cтатус запроса оценки можно получить с помощью переменной $request.data.eventData
:
$request.data.eventData.status_code.code
Если пользователь оценил смартап, в ответе вернется код 1, если отказался оценивать — коды 101, 102, 103 или 104.
Результат оценки
Если пользователь оценил смартап, то вы можете узнать результат:
# Пользовательская оценка. От 1 до 5
$request.data.eventData.rating.estimation
Для Graph
Если вы создали Chat App с помощью Graph, то при создании экрана выберите действие SmartRating.
Затем добавьте в сценарий обработку следующих вариантов ответа:
- Получена оценка.
- Отклонено пользователем.
- Запрещено.
Для SaluteJS
Если вы создали Chat App или Canvas App с помощью SaluteJS, то для вызова оценки используйте хендлер:
export const CallRatingHandler: SaluteHandler = ({res, req}) => {
// @ts-ignore
res.message.messageName = 'CALL_RATING'
}
Обработка ответа:
export const RatingResultHandler: SaluteHandler = ({res, req}) => {
}
Сценарий для обработки текста или триггера для вызова оценки и обработки события RATING_RESULT
:
callRating: {
match: text('Оценить приложение'),
handle: CallRatingHandler
},
resultRating: {
match: action('RATING_RESULT'),
handle: RatingResultHandler
}
Для HTML5-игр
Если вы портировали HTML5-игру, используя базовый сценарий обработки голосом в качестве вебхука, то для отображения саджеста, который вызовет оценку, отправьте action SHOW_RATING_SUGGEST
.
// Перед вызом предложения об оценке
// Подключите и инициализируйте ассистента
<script src="https://unpkg.com/@salutejs/client@1.0.0/umd/assistant.production.min.js"></script>
<script>
const client = assistant.createAssistant({ getState: () => ({}), getRecoveryState: () => ({}), });
</script>
//...
const handleOnClick = () => {
// Отправка сообщения ассистенту с фронтенда.
// Структура может меняться на усмотрение разработчика, в зависимости от логики бэкенда
client.sendData({ action: { action_id: 'SHOW_RATING_SUGGEST'} });
};
Для Native App
Подключение и настройка сценария
Чтобы встроить в Native App запрос оценки пользователя:
- В пространстве, где находится проект NativeApp, создайте проект Code для SmartApp.
- В созданном проекте перейдите в раздел Сценарии.
- Откройте файл main.sc и добавьте в него код:
theme: /
state: Start
q!: $regex</start>
script:
$response.replies = $response.replies || [];
$response.replies.push({
"type": "raw",
"body": {
"items": [
{
"command": {
"type": "smart_app_data",
"smart_app_data": { }
}
}
]
},
"messageName":"ANSWER_TO_USER"
});
$jsapi.log("[START]");
state: RatingResult
event!: RATING_RESULT
script: $jsapi.log("[RATING_RESULT]");
state: Каталог
q!: * оцен* *
script:
$jsapi.log("[CALL_RATING]");
$smartRating.callRating();
state: nothing_found
event!: noMatch
script:
$jsapi.log("[NOTHING_FOUND]");
$response.replies = $response.replies || [];
$response.replies.push({
type: 'raw',
messageName: 'NOTHING_FOUND',
body: {},
});
- Нажмите Сохранить, затем — Собрать.
- Перейдите в раздел Настройки проекта и на вкладке Дополнительно включите параметр Отправлять команду /start на запуск голосом.
- Перейдите в проект NativeApp, в раздел Параметры, на вкладку Основные настройки.
- В поле Тип сценария выберите Code.
- В поле Сценарий выберите созданный проект Code.
- В поле Версия выберите последнюю версию.
- Нажмите Сохранить.
Теперь если внутри приложения пользователь скажет любую фразу, содержащую слово «оценка», «оценку», «оценить» и т. д., то откроется оценка смартапа.
Также вы можете предложить пользователю оценить приложение, для этого добавьте в сценарий саджест.
Настройка фраз вызова оценки
Вы можете самостоятельно добавлять или удалять фразы вызова оценки. Для этого в проекте Code в файле main.sc добавьте необходимую фразу через тег q!:
. Например:
state: Каталог
q!: оценить
q!: мне нравится
Также при добавлении фраз вызова оценки вы можете использовать Паттерны, например:
q!: * оцен* *
Звездочка, отделенная пробелом, перед и после слова означает любое слово или ничего. Звездочка, не отделенная пробелом, в конце слова означает, что у слова может быть любое окончание.
Пример выше подходит для вызова оценки приложения с помощью фраз: «хочу оценить», «поставить оценку», «оценка приложения» и т. д.