Ruby on rails 通过Slack Events API确定通道类型
在使用Slack Events API和接收事件通知时,我发现很难确定消息是否以以下方式发送:Ruby on rails 通过Slack Events API确定通道类型,ruby-on-rails,ruby,slack-api,slack,Ruby On Rails,Ruby,Slack Api,Slack,在使用Slack Events API和接收事件通知时,我发现很难确定消息是否以以下方式发送: 直接消息 公共频道 私人组/频道 请求正文中没有标识发送消息的通道类型的字段。因此,如果您希望根据频道类型为应用程序提供不同的行为(例如,标记在多人频道中发送消息的用户),则没有明显的方法 无论通道类型如何,请求始终遵循相同的格式: { :token=>"some_auth_token", :team_id=>"T1234ABCD", :api_app_id=>"A1
- 直接消息
- 公共频道
- 私人组/频道
{
: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开始,例如
- 公共频道
- 以C开头,例如
:channel=>“C1234ABCD”
- 以C开头,例如
- 私人组/频道
- 以G开头,例如
:频道=>“G1234ABCD”
- 以G开头,例如
def channel?(channel_id)
return true if channel_id.start_with?("C", "G")
false
end
此外,我还设法从Slack获得了一个响应,确认这是预期的行为,因此以这种方式假设通道类型应该是安全的