有没有一种干净的方法可以让机器人使用Azure BotFramework回复电子邮件线程



我正在开发一个机器人,它使用电子邮件通道进行通信并回复电子邮件线程。

我根本找不到任何关于自动回复格式或回复线程的文档。似乎大多数用例都只是发给用户的一次性电子邮件。

当前实现的工作方式是将传入消息强制转换为一个模型(该模型具有所有相关信息、ToRecipients、Body[html of The email]、Text Body[plain Text of email]等(。使用该方法,邮件头从正文中分离出来,用手动创建的邮件头添加机器人回复,并将电子邮件的其余部分附加到邮件的末尾。然后,代码替换或删除html响应中的文本工件。然后调用SendActivityAsync发送消息。

这种方法存在多个问题。其中一些包括诸如回车(\r\n(之类的文本工件,另一些诸如(><o:p>&nbsp(之类的工件,它们通过一些黑盒格式功能自动添加到响应中,而不会被删除。Outlook格式,如将电子邮件地址封装在<和>,但没有正确格式化它们以备外出。

有没有什么方法可以让回复线程变得更容易,或者有任何官方支持?如果没有,至少有任何关于如何解析电子邮件的文档可以帮助解析这些响应变得更容易/更清晰吗?

Bot Framework有一个电子邮件通道,可以像任何其他通道一样使用。电子邮件的JSON格式如下:

{
"type": "message",
"locale": "en-Us",
"channelID": "email",
"from": { "id": "mybot@mydomain.com", "name": "My bot"},
"recipient": { "id": "joe@otherdomain.com", "name": "Joe Doe"},
"conversation": { "id": "123123123123", "topic": "awesome chat" },
"channelData":
{
"htmlBody": "<html><body style = /"font-family: Calibri; font-size: 11pt;/" >This is more than awesome.</body></html>",
"subject": "Super awesome message subject",
"importance": "high",
"ccRecipients": "Yasemin@adatum.com;Temel@adventure-works.com"
}
}

这在信道Data中更改,通过turnContext.Activity.ChannelData访问

官方文档在这里,如何使用channelData(尽管它是Facebook频道,而不是电子邮件(的示例实现在这里。

最新更新