Sha256: c4ea49f43a0bf4c60e84711b26c76e1fc33fccdde9c16d245323c49902e9f9d0
Contents?: true
Size: 1.76 KB
Versions: 1
Compression:
Stored size: 1.76 KB
Contents
module SmsBroker class VoiceMessageSender attr_reader :client, :errors def initialize(client) @client = client end def to(number) @voice_message_to = number self end def message(text) @voice_message_text = text self end def with(options) @voice_message_options = options self end def deliver unless valid? return Client::Response::Error.new(client.name, errors, errors) end response = client.send_voice_message(build_message) if should_try_with_phone_number?(response) return client.send_voice_message(build_message(:phone_number)) end response end def valid? options = @voice_message_options || {} schema = { message: Compel.string.required.max_length(140), to: Compel.string.required, lang: Compel.string } object = { message: @voice_message_text, to: @voice_message_to, lang: options[:lang] } result = Compel.hash.keys(schema).validate(object) @errors = result.errors result.valid? end private def build_message(from = :sender_id) { text: @voice_message_text, from: get_sender(from), to: @voice_message_to }.merge!(@voice_message_options || {}) end def get_sender(from) if client.sender_id && from == :sender_id client.sender_id else return client.phone_number if client.phone_number.start_with?('+') "+#{client.phone_number}" end end def should_try_with_phone_number?(response) response.is_a?(Client::Response::Error) && response.invalid_sender_id? && client.sender_id end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sms_broker-1.0.3 | lib/sms_broker/voice_message_sender.rb |