Диалоговое окно изменения поверхности из webhook - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь отправить ответ от моего веб-крюка, чтобы инициировать изменение процесса на другую поверхность, но Действия в Google всегда выдают:

Должно быть установлено MalformedResponse 'final_response'.

И это не очень полезно.

Это JSON, который я возвращаю:

{
    "payload": {
        "google": {
            "expectUserResponse": true,
            "conversationToken": "{\"data\":{}}",
            "userStorage": "{\"data\":{}}",
            "expectedInputs": [
                {
                    "inputPrompt": {
                        "richInitialPrompt": {
                            "items": [
                                {
                                    "simpleResponse": {
                                        "textToSpeech": "PLACEHOLDER"
                                    }
                                }
                            ]
                        }
                    },
                    "possibleIntents": [
                        {
                            "intent": "actions.intent.NEW_SURFACE",
                            "inputValueData": {
                                "@type": "type.googleapis.com/google.actions.v2.NewSurfaceValueSpec",
                                "capabilities": [
                                    {
                                        "name": "actions.capability.SCREEN_OUTPUT"
                                    }
                                ],
                                "context": "Sure, I have some sample images for you.",
                                "notificationTitle": "Sample Images"
                            }
                        }
                    ]
                }
            ]
        }
    }
}

В диалоге я настроил 2 намерения;одно намерение, которое возвращает указанный здесь json, и другое намерение с событием actions_intent_NEW_SURFACE, поэтому я знаю, что пользователь ответил на вопрос об изменении поверхности.

Я читал эти сайты:

https://developers.google.com/actions/assistant/surface-capabilities#multi-surface_conversations

https://dialogflow.com/docs/reference/api-v2/rest/Shared.Types/WebhookResponse

https://developers.google.com/actions/build/json/dialogflow-webhook-json#dialogflow-response-body

Действие В Google, webhook ответ с actions.intent.NEW_SURFACE (Это похоже нау меня та же проблема, но ОП не написал ответ.)

Но никто из них не пролил мне свет на этот вопрос.

1 Ответ

0 голосов
/ 18 сентября 2018

Похоже, что вы пытаетесь отправить полное тело Action SDK как часть вашего ответа Dialogflow. Хотя часть payload.google в JSON содержит объекты, которые похожи на ответ Action SDK, существуют некоторые различия. Вы можете увидеть https://developers.google.com/actions/build/json/dialogflow-webhook-json#dialogflow-response-body для полного примера того, каким должен быть ответ при использовании помощника, но я думаю, что ваш ответ должен быть чем-то вроде

{
    "payload": {
        "google": {
            "expectUserResponse": true,
            "userStorage": "{\"data\":{}}",
            "richResponse": {
                "items": [
                    {
                        "simpleResponse": {
                            "textToSpeech": "PLACEHOLDER"
                        }
                    }
                ]
            },
            "systemIntent": {
                "intent": "actions.intent.NEW_SURFACE",
                "inputValueData": {
                    "@type": "type.googleapis.com/google.actions.v2.NewSurfaceValueSpec",
                    "capabilities": [
                        "actions.capability.SCREEN_OUTPUT"
                    ],
                    "context": "Sure, I have some sample images for you.",
                    "notificationTitle": "Sample Images"
                }
            }
        }
    }
}
...