В настоящее время я заканчиваю обучение действиям в Google:
- https://codelabs.developers.google.com/codelabs/actions-1/index.html
- https://codelabs.developers.google.com/codelabs/actions-2/index.html
- https://codelabs.developers.google.com/codelabs/actions-3/index.html
Кажется, все работает отлично, за исключением шага 8 из https://codelabs.developers.google.com/codelabs/actions-3/index.html. Я пробовал это несколько раз и лично просил других помочь, но мне не повезло заставить это работать.
Проблема возникает только тогда, когда я пытаюсь получить базовую карту и фишки для подсказок для отображения из опции карусели. Когда я печатаю ответ отдельно от карусели, базовые фишки для карточек и предложений отображаются нормально, но всякий раз, когда я запускаю карусель с помощью текста, голоса или сенсорного экрана, базовые фишки для карточек и подсказок не работают, несмотря на то, что они кажутся почти идентичными Запросы. Я проверяю это через симулятор. Ниже приведены некоторые из моих результатов (исключая пользователя):
Без запроса карусели:
{
"conversation": {
"conversationId": "ABwppHF_1K01OSff9j2qRUTXc0QAExd_rouvB_UvqD8kQl4mWREUxzoESBnJCaaP1UX89IoyXuLkKxChFG3YAfr7drY",
"type": "ACTIVE",
"conversationToken": "[]"
},
"inputs": [
{
"intent": "actions.intent.TEXT",
"rawInputs": [
{
"inputType": "KEYBOARD",
"query": "pink unicorn"
}
],
"arguments": [
{
"name": "text",
"rawText": "pink unicorn",
"textValue": "pink unicorn"
}
]
}
],
"surface": {
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
}
]
},
"isInSandbox": true,
"requestType": "SIMULATOR"
}
Без ответа карусели:
{
"conversationToken": "[\"favoritefakecolor-followup\"]",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Here you go."
}
},
{
"basicCard": {
"title": "Pink Unicorn",
"formattedText": "Pink Unicorn is an imaginative reddish hue.",
"image": {
"url": "https://storage.googleapis.com/material-design/publish/material_v_12/assets/0BxFyKV4eeNjDbFVfTXpoaEE5Vzg/style-color-uiapplication-palette2.png",
"accessibilityText": "Pink Unicorn Color"
},
"imageDisplayOptions": "WHITE"
}
},
{
"simpleResponse": {
"textToSpeech": "Do you want to hear about another fake color?"
}
}
],
"suggestions": [
{
"title": "Yes"
},
{
"title": "No"
}
]
}
},
"possibleIntents": [
{
"intent": "assistant.intent.action.TEXT"
},
{
"intent": "7834d6b7-c6f6-4baf-9e61-20b9b0f4f472"
},
{
"intent": "1f5dbadc-605b-4b3f-baa3-734ac590aefd"
}
],
"speechBiasingHints": [
"$fakeColor"
]
}
],
"responseMetadata": {
"status": {
"message": "Success (200)"
},
"queryMatchInfo": {
"queryMatched": true,
"intent": "46251bfd-4c19-449d-979c-c1a88a8c4386",
"parameterNames": [
"fakeColor"
]
}
}
}
С запросом карусели:
{
"conversation": {
"conversationId": "ABwppHF_1K01OSff9j2qRUTXc0QAExd_rouvB_UvqD8kQl4mWREUxzoESBnJCaaP1UX89IoyXuLkKxChFG3YAfr7drY",
"type": "ACTIVE",
"conversationToken": "[\"favoritefakecolor-followup\"]"
},
"inputs": [
{
"intent": "actions.intent.OPTION",
"rawInputs": [
{
"inputType": "TOUCH",
"query": "Pink Unicorn"
}
],
"arguments": [
{
"name": "OPTION",
"textValue": "pink unicorn"
},
{
"name": "text",
"rawText": "Pink Unicorn",
"textValue": "Pink Unicorn"
}
]
}
],
"surface": {
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
}
]
},
"isInSandbox": true,
"requestType": "SIMULATOR"
}
С ответом карусели:
{
"conversationToken": "[\"favoritefakecolor-followup\"]",
"expectUserResponse": true,
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Here you go."
}
},
{
"basicCard": {
"title": "Pink Unicorn",
"formattedText": "Pink Unicorn is an imaginative reddish hue.",
"image": {
"url": "https://storage.googleapis.com/material-design/publish/material_v_12/assets/0BxFyKV4eeNjDbFVfTXpoaEE5Vzg/style-color-uiapplication-palette2.png",
"accessibilityText": "Pink Unicorn Color"
},
"imageDisplayOptions": "WHITE"
}
},
{
"simpleResponse": {
"textToSpeech": "Do you want to hear about another fake color?"
}
}
],
"suggestions": [
{
"title": "Yes"
},
{
"title": "No"
}
]
}
},
"possibleIntents": [
{
"intent": "assistant.intent.action.TEXT"
},
{
"intent": "7834d6b7-c6f6-4baf-9e61-20b9b0f4f472"
},
{
"intent": "1f5dbadc-605b-4b3f-baa3-734ac590aefd"
}
],
"speechBiasingHints": [
"$fakeColor"
]
}
],
"responseMetadata": {
"status": {
"message": "Success (200)"
},
"queryMatchInfo": {
"queryMatched": true,
"intent": "46251bfd-4c19-449d-979c-c1a88a8c4386"
}
}
}
Одно важное различие, которое я заметил, - несмотря на то, что в ответе они содержали как базовые фишки, так и подсказки, только отладочный поток содержал визуальный элемент в отладчике.
с каруселью:
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "Here you go."
}
},
{
"displayText": {
"content": "Do you want to hear about another fake color?"
}
}
]
без карусели:
"visualElementsList": [
{
"basicCard": {
"title": "Pink Unicorn",
"subtitle": "",
"formattedText": "Pink Unicorn is an imaginative reddish hue.",
"image": {
"url": "https://storage.googleapis.com/material-design/publish/material_v_12/assets/0BxFyKV4eeNjDbFVfTXpoaEE5Vzg/style-color-uiapplication-palette2.png",
"accessibilityText": "Pink Unicorn Color",
"height": 0,
"width": 0
},
"buttonsList": [],
"imageDisplayOptions": 1
}
},
{
"displayText": {
"content": "Here you go."
}
},
{
"displayText": {
"content": "Do you want to hear about another fake color?"
}
}
],
"suggestionsList": [
{
"title": "Yes"
},
{
"title": "No"
}
]