【发布时间】:2016-08-31 08:19:35
【问题描述】:
我有一个机器人,它回复一条仅包含附件的消息。当它在 Slack 上工作时,它大量使用 Slack 附件格式,因此我必须使用 ChannelData 属性。
在 BotConnector 版本 1 中,代码是这样的
var reply = message.CreateReplyMessage();
reply.Attachments = new List<Attachment>();
var attachments = new List<object>(); //Slack-formatted attachments
//filling attachments...
reply.ChannelData = new {attachments};
它奏效了。现在,在版本 3 中,代码已更改为
var reply = activity.CreateReply();
reply.Attachments = new List<Attachment>();
var attachments = new List<object>(); //Slack-formatted attachments
//filling attachments...
reply.ChannelData = new {attachments};
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
await connector.Conversations.ReplyToActivityAsync(reply);
这基本上归结为使用不同的方法来创建回复,并使用另一种方法发送回复。
现在,问题是,我没有收到 Slack 的回复。 AppInsight 中的诊断告诉我,在连接器的某个地方会发生这样的事情:
异常类型:System.ArgumentNullException
失败的方法:SlackChannel.SlackMapper+d__5.MoveNext
异常消息:值不能为空。参数名称:来源
频道数据:{}
消息:无效的 ChannelData
请注意,此诊断中的ChannelData 似乎为空。所以我从这一切中收集到的是,BotConnector 处理ChannelData 的方式发生了一些变化。我怎样才能知道我到底做错了什么?
【问题讨论】:
标签: botframework