2016-11-23 34 views
1

我試圖將發送到bot的附件從一個用戶路由到另一個用戶。它正常工作,而我試圖從模擬器發送一些東西到模擬器/電報/ Skype,但是當我試圖從Skype /電報發送它時根本不工作(skype什麼也沒說,電報說:「POST到mybot失敗:POST機器人端點失敗,HTTP狀態500「)。我應該在哪裏尋找問題?路由附件

這裏是我的代碼:

if (mes.Attachments != null && mes.Attachments.Any()) 
      { 
       var list = new List<Attachment>(); 
       foreach (var attachment in mes.Attachments) 
       { 
        using (HttpClient httpClient = new HttpClient()) 
        { 
         // Skype attachment URLs are secured by a JwtToken, so we need to pass the token from our bot. 
         if (mes.ChannelId.Equals("skype", StringComparison.InvariantCultureIgnoreCase) && 
          new Uri(attachment.ContentUrl).Host.EndsWith("skype.com")) 
         { 
          var mstoken = await new MicrosoftAppCredentials().GetTokenAsync(); 
          httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", 
          mstoken); 
         } 

         var responseMessage = await httpClient.GetAsync(attachment.ContentUrl); 

         var ms = await ConvertContentToByteArray(responseMessage);  

         var sendAttachment = new Attachment() 
         { 
          ContentType = attachment.ContentType, 
          Name = attachment.Name, 
          ContentUrl = String.Format("data:image/png;base64,{1}", attachment.ContentType, 
          Convert.ToBase64String(ms)) 
         }; 

         list.Add(sendAttachment); 
        } 
       } 
       message.Attachments = list; 
       message.AttachmentLayout = mes.AttachmentLayout; 
      } 

await connector.Conversations.SendToConversationAsync((Activity)message); 

「MES」 是傳入消息,「消息 - outcoming

預先感謝您爲您的回答

更新1:我!設法解決我發送/接收文件的問題(請參閱下面的答案)。不幸的是出現了文件大小限制的新問題(請參閱Useful post

這是有用的,我有些鏈接:Send Attachment SampleReceive Attachment SampleUseful postSome other receiving example

+1

錯誤消息「發送到機器人端點失敗,HTTP狀態500」意味着您的機器人正在投擲500.嘗試附加調試器並查看是否可以捕獲它? – Lars

+0

感謝您的回答!我沒有意識到可以直接在雲中調試應用程序(而不是在仿真器中)。 這裏是鏈接如何做到這一點[遠程調試Web應用程序](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-dotnet-troubleshoot-visual-studio)。我也必須從[這個答案](http://stackoverflow.com/questions/17659473/visual-studio-remote-debugger-invalid-access-to-memory-location-feature)應用補丁,使其工作。 – Sovan

回答

1

上面的代碼是否正確,工作正常(如果附件的大小不是太大)。我的問題(和愚蠢的錯誤)是在使用mes.Text在其他地方沒有空檢查。 Skype/Telegram中的附件有mes.Text == null。