Формат сообщений SmartApp API отличается от протокола работы навыков Алисы. Поэтому использовать один веб-сервис без доработок не получится.
Правила портирования
Если вы хотите указать тот же Webhook URL, который вы используете для навыка Алисы, убедитесь, что ваш веб-сервис поддерживает формат сообщений SmartApp API и может переключать протоколы в зависимости от источника запроса.
Для предоставления медиафайлов ассистенту вам также потребуется использовать отдельную сеть CDN.
В отличие от Алисы голоса ассистента Салют могут быть не только женского, но и мужского пола. Учитывайте это при портировании реплик. Информация о поле голоса ассистента содержится в payload.character.gender
запросов.
Сопоставление протоколов
Ассистент не поддерживает автоматический маппинг сообщений протоколов Алисы и SmartApp API. Ниже вы найдете сопоставление полей обоих протоколов.
Сопоставление полей запросов
Протокол Алисы | Протокол ассистента |
---|---|
meta.clientId | uuid.userChannel |
request.command | payload.message.original_text |
request.originalUtterance | payload.message.original_text |
session.application.application_id | uuid.userId |
session.user.user_id | uuid.sub |
session.message_id | messageId |
session.skill_id | payload.skillId |
session.new | payload.new_session |
meta.interfaces.screen | payload.device.capabilities.screen.available |
request.payload | payload.server_action.parameters |
request.nlu.tokens | payload.message.tokenized_elements_list |
request.nlu.entities.type | payload.message.entities.X |
request.nlu.entities.value | payload.message.entities.X.value |
request.nlu.intents.X | payload.intent payload.intent_meta |
Сопоставление полей ответов
Протокол Алисы | Протокол ассистента |
---|---|
response.text | payload.pronounceText payload.items.bubble.text |
response.end_session | payload.finished |
response.tts | payload.pronounceText |
response.card.type | payload.items[].card.type |
response.card.image_id | payload.items[].card.cells[].content.url |
response.card.title | payload.items[].card.cells[].left.texts.title.text |
response.card.description | payload.items[].card.cells[].left.texts.subtitle.text |
response.card.button.text | payload.items[].card.cells[].content.actions[].text |
response.card.button.url | payload.items[].card.cells[].content.actions[].deep_link |
response.card.button.payload | payload.items[].card.cells[].content.actions[].server_action.parameters |
response.card.header.text | payload.items[].card.cells[].left.texts.title.text |
response.card.items[].image_id | payload.items[].card.cells[].left.icon.address.url |
response.card.items[].title | payload.items[].card.cells[].left.texts.title.text |
response.card.items[].description | payload.items[].card.cells[].left.texts.subtitle.text |
response.card.items[].button.text | payload.items[].card.cells[].actions[].text |
response.card.items[].button.url | payload.items[].card.cells[].actions[].deep_link |
response.card.items[].button.payload | payload.items[].card.cells[].actions[].server_action.parameters |
card.footer.text | payload.items[].card.cells[].content.text |
card.footer.button.text | payload.items[].card.cells[].actions[].text |
card.footer.button.url | payload.items[].card.cells[].actions[].deep_link |
card.footer.button.payload | payload.items[].card.cells[].actions[].server_action.parameters |
buttons.title | payload.suggestions.buttons[].title |
buttons.url | payload.suggestions.buttons[].action.deep_link |
buttons.payload | payload.suggestions.buttons[].action.server_action.parameters |