Microsoft机器人框架 - 如何从团队频道获取用户数据



我的聊天机器人中有一个 LUIS 意向,用于以用户身份发送电子邮件(代码如下(。目前,它以我的身份向我发送电子邮件(但从具有从每个人邮箱发送权限的自动化邮箱发送(。我希望它读取在 MS Teams 中与机器人交互的用户的属性并改用该用户的电子邮件地址?

[LuisIntent("Endpoint_CreateTicket")]
public async Task EndpointCreateTicketIntent(IDialogContext context, LuisResult result)
{
using (SmtpClient client = new SmtpClient())
{
using (MailMessage message = new MailMessage())
{
client.Host = "smtp.office365.com";
client.Port = 587;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("<confidential>", "<confidential>");
client.EnableSsl = true;
message.From = new MailAddress("Mark.Hawkins-Wood@christie.com");
message.Subject = "THIS IS THE SUBJECT";
message.Body = "THIS IS THE BODY";
message.To.Add("Mark.Hawkins-Wood@christie.com");
try
{
client.Send(message);
}
catch(Exception e)
{
await context.PostAsync(e.Message);
}
}
}
}

您应该具有提取电子邮件的意图。示例,您可以有一个名为ExtractEmail类型Email的意向

用户可以输入类似my email is klex@outlook.com

因此,LUIS JSON 响应返回类似

"entities": [
{
"entity": "klex@outlook.com",
"type": "Email",
"startIndex": 18,
"endIndex": 22,
"score": 0.9866132
}]

从你的函数试试这个

using System.Net.Mail;
try{
MailAddress mail = new MailAddress(result.entity);
message.From  = mail;
}
catch(Exception){
//Reply with an error
}

有关意向的更多信息

最新更新