Sha256: 46da23d7f6a839b64fc8f8d5199dce50146fb21000dbefe9b0a80b103c2693b1

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'lita/adapters/ringcentral/callback'
require 'ringcentral_sdk'

module Lita
  module Adapters
    class RingCentral < Adapter
      class Connector
        attr_reader :robot, :client

        def initialize(robot, app_key, app_secret, server, username, extension, password, token, sms_number, debug: false)
          @robot = robot
          @client = RingCentralSdk.new app_key, app_secret, server
          @username = username
          @extension = extension
          @password = password
          @token = token
          @sms_number = sms_number
        end

        def connect
          client_connect
        end

        def client_connect
          Lita.logger.info('Authenticating with RingCentral.')
          if @token.nil?
            @client.authorize_password @username, @extension, @password
          else
            @client.set_token @token
          end

          @subscription = @client.create_subscription
          @subscription.subscribe([
            '/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS'
          ])

          observer = Lita::Adapters::RingCentral::Callback.new @robot
          @subscription.add_observer observer
        end

        def message(to_number, strings)
          Lita.logger.info("Sending message to #{to_number}")
          Lita.logger.info MultiJson.encode(strings)
          strings.each do |s|
            @client.messages.sms.create(
              from: @sms_number,
              to: to_number,
              text: s
            )
          end
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lita-ringcentral-0.0.2 lib/lita/adapters/ringcentral/connector.rb