C# Bot框架V3电子邮件Json对象
我正在尝试让bot在bot框架V3中回复电子邮件。然而,我很难理解如何从对话框中调用对象,甚至如何创建JSON对象。 这些示例已被microsoft删除,因此几乎没有关于如何执行此操作的示例或文档。 有没有人能举一个我可以使用的回复电子邮件的对话框的例子 提前谢谢 这是我当前的代码,但不起作用: 对话框: 谢谢你的回复。 这个对话够了吗?接受者等呢? 文档非常吓人,只告诉您Json的外观 这是我的代码: messagecontroller:C# Bot框架V3电子邮件Json对象,c#,json,azure,botframework,C#,Json,Azure,Botframework,我正在尝试让bot在bot框架V3中回复电子邮件。然而,我很难理解如何从对话框中调用对象,甚至如何创建JSON对象。 这些示例已被microsoft删除,因此几乎没有关于如何执行此操作的示例或文档。 有没有人能举一个我可以使用的回复电子邮件的对话框的例子 提前谢谢 这是我当前的代码,但不起作用: 对话框: 谢谢你的回复。 这个对话够了吗?接受者等呢? 文档非常吓人,只告诉您Json的外观 这是我的代码: messagecontroller: else if (activity.C
else if (activity.ChannelId == "email")
{
await Conversation.SendAsync(activity, () => new EmailDialogDante());
}
对话框:
public async Task StartAsync(IDialogContext context)
{
var message = context.Activity as IMessageActivity;
var reply = context.MakeMessage();
reply.ChannelData = new BotchannelData();
{
ChannelData channelData = new ChannelData();
ChannelDataInter channelDataInter = new ChannelDataInter();
}
await context.PostAsync(reply);
// await fetchOrderDetails(context, query);
}
这些是我的Json对象:
public class BotchannelData
{
[JsonProperty("channelData")]
public ChannelData ChannelData
{
get;
internal set;
}
}
}
namespace SimpleEchoBot.EmailJson
{
public class ChannelData
{
public ChannelData()
{
this.Type = "message";
this.Locale = "en-Us";
this.ChannelID = "email";
}
[JsonProperty("type")]
public string Type { get; set; }
[JsonProperty("locale")]
public dynamic Locale { get; set; }
[JsonProperty("channelID")]
public dynamic ChannelID { get; set; }
[JsonProperty("from")]
public From From { get; internal set; }
[JsonProperty("recipient")]
public Recipient Recipient { get; internal set; }
[JsonProperty("conversation")]
public Conversation Conversation { get; internal set; }
[JsonProperty("channelData")]
public ChannelDataInter ChannelDataInter { get; internal set; }
}
}
namespace SimpleEchoBot.EmailJson
{
public class ChannelDataInter
{
public ChannelDataInter()
{
this.HTML = "test";
this.Subject = "testing";
this.Importance = "high";
}
[JsonProperty("html")]
public string HTML { get; set; }
[JsonProperty("subject")]
public dynamic Subject { get; set; }
[JsonProperty("importance")]
public dynamic Importance { get; set; }
}
}
电子邮件频道特定属性可以在ChannelData中设置,方法如下:
if (message.ChannelId == ChannelIds.Email)
{
var reply = message.CreateReply();
reply.ChannelData = JObject.FromObject(new
{
htmlBody = "<html><body style=\"font-family: Calibri; font-size: 11pt;\">This is the email body!</body></html>",
subject = "This is the email subject",
importance = "high"
});
//send reply to user
await context.PostAsync(reply);
}
if(message.ChannelId==ChannelId.Email)
{
var reply=message.CreateReply();
reply.ChannelData=JObject.FromObject(新
{
htmlBody=“这是电子邮件正文!”,
subject=“这是电子邮件主题”,
重要性=“高”
});
//向用户发送回复
等待上下文。PostAsync(回复);
}
对相关文件的一些参考:
谢谢您的回复。这个对话够了吗?接受者等呢?文档非常吓人,只告诉您Json的外观。收件人将是向bot发送电子邮件的用户。您应该使用MessageReceived来发送回复,而不是StartAsync。如果使用message.CreateReply();然后“发件人”和“收件人”字段将被正确设置。谢谢。但是,来自StartAsync(IdialogContext上下文)的var message=context.Activity作为IMessageActivity没有CreateReply()方法。唯一与此类似的是message.CreateOAuthReplyAsync,而这似乎不是我需要的方法。((Activity)context.Activity.CreateReply()