Ошибка ETag веб-перехватчика Google Assistant Dialogflow API V2

Я пытаюсь вернуть простой текстовый ответ и отобразить базовую карточку в приложении Google Assistant, используя следующий код:

public GoogleCloudDialogflowV2WebhookResponse Search(GoogleCloudDialogflowV2WebhookRequest request)
    {
        GoogleCloudDialogflowV2WebhookResponse whr = new GoogleCloudDialogflowV2WebhookResponse();

        whr.FulfillmentMessages = new List<GoogleCloudDialogflowV2IntentMessage>();

        whr.FulfillmentMessages.Add(new GoogleCloudDialogflowV2IntentMessage()
        {                
            Platform = "ACTIONS_ON_GOOGLE",
            SimpleResponses = new GoogleCloudDialogflowV2IntentMessageSimpleResponses()
            {
               SimpleResponses = new List<GoogleCloudDialogflowV2IntentMessageSimpleResponse>()
               {
                   new GoogleCloudDialogflowV2IntentMessageSimpleResponse()
                   {
                       DisplayText = "sample text",
                       Ssml = "<speak>sample text</speak>"
                   }
               }
            },
            BasicCard = new GoogleCloudDialogflowV2IntentMessageBasicCard()
            {             
                Title = "sample title",
                Subtitle = "sample subtitle",
                FormattedText = "sample formatted text",
                Image = new GoogleCloudDialogflowV2IntentMessageImage()
                {                 
                    ImageUri = "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
                    AccessibilityText = "sample image"
                }
            }
        });

        return whr;
    }

Я получаю следующую ошибку, когда конечная точка веб-перехватчика вызывается из интерфейса Google Dialogflow:

webhookStatus": {
"code": 3,
"message": "Webhook call failed. Error: Failed to parse webhook JSON response: Cannot find field: ETag in message google.cloud.dialogflow.v2beta1.Intent.Message.Image." }

Я не могу найти никакой информации о проблеме с ETag. Я использую стандартный пакет NuGet Google.Apis.Dialogflow.v2 и агент Dialogflow API V2.

Если я не использую GoogleCloudDialogflowV2WebhookResponse и использую собственный класс, который при сериализации в JSON отлично работает без базовой карты.

{ "fulfillmentText": "test from API", "fulfillmentMessages": [ { "platform": "ACTIONS_ON_GOOGLE", "simpleResponses": { "simpleResponses": [ { "displayText": "test", "ssml": "<speak>test</speak>"}],}}],}

Я бы предпочел использовать GoogleCloudDialogflowV2WebhookResponse.


person OlegR    schedule 08.05.2018    source источник
comment
Что такое сериализация JSON с базовой картой?   -  person Nick Felker    schedule 09.05.2018
comment
Я имел в виду мою собственную реализацию (без базового свойства карты, только fillmentMessages) ответа, отправленного обратно на веб-перехватчик. общедоступный класс GoogleHomeResponse {общедоступная строка выполненияText {получить; установленный; } публичный список ‹FulfillmentMessage› fillmentMessages {get; установленный; }}   -  person OlegR    schedule 09.05.2018
comment
Верно, но похоже, что ошибка связана с вашим ответом веб-перехватчика. Если бы вы могли опубликовать, как это выглядит, это может помочь решить вашу проблему.   -  person Nick Felker    schedule 09.05.2018
comment
Я тоже сталкиваюсь с этой проблемой. Отправил запрос в службу поддержки на DialogFlow и проблему на github.com/google/ google-api-dotnet-client / issues / 1234. Я надеюсь, что один из двоих откликнется на помощь.   -  person meyousikmann    schedule 14.06.2018


Ответы (1)


Согласно https://github.com/google/google-api-dotnet-client/issues/1234, используйте https://www.nuget.org/packages/Google.Cloud.Dialogflow.V2/1.0.0-beta01 вместо https://www.nuget.org/packages/Google..Apis.Dialogflow.v2/.

Помните, что пакет Gooogle.Cloud все еще находится на стадии предварительного выпуска, поэтому вам нужно будет указать версию при установке или установить небольшой флажок «включить предварительную версию», если вы используете пользовательский интерфейс диспетчера пакетов NuGet в Visual Studio.

Я сам еще не пробовал, поэтому ваш опыт может отличаться. Я обновлю, как только попробую.

Обновление: библиотека Google.Cloud работает должным образом.

person meyousikmann    schedule 14.06.2018