2017-11-06 3 views
1

私は 'rbot'というカスタムスラックボットを持っています。また、カスタムスラッシュコマンド '/ r-out'を作成しました。このコマンドがどのチャンネルから実行されている場合でも、私のJavaサービスは、 'channel_id'と 'channel_name'を含むパラメータで呼び出されています。このパラメータは、このコマンドが実行されているチャンネルを特定するために使用します。直接メッセージチャンネルのスラッシュコマンドによるボットの識別

ここでは、このコマンドを「rbot」に限定したいと考えています。そのため、コマンドが 'rbot'を持つダイレクトメッセージチャネルのように実行されているかどうかを確認する必要があります。どうすればこれを達成できますか?

答えて

2

スラッシュコマンドがアプリで直接メッセージチャンネルに送信されたことを確認するには、スラッシュリクエスト内のchannel_idがアプリの有効なダイレクトメッセージチャンネルを参照していることを確認するだけです。より詳細には

:(PHP配列)

array (
    'token' => 'XXX', 
    'team_id' => 'T12345678', 
    'team_domain' => 'mydomain', 
    'channel_id' => 'D12345678', 
    'channel_name' => 'directmessage', 
    'user_id' => 'U12345678', 
    'user_name' => 'erik.kalkoken', 
    'command' => '/evestatus', 
    'text' => '', 
    'response_url' => 'https://hooks.slack.com/commands/Txxx', 
    'trigger_id' => '123', 
) 

channel_id:ユーザーがアプリは、このようなスラッシュ要求を受信するアプリと直接メッセージ・チャネルのあなたのスラッシュコマンドを実行

これがダイレクトメッセージチャネルからのものであることを示す「D」で始まります。

次に、im.listであなたのアプリのダイレクトメッセージチャンネルのリストをプルします。アプリトークンを使用するようにして、アプリのダイレクトメッセージチャンネルを入手してください。

channel_idがそのリストにある場合、スラッシュコマンドはアプリでの直接メッセージチャンネルで使用されました。

+0

今日試してみました。ありがとうございました。 – rsnhah

+0

私は "im.list"に関するいくつかの質問をしています。それは、 "D"で始まるchannelIdは、ワークスペース内のすべてのユーザが、単一のbot 'rbot'と通信しても異なっているようです。新しいユーザーがワークスペースに参加すると、新しいIDが生成されます。 channelIdが同じユーザーとボット( 'rbot')のペアに対して変更される可能性はありますか? – rsnhah

関連する問題