私は現在、ソフトウェアチームのために非常に特化した機能を作成しようとしており、スラックイベントサブスクリプションを使って素晴らしい解決策を考えています。問題は、私が後になっているイベント情報を取得する際に問題が発生していることです。これまでのところ、WCFサービスを呼び出すために余裕を設定することができましたが、後の情報を含む 'イベント'パラメータは常にヌル。ここでSlackイベントのサブスクリプション
は、私がこれまで持っているものです。
[ServiceContract]
public interface ISlackTrelloService
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "SlackPost", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
string SlackPost(string type, string token, string challenge, string team_id, SlackEvent slackEvent);
}
具体的な実装:
public class SlackTrelloService : ISlackTrelloService
{
public string SlackPost(string type, string token, string challenge, string team_id, SlackEvent slackEvent)
{
return challenge;
}
}
SlackEventクラス:
今[JsonObject(Id = "event", Description = "event", Title = "event")]
public class SlackEvent
{
[JsonProperty(PropertyName = "type")]
public string Type { get; set; }
[JsonProperty(PropertyName = "event_ts")]
public string EventTimestamp { get; set; }
[JsonProperty(PropertyName = "user")]
public string User { get; set; }
[JsonProperty(PropertyName = "ts")]
public string Timestamp { get; set; }
[JsonProperty(PropertyName = "item")]
public string Item { get; set; }
}
、SlackEventオブジェクトには問題が少しあります私はそれがによるとスラックによって送信された情報を格納したいのでドキュメント。 (
最初は、パラメータ名が正確には一致しなかったと思っていましたが、@event(イベントはC#のキーワードなので)を使用してもdidn 「tは私が間違ってNewtonsoft JSONライブラリを使用していますかはわからない、または私が行方不明です何か他のものがある場合に動作するようには思え
EDIT:。 新しい方法をデータをキャプチャするために正しい形式で
string SlackPost(string token, string team_id, string api_app_id, SlackEvent slackEvent, string type, string[] authed_users, string event_id, string event_time);
Slackイベントの構造:
[JsonObject("event")]
public class Event
{
[JsonProperty(PropertyName = "type")]
public string Type { get; set; }
[JsonProperty(PropertyName = "channel")]
public string Channel { get; set; }
[JsonProperty(PropertyName = "user")]
public string User { get; set; }
[JsonProperty(PropertyName = "text")]
public string Text { get; set; }
[JsonProperty(PropertyName = "ts")]
public string TimeStamp { get; set; }
}
私のクラスは非常に不完全であると私は、しかし...(私はメソッドの情報を受け入れるために別の方法を必要とする)まさにその考えを要求しますイベントリクエストを実際にトリガーする方法についての情報は見つけられません。つまり、スラックに別のメソッドを呼び出す方法を教えてください。 現在呼び出されているメソッドは動作しています。なぜなら、Slackに設定オプションがあり、これにより、検証用の特定のURLを指定できるからです。 – spuriousGeek
ok、cool。私たちは正しい道にいると思う。スラックは、両方のリクエストタイプを、設定ウィンドウで指定したものと同じURLに送信します。確認ハンドシェイクが完了すると(設定ウィンドウに表示されます)、登録したイベントが発生すると、イベントリクエストを受け取ります。私は[メッセージ](https://api.slack.com/events/message)を購読して、チャンネルでsthをポーズしてトリガーすることを推奨します。 –
元の投稿を編集して、発生したイベントデータをキャプチャするために行った変更を反映しました。私は今、イベント情報(私が実際にやっているビット!)を除いて、すべてのデータを正しく受信しています。私は、イベントオブジェクトをキャプチャしようとするためにNewtonsoft JSONライブラリを使用していますが、おそらくslackEventが常にnullであるために何かを誤解しています。正確な「イベント」にマップする必要があるかもしれませんが、キーワードであるため、作成したデータ構造のID、つまり[JsonObject( "event")]を設定しようとしました。 – spuriousGeek