2017-02-04 83 views
0

雖然與鬆弛事件API工作和接受事件通知,我發現這是很難確定消息是否在發送的:確定信道類型

  • 直接留言
  • 公共頻道
  • 私人組/通道

有請求體中沒有字段標識通道的消息類型在,系統會將傳送因此,如果你想爲你的AP不同的行爲摺疊取決於信道類型(例如,在多人頻道中標記發送消息的用戶),但沒有明顯的方法可以做到這一點。

不管通道型的,請求始終遵循相同的格式:

{ 
    :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

我所做的通知(雖然鬆弛文檔中找不到),則該通道標識符與相應的字符開始取決於所使用的信道類型:

  • 直接消息
    • 開始於d,例如:channel=>"D1234ABCD"
  • 公共頻道
    • 開始於Ç,例如:channel=>"C1234ABCD"
  • 私人組/頻道
    • 開始於ģ,例如:channel=>"G1234ABCD"

因此,你可以通過檢查信道ID的第一個字符確定信道類型。

例如,在Ruby中,我用下面的方法:

def channel?(channel_id) 
    return true if channel_id.start_with?("C", "G") 
    false 
end 

而且,我設法擺脫時差,確認這是預期行爲的響應,所以它應該是安全的假設在信道類型這條路。