Sha256: 464a86da85dffb015758225c04ce712675d732b210e1990f8f2c76d68182cae7

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

require 'twilio-ruby'

module Nuntius
  # Send SMS messages using twilio.com
  class TwilioSmsProvider < BaseProvider
    transport :sms

    setting_reader :auth_token, required: true, description: 'Authentication token'
    setting_reader :sid, required: true, description: 'Application SID, see Twilio console'
    setting_reader :from, required: true, description: "Phone-number or name (example: 'Nuntius') to send the message from"

    # Twilio statusses: queued, failed, sent, delivered, or undelivered
    states %w[failed undelivered] => 'undelivered', 'delivered' => 'delivered'

    def deliver
      response = client.messages.create(from: message.from.present? ? message.from : from, to: message.to, body: message.text)
      message.provider_id = response.sid
      message.status = translated_status(response.status)
      message
    end

    def refresh
      response = client.messages(message.provider_id).fetch
      message.provider_id = response.sid
      message.status = translated_status(response.status)
      message
    end

    private

    def client
      @client ||= Twilio::REST::Client.new(sid, auth_token)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nuntius-1.0.27 app/providers/nuntius/twilio_sms_provider.rb