Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Botframework 路由附件_Botframework - Fatal编程技术网

Botframework 路由附件

Botframework 路由附件,botframework,Botframework,我正在尝试将发送到bot的附件从一个用户路由到另一个用户。当我尝试从一个模拟器发送到另一个模拟器/电报/skype时,它工作正常,但当我尝试从skype/电报发送时,它根本不工作(skype没有说什么,电报争辩道:“发送到mybot失败:发送到bot的端点失败,HTTP状态为500”)。我应该在哪里找到问题 这是我的密码: if (mes.Attachments != null && mes.Attachments.Any()) {

我正在尝试将发送到bot的附件从一个用户路由到另一个用户。当我尝试从一个模拟器发送到另一个模拟器/电报/skype时,它工作正常,但当我尝试从skype/电报发送时,它根本不工作(skype没有说什么,电报争辩道:“发送到mybot失败:发送到bot的端点失败,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);
if(mes.Attachments!=null&&mes.Attachments.Any())
{
变量列表=新列表)


一些对我有用的链接:,,

上面的代码是正确的,工作正常(如果附件的大小不是太大)。我的问题(和愚蠢的错误)是在其他地方使用mes.Text而没有空检查。Skype/Telegram中的附件有mes.Text==null。

错误消息“发送到bot的端点失败,HTTP状态为500”表示您的bot正在抛出一个500。请尝试附加调试器,看看是否可以捕获它?谢谢您的回答!我没有意识到可以直接在云中调试应用程序(不在模拟器中)。这里是如何做到这一点的链接。我还必须应用来自的修补程序才能使其正常工作。