2016-08-12 17 views
0

添付ファイルのみで構成されるメッセージで返信するボットを持っています。それがSlackで動作するとき、Slackの添付書式がかなり重く使用されますので、ChannelDataプロパティを使用する必要があります。ボットコネクタのバージョン3でカスタムスラックメッセージを送信できません

は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); 

に変更されました。

今、問題は、私が返信をスラックに返さないということです。

例外の種類::System.ArgumentNullException

失敗しまし方法:SlackChannel.SlackMapper + d__5.MoveNext

例外メッセージ:値はすることはできませんがAppInsightでの診断は、どこかのコネクタでは、このような何かが起こることを私に示してヌル。パラメータ名:ソース

ChannelData:{}

メッセージ:無効なChannelData

この診断でChannelDataが空のようですのでご注意ください。ですから、私がここから集めるのは、BotConnectorが処理する方法で何かが変わったということです。ChannelData。私が間違っていることを正確に見つけ出すにはどうすればよいですか?

答えて

0

実際にはConnectorClientクライアント内に問題があります。これは、channelDataを取り除いています。その理由はits serialization settingsで、ReadOnlyJsonContractResolverを使用しています。これはすべての読み取り専用プロパティをスキップします。もちろん、匿名クラスのすべてのプロパティは読み取り専用です。解決策は非常に簡単である、ということを知っ

reply.ChannelData = JObject.FromObject(new {attachments});

ではなく、匿名クラスのJObjectの明示的な使用に注意してください。

+0

ヘルプの要点を追加しました。https://gist.github.com/phaniav/cf03f8f62ee7c6dc891486d8df893794 – phani

関連する問題