Microsoft Bot Framework - Как получить пользовательские данные из канала команды - PullRequest
0 голосов
/ 22 октября 2018

У меня есть чат LUIS в моем ChatBot, чтобы отправить электронное письмо как пользователь (код ниже).В данный момент он отправляет мне электронное письмо от меня (но от почтового ящика автоматизации с разрешениями на отправку из любого почтового ящика).Я хочу, чтобы он прочитал свойства пользователя, который взаимодействует с ботом в 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);
                }
            }
        }
    }

1 Ответ

0 голосов
/ 22 октября 2018

У вас должно быть намерение извлечь письмо.Например, у вас может быть намерение с именем 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
  }

Дополнительная информация о Intents

...