【发布时间】:2019-11-13 02:01:11
【问题描述】:
我构建了以下 c# 类:
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Broca.ConversationalServices.Api.Operations.Response
{
[DataContract]
public class IntentResponse
{
public IntentResponse()
{
FulfillmentMessages = new List<FulfillmentMessage>();
}
[DataMember(Name = "responseId", Order = 1)]
public string ResponseId { get; set; }
[DataMember(Name = "fulfillmentText", Order = 2)]
public string FulfillmentText { get; set; }
[DataMember(Name = "fulfillmentMessages", Order = 3)]
public List<FulfillmentMessage> FulfillmentMessages { get; set; }
}
[DataContract]
public class FulfillmentMessage
{
public FulfillmentMessage()
{
SimpleResponsesRoot = new SimpleResponses();
basicCard = new BasicCard();
}
[DataMember(Name = "platform", Order = 4)]
public string Platform { get; set; }
[DataMember(Name = "simpleResponses", Order = 5)]
public SimpleResponses SimpleResponsesRoot { get; set; }
public BasicCard basicCard { get; set; }
}
[DataContract]
public class SimpleResponses
{
public SimpleResponses()
{
ListOfSimpleResponses = new List<SimpleResponse>();
}
[DataMember(Name = "simpleResponses", Order = 6)]
public List<SimpleResponse> ListOfSimpleResponses { get; set; }
}
[DataContract]
public class SimpleResponse
{
[DataMember(Name = "textToSpeech", Order = 7)]
public string TextToSpeech { get; set; }
}
public class Image
{
public string imageUri { get; set; }
public string accessibilityText { get; set; }
}
public class OpenUriAction
{
public string uri { get; set; }
}
public class Button
{
public Button()
{
openUriAction = new OpenUriAction();
}
public string title { get; set; }
public OpenUriAction openUriAction { get; set; }
}
[DataContract]
public class BasicCard
{
public BasicCard()
{
buttons = new List<Button>();
image = new Image();
}
public string title { get; set; }
public string subtitle { get; set; }
public string formattedText { get; set; }
public Image image { get; set; }
public List<Button> buttons { get; set; }
}
}
我想从中创建以下 JSON:
{
"responseId": "e75dd83e-b174-4896-b1f6-2f348b2621b2-b81332aa",
"fulfillmentText": "text",
"fulfillmentMessages": [
{
"platform": "ACTIONS_ON_GOOGLE",
"simpleResponses": {
"simpleResponses": [
{
"textToSpeech": "text"
}
]
}
},
{
"platform": "ACTIONS_ON_GOOGLE",
"basicCard": {
"title": "text",
"subtitle": "text",
"formattedText": "text",
"image": {
"imageUri": "https://text.jpg",
"accessibilityText": "text"
},
"buttons": [
{
"title": "string",
"openUriAction": {
"uri": "https://xxxx.xxx.com"
}
}
]
}
},
],
}
当我这样做时
IntentResponse intentResponse = new IntentResponse();
FulfillmentMessage fulfillmentMessage = new FulfillmentMessage();
intentResponse.ResponseId = intentRequest.responseId;
intentResponse.FulfillmentText = "Data";
var simpleResponse = new SimpleResponse();
simpleResponse.TextToSpeech = "This is a simple response";
fulfillmentMessage.SimpleResponsesRoot.ListOfSimpleResponses.Add(simpleResponse);
JSON 转换为相应格式,但我无法将 BasicCard 添加为另一个元素。
我添加了这段代码
var basicCard = new BasicCard();
basicCard.title = "Title";
basicCard.subtitle = "sub title";
basicCard.formattedText = "This is the card text";
var button = new Button();
button.title = "Visitanos";
button.openUriAction.uri = @"http://www.ssss.com";
basicCard.buttons.Add(button);
basicCard.image.accessibilityText = "accesibility text";
basicCard.image.imageUri = "xx.png";
fulfillmentMessage.basicCard = basicCard;
intentResponse.FulfillmentMessages.Add(fulfillmentMessage);
但是当我添加fulfillmentMessage 时,我总是收到SimpleResponse 而不是基本卡。我该怎么办?
我们总是感谢您的帮助。
【问题讨论】:
标签: c# .net list generics dialogflow-es