0.0
No commit activity in last 3 years
No release in over 3 years
A simple Slack RTM API Client
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

 Project Readme

Slack RTM Api

Ruby wrapper for Slack RTM api

Slack API Logo

How it works?

  1. Initialize a client with client = SlackRTMApi::ApiClient.new(token: client_token), where the client_token is your client Slack token.

  2. Bind websocket events and give them a callback.

How to use?

client = SlackRTMApi::ApiClient.new(token: client_token)

client.bind :message do |data|
  if data['type'] == 'message' && data['subtype'] != 'bot_message'
    p "Message: #{data['text']} by #{data['user']} in ##{data['channel']}"
  end
end

client.start

Bind events

Available events are open, close, message and error, they all can be bound with the client.bind function like this:

client.bind :open do
end
client.bind :message do |data|
end
client.bind :error do |data|
end

Options

Debug logging

By default, the gem is silent, however debugging output can be enabled using the debug: true option when declaring a new instance, which enables logging to STDOUT via Logger.

client = SlackRTMApi::ApiClient.new(token: client_token, debug: true)

Auto-start mode

By default, declaring a new instance of ApiClient will also initiate the connection to Slack. If this is not desired behavior, use auto_start: false when declaring a new instance. The timeout before returning if the connection cannot be made is adjustable with the open_wait_timeout options, which defaults to 15 seconds.

client = SlackRTMApi::ApiClient.new(token: client_token, auto_start: false)
# -or-
client = SlackRTMApi::ApiClient.new(token: client_token, open_wait_timeout: 5)

Auto-reconnect mode

SlackRTMApi tracks Slack reconnect_url messages, and constantly updates it's internal URL with these periodic messages. By default, SlackRTMApi will then use the last broadcast URL in order to initiate a reconnect in the case of connection failure. This behavior can be overidden by using auto_reconnect: false

client = SlackRTMApi::ApiClient.new(token: client_token, auto_reconnect: false)

WebSocket Ping/Pong

SlackRTMApi uses client-initiated WebSocket Keepalive Ping/Pongs in order to more quickly realize a broken connection. By default, Ping packets are sent when there is no activity for 15 seconds. This threshold can be configured by using the ping_threshold: ## option.

client = SlackRTMApi::ApiClient.new(token: client_token, ping_threshold: 600)