无法在 MS bot 框架中向消息添加附件:对象引用未设置为对象的实例

Cannot add attachment to message in MS bot framework: object reference not set to an instance of an object

我正在使用 MS Bot Framework 编写一个 facebook 机器人。我可以成功发送文本回复,但我似乎无法发送图片。

Microsoft 在此处有以下示例 - http://docs.botframework.com/en-us/csharp/builder/sdkreference/attachments.html

replyMessage.Attachments.Add(new Attachment()
{
    ContentUrl = "https://upload.wikimedia.org/wikipedia/en/a/a6/Bender_Rodriguez.png",
    ContentType = "image/png",
    Name = "Bender_Rodriguez.png"      
});

该代码对我不起作用 - 它会引发此错误:

Object reference not set to an instance of an object.

Bot_Application1.MessagesController.d__0.MoveNext()
in C:\Users------\Dropbox\code\Bot Application1\Bot
Application1\Controllers\MessagesController.cs:line 92

第 92 行是我调用 .Attachments.Add() 方法的地方。

我尝试修改代码以确保它内部没有空属性,因此我添加了非空内容和 ThumbnailUrl,但这也不起作用(有或没有这两个参数)。和上面调用Add()方法的错误一模一样

Activity reply3 = activity.CreateReply("blah");

Attachment pic = new Attachment();
pic.ContentUrl = "https://upload.wikimedia.org/wikipedia/en/a/a6/Bender_Rodriguez.png";
pic.ContentType = "image/png";
pic.Name = "Bender_Rodriguez.png";
pic.Content = "Test";
pic.ThumbnailUrl = pic.ContentUrl;

reply3.Attachments.Add(pic);

await connector.Conversations.ReplyToActivityAsync(reply3);

我做错了什么?

原来你需要添加文档中没有提到的一行:

                reply3.Attachments = new List<Attachment>();

初始化附件后它工作正常。