通过 Slack 事件确定通道类型 API
Determine Channel Type via Slack Events API
在使用 Slack Events API 和接收事件通知时,我发现很难确定消息是否在以下时间发送:
- 私信
- Public频道
- 私人Group/Channel
请求正文中没有标识发送消息的渠道类型的字段。因此,如果您希望应用程序根据渠道类型采取不同的行为(例如,标记发送消息的用户)多人通道),没有明显的方法。
无论渠道类型如何,请求始终遵循相同的格式:
{
:token=>"some_auth_token",
:team_id=>"T1234ABCD",
:api_app_id=>"A1234ABCD",
:event=> {
:type=>"message",
:user=>"U1234ABCD",
:text=>"Who loves Orange Soda?",
:ts=>"1486219313.000034",
:channel=>"D1234ABCD",
:event_ts=>"1486219313.000034"
},
:type=>"event_callback",
:authed_users=>["U1234ABCD"]
}
我确实注意到(虽然在 Slack 文档中找不到),频道标识符以相应的字符开头,具体取决于所使用的频道类型:
- 私信
- 以 D 开头,例如
:channel=>"D1234ABCD"
- Public频道
- 以 C 开头,例如
:channel=>"C1234ABCD"
- 私人Group/Channel
- 以 G 开头,例如
:channel=>"G1234ABCD"
因此您可以通过检查频道 ID 的第一个字符来确定频道类型。
比如在Ruby中,我使用了下面的方法:
def channel?(channel_id)
return true if channel_id.start_with?("C", "G")
false
end
此外,我设法从 Slack 得到了确认这是预期行为的回复,因此以这种方式假设渠道类型应该是安全的。
在使用 Slack Events API 和接收事件通知时,我发现很难确定消息是否在以下时间发送:
- 私信
- Public频道
- 私人Group/Channel
请求正文中没有标识发送消息的渠道类型的字段。因此,如果您希望应用程序根据渠道类型采取不同的行为(例如,标记发送消息的用户)多人通道),没有明显的方法。
无论渠道类型如何,请求始终遵循相同的格式:
{
:token=>"some_auth_token",
:team_id=>"T1234ABCD",
:api_app_id=>"A1234ABCD",
:event=> {
:type=>"message",
:user=>"U1234ABCD",
:text=>"Who loves Orange Soda?",
:ts=>"1486219313.000034",
:channel=>"D1234ABCD",
:event_ts=>"1486219313.000034"
},
:type=>"event_callback",
:authed_users=>["U1234ABCD"]
}
我确实注意到(虽然在 Slack 文档中找不到),频道标识符以相应的字符开头,具体取决于所使用的频道类型:
- 私信
- 以 D 开头,例如
:channel=>"D1234ABCD"
- 以 D 开头,例如
- Public频道
- 以 C 开头,例如
:channel=>"C1234ABCD"
- 以 C 开头,例如
- 私人Group/Channel
- 以 G 开头,例如
:channel=>"G1234ABCD"
- 以 G 开头,例如
因此您可以通过检查频道 ID 的第一个字符来确定频道类型。
比如在Ruby中,我使用了下面的方法:
def channel?(channel_id)
return true if channel_id.start_with?("C", "G")
false
end
此外,我设法从 Slack 得到了确认这是预期行为的回复,因此以这种方式假设渠道类型应该是安全的。