2017-11-06 7 views
1

나는 'rbot'이라고 불리는 커스텀 슬랙 봇을 가지고있다. 또한 커스텀 슬래시 커맨드 '/ r-out'을 만들었습니다. 이 커멘드가 어느 채널에서도 실행될 때마다,이 커멘드가 실행되고있는 채널을 식별하기 위해서 사용하는 「channel_id」및 「channel_name」를 포함한 java 서비스가 불려갑니다.직접 메시지 채널에서 슬래시 명령으로 봇 식별

이제 '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가 동일한 사용자 및 bot ('rbot') 쌍에 대해 수정 될 수도 있습니까? – rsnhah