Module: Whatsapp

Defined in:
lib/whatsapp.rb,
lib/whatsapp/group.rb,
lib/whatsapp/bridge.rb,
lib/whatsapp/client.rb,
lib/whatsapp/errors.rb,
lib/whatsapp/events.rb,
lib/whatsapp/logger.rb,
lib/whatsapp/message.rb,
lib/whatsapp/session.rb,
lib/whatsapp/version.rb,
lib/whatsapp/notifier.rb,
lib/whatsapp/heartbeat.rb,
lib/whatsapp/connection.rb,
lib/whatsapp/rate_limiter.rb,
lib/whatsapp/record_proxy.rb,
lib/whatsapp/account_proxy.rb,
lib/whatsapp/configuration.rb,
lib/whatsapp/rails/helpers.rb,
lib/whatsapp/rails/railtie.rb,
lib/whatsapp/message_handler.rb,
lib/whatsapp/session_manager.rb,
lib/whatsapp/webhook_signature.rb,
lib/whatsapp/message_dispatcher.rb,
lib/whatsapp/rails/model_extension.rb,
lib/whatsapp/concerns/group_methods.rb,
lib/whatsapp/concerns/message_sending.rb,
lib/generators/whatsapp/install/install_generator.rb,
lib/generators/whatsapp/webhook/webhook_generator.rb

Overview

WhatsApp personal account integration for Ruby and Rails.

Connect WhatsApp via a local Node.js bridge powered by Baileys. Supports multi-session, rich messages, rate limiting, and health checks.

Examples:

Quick start

Whatsapp.configure do |config|
  config.auth_dir = "/tmp/whatsapp_sessions"
end

session = Whatsapp.session("my_account")
session.connect
session.on_qr { |qr| puts qr }
session.send_message(to: "+33612345678", text: "Hello!")

Rails model integration

class User < ApplicationRecord
  has_whatsapp :phone
end
user.whatsapp.send_message("Hello!")

Defined Under Namespace

Modules: Concerns, Generators, Rails, WebhookSignature Classes: AccountProxy, Bridge, BridgeError, BridgeNotRunning, BridgeTimeout, Client, Configuration, Connection, Error, Events, Group, Heartbeat, Message, MessageDispatcher, MessageFailed, MessageHandler, NodeNotFound, NotConnected, Notifier, RateLimited, RateLimiter, RecordProxy, Session, SessionManager, WLogger, WebhookSignatureError, WhatsAppError

Constant Summary collapse

VERSION =

Current gem version.

"0.1.0"

Class Method Summary collapse

Class Method Details

.clientClient

Default client (shortcut for +session("default").client+).

Returns:



95
96
97
# File 'lib/whatsapp.rb', line 95

def client
  session("default").client
end

.configurationConfiguration

Global configuration instance.

Returns:



59
60
61
# File 'lib/whatsapp.rb', line 59

def configuration
  @configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Configure the gem.

Yields:

Yield Parameters:



52
53
54
# File 'lib/whatsapp.rb', line 52

def configure
  yield configuration
end

.connect!Session

Connect the default session.

Returns:



102
103
104
# File 'lib/whatsapp.rb', line 102

def connect!
  session("default").connect
end

.disconnect_all!void

This method returns an undefined value.

Disconnect all sessions.



109
110
111
# File 'lib/whatsapp.rb', line 109

def disconnect_all!
  session_manager.disconnect_all!
end

.loggerWLogger

Global logger instance.

Returns:



66
67
68
# File 'lib/whatsapp.rb', line 66

def logger
  @logger ||= WLogger.new(configuration.log_path, level: configuration.log_level)
end

.reset!void

This method returns an undefined value.

Reset all state (sessions, configuration, logger).



116
117
118
119
120
121
# File 'lib/whatsapp.rb', line 116

def reset!
  session_manager.disconnect_all!
  @session_manager = nil
  @configuration = nil
  @logger = nil
end

.session(name) ⇒ Session

Get or create a named session.

Parameters:

  • name (String, Symbol)

    session name

Returns:



81
82
83
# File 'lib/whatsapp.rb', line 81

def session(name)
  session_manager.session(name)
end

.session_managerSessionManager

Global session manager.

Returns:



73
74
75
# File 'lib/whatsapp.rb', line 73

def session_manager
  @session_manager ||= SessionManager.new
end

.sessionsHash{String => Session}

All active sessions.

Returns:



88
89
90
# File 'lib/whatsapp.rb', line 88

def sessions
  session_manager.sessions
end