Я внедряю webhookreceiver в качестве основного веб-приложения ASP.Net для моего агента диалога Google. Для этого я использую пакет nuget Google.Cloud.Dialogflow.V2 (1.0.0-beta02). Когда определенное намерение соответствует Dialogflow, я хочу, чтобы мое веб-приложение ASP вызывало API TMDb для получения информации о специальных фильмах. Я хотел бы отправить эту информацию обратно в Dialogflow как карты Google.
Чтобы отправить материал обратно в Dialogflow, я использую класс WebhookResponse (предоставленный Google.Cloud.Dialogflow.V2). Теперь моя проблема заключается в том, как сопоставить шаблон, который ожидает Dialogflow, который выглядит следующим образом:
"messages": [
{
"buttons": [
{
"postback": "Card Link URL or text",
"text": "Card Link Title"
}
],
"imageUrl": "http://urltoimage.com",
"platform": "facebook",
"subtitle": "Card Subtitle",
"title": "Card Title",
"type": 1
}
]
На данный момент я обнаружил, что мне нужно, чтобы вышеуказанный Json был частью полезной нагрузки Webhookresponse. (https://github.com/googleapis/google-cloud-dotnet/issues/2425#issuecomment-459885762)
Но сложно сопоставить вышеприведенный шаблон, используя метод, указанный в комментарии Github.
Я знаю, что объекты Json (все между парой фигурных скобок) эквивалентны этой строке кода
Value.ForStruct(new Struct { Fields = { ["expectUser"] = Value.ForBool(true) } })
То, что я не могу выяснить, это то, что эквивалентно массиву Json (все между парой квадратных скобок)
Я предполагаю, что я должен использовать
Value.ForList()
Но он не скомпилируется, когда я попробую (см. Код ниже, как я это пробовал).
Payload = new Struct {
Fields ={["messages"] = Value.ForList(new Struct {
Fields = {["buttons"] = Value.ForStruct(new Struct {
Fields = {["postback"] = Value.ForString("Card link url or test"),
["text"] = Value.ForString("card link title")}
})
} })
}
}
Предполагается, что этот фрагмент является первыми 8 строками структуры Json из первого кодового блока. (Я попытался отформатировать его настолько хорошо, насколько это возможно, пропущенных скобок не должно быть)
Ошибка в VS2017:
Argument 1: cannot convert from 'Google.Protobuf.WellKnownTypes.Struct' to 'Google.Protobuf.WellKnownTypes.Value'
Кто-нибудь знает, как использовать Google.Protobuf, или может быть другой способ заставить моего агента Dialogflow отображать карточки?
Любая помощь приветствуется.