在使用Slack Events API并接收事件通知时,我发现很难确定消息是否在以下位置发送:
-
直接留言
-
公共 Channels
-
私人团体/ Channels
请求正文中没有字段标识发送消息的 Channels 类型 . 因此,如果您希望根据 Channels 类型为应用程序执行不同的行为,(例如,标记在多人 Channels 中发送消息的用户) ),没有明显的方法可以做到这一点 .
无论通道类型如何,请求始终遵循相同的格式:
{
: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"]
}
1 Answer
我注意到的事情(尽管在Slack文档中找不到)是,通道标识符以相应的字符开头,具体取决于使用的通道类型:
直接留言
以 D 开头,例如
:channel=>"D1234ABCD"
公共 Channels
以 C 开头,例如
:channel=>"C1234ABCD"
私人团体/ Channels
以 G 开头,例如
:channel=>"G1234ABCD"
因此,您可以通过检查通道ID的第一个字符来确定通道类型 .
例如,在Ruby中,我使用以下方法:
此外,我设法得到Slack的回复,确认这是预期的行为,因此以这种方式假设通道类型应该是安全的 .