Формат сообщений 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.pronounceTextpayload.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 |