2016-08-04 85 views
1

我想獲得以下行到我的項目,以測試Microsoft博特框架的電子郵件功能的電子郵件服務:如何實施Microsoft網絡機器人

   List<ChannelAccount> participants = new List<ChannelAccount>(); 
       participants.Add(new ChannelAccount("[email protected]", "Shahin Ansari")); 
       IMessageActivity message = Activity.CreateMessageActivity(); 
       bool isGroup = false; 
       ConversationParameters cpMessage = new ConversationParameters(message.Recipient, isGroup, participants, "Quarter End Discussion"); 
       var ConversationId = connector.Conversations.CreateConversationAsync(cpMessage); 
       //message.From = botChannelAccount; 
       message.From = new ChannelAccount(); 
       message.Conversation = new ConversationAccount(); 

       message.ChannelId = "email"; 

       message.Text = "Hey, what's up everyone?"; 

       message.Locale = "en-Us"; 

       connector.Conversations.SendToConversation((Activity)message); 
       //await connector.Conversations.SendToConversation((Activity)message); 
       var replyMessage = activity.CreateReply("Yo, I heard you Sean.", "en"); 
       connector.Conversations.ReplyToActivityAsync(replyMessage); 

但我沒有收到電子郵件。

我知道,發送'喲,我聽說你肖恩'的「打印」聲明在我把它放在頂部時確實有效。但它不在底部。所以在這幾行中有些東西會突破。但是當我把它推到Azure時,我不知道該如何解決這個問題,並且在本地調試它並不會讓我感覺太多,因爲它似乎編譯得很好。有沒有人以前做過?

我想我提出了所有你建議的更新,並推送到Azure,但沒有生成電子郵件。這裏是我更新的代碼:

namespace Bot_Application1 
{ 
    [BotAuthentication] 
    public class MessagesController : ApiController 
    { 
     /// <summary> 
     /// POST: api/Messages 
     /// Receive a message from a user and reply to it 
     /// </summary> 
     public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
     { 
      if (activity.Type == ActivityTypes.Message) 
      { 
       ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
       // calculate something for us to return 
       int length = (activity.Text ?? string.Empty).Length; 

       // return our reply to the user 
       Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters"); 
       await connector.Conversations.ReplyToActivityAsync(reply); 
       var replyMessage = activity.CreateReply("Yo, I heard you Sean.", "en"); 
       await connector.Conversations.ReplyToActivityAsync(replyMessage); 

       // Start of my own code 
       //try { 
       // The code until the line above 
       List<ChannelAccount> participants = new List<ChannelAccount>(); 
       participants.Add(new ChannelAccount("[email protected]", "Shahin Ansari")); 

       IMessageActivity message = Activity.CreateMessageActivity(); 
       bool isGroup = false; 
       ConversationParameters cpMessage = new ConversationParameters(message.Recipient, isGroup, participants, "Quarter End Discussion"); 
       var ConversationId = await connector.Conversations.CreateConversationAsync(cpMessage); 
       message.Recipient = new ChannelAccount("[email protected]", "Shahin Ansari"); 
       //message.From = new ChannelAccount("[email protected]", "Shahin Ansari"); 

       message.From = new ChannelAccount(); 
       //message.From = message.ChannelData; 
       message.Conversation = new ConversationAccount(id: ConversationId.Id); 

       message.ChannelId = "email"; 

       message.Text = "Hey, what's up everyone?"; 

       message.Locale = "en-Us"; 

       connector.Conversations.SendToConversation((Activity)message); 
       //await connector.Conversations.SendToConversation((Activity)message); 

       //} 
       //catch (Exception ex) 
       //{ 
       // Trace.TraceError("Sean's Exception: " + ex.ToString()); 
       // throw; 
       //} 
       //await connector.Conversations.ReplyToActivityAsync(reply); 

      } 
      else 
      { 
       HandleSystemMessage(activity); 
      } 
      var response = Request.CreateResponse(HttpStatusCode.OK); 
      return response; 

     } 

     private Activity HandleSystemMessage(Activity message) 
     { 
      if (message.Type == ActivityTypes.DeleteUserData) 
      { 
       // Implement user deletion here 
       // If we handle user deletion, return a real message 
      } 
      else if (message.Type == ActivityTypes.ConversationUpdate) 
      { 
       // Handle conversation state changes, like members being added and removed 
       // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info 
       // Not available in all channels 
      } 
      else if (message.Type == ActivityTypes.ContactRelationUpdate) 
      { 
       // Handle add/remove from contact lists 
       // Activity.From + Activity.Action represent what happened 
      } 
      else if (message.Type == ActivityTypes.Typing) 
      { 
       // Handle knowing tha the user is typing 
      } 
      else if (message.Type == ActivityTypes.Ping) 
      { 
      } 

      return null; 

     } 
    } 
} 

回答

0

主要問題是您需要設置消息中的對話值。也或許也會等待的異步功能:

 List<ChannelAccount> participants = new List<ChannelAccount>(); 
     participants.Add(new ChannelAccount("[email protected]", "Shahin Ansari")); 
     IMessageActivity message = Activity.CreateMessageActivity(); 
     bool isGroup = false; 
     ConversationParameters cpMessage = new ConversationParameters(message.Recipient, isGroup, participants, "Quarter End Discussion"); 
     var ConversationId = await connector.Conversations.CreateConversationAsync(cpMessage); 
     //message.From = botChannelAccount; 
     message.From = new ChannelAccount(); 
     message.Conversation = new ConversationAccount(); 

     message.ChannelId = "email"; 
 message.Conversation = new ConversationAccount(id: ConversationId.Id); 
 message.Text = "Hey, what's up everyone?"; 

     message.Locale = "en-Us"; 

     connector.Conversations.SendToConversation((Activity)message); 
     //await connector.Conversations.SendToConversation((Activity)message); 
     var replyMessage = activity.CreateReply("Yo, I heard you Sean.", "en"); 
     await connector.Conversations.ReplyToActivityAsync(replyMessage); 
+0

謝謝。這是工作。有一些東西我需要微調,但電子郵件正在生成。 – maverick