ym88659208ym87991671
API SmartRating | Документация для разработчиков
Skip to main content

API SmartRating

Обновлено 13 сентября 2022

Вы можете встроить в ваш смартап запрос оценки у пользователя.

Статистика по оценкам доступна в Studio в разделе Оценки.

Формат запроса

Чтобы запросить у пользователя оценку, настройте в сессии диалога отправку сообщения с "messageName": "CALL_RATING" и обработку ответа.

Метод CALL_RATING позволяет вызывать сервис только по инициативе пользователя — после нажатия на соответствующую кнопку или саджест. Для этого вам нужно добавить в сценарий кнопку или саджест, предлагающие пользователю оценить смартап. Рекомендуемые названия смотрите в разделе Правила использования.

messageId
number

Идентификатор сообщения

sessionId
string <uuid4>

Идентификатор сессии

messageName
string

Название сообщения. Для обращения к сервису SmartRating используйте значение CALL_RATING.

Value: "CALL_RATING"
object (userid)
payload
object

Пустой объект

{
  • "messageId": 1605196199186625000,
  • "sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
  • "messageName": "CALL_RATING",
  • "uuid": {
    },
  • "payload": { }
}

Формат ответа

Ответ возвращается в сообщении RATING_RESULT.

messageId
number

Идентификатор сообщения

sessionId
string <uuid4>

Идентификатор сессии

messageName
string

Название сообщения. В ответ на сообщение CALL_RATING приходит сообщение RATING_RESULT.

Value: "RATING_RESULT"
object

Результат оценки

object (userid)
{
  • "messageId": 1605196199186625000,
  • "sessionId": "0062530b-5521-42cc-90b0-a9d65dea4e98",
  • "messageName": "RATING_RESULT",
  • "payload": {
    },
  • "uuid": {
    }
}

Примеры встраивания в смартап

Вы можете встроить сервис в сценарий смартапа независимо от того, с помощью каких инструментов он разработан. Для этого отправьте в сессии диалога сообщение 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.

Затем добавьте в сценарий обработку следующих вариантов ответа:

  1. Получена оценка.
  2. Отклонено пользователем.
  3. Запрещено.

Для 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-игру, используя базовый сценарий обработки голосом в качестве вебхука, то для отображения саджеста, который вызовет оценку, отправьте 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'} });
};

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней