class Vonage::Voice::Actions::Conversation

Attributes

canHear[RW]
canSpeak[RW]
endOnExit[RW]
musicOnHoldUrl[RW]
mute[RW]
name[RW]
record[RW]
startOnEnter[RW]

Public Class Methods

new(attributes = {}) click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 8
def initialize(attributes = {})
  @name = attributes.fetch(:name)
  @musicOnHoldUrl = attributes.fetch(:musicOnHoldUrl, nil)
  @startOnEnter = attributes.fetch(:startOnEnter, nil)
  @endOnExit = attributes.fetch(:endOnExit, nil)
  @record = attributes.fetch(:record, nil)
  @canSpeak = attributes.fetch(:canSpeak, nil)
  @canHear = attributes.fetch(:canHear, nil)
  @mute = attributes.fetch(:mute, nil)

  after_initialize!
end

Public Instance Methods

action() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 84
def action
  create_conversation!(self)
end
after_initialize!() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 21
def after_initialize!
  if self.musicOnHoldUrl
    verify_music_on_hold_url
  end

  if self.startOnEnter
    verify_start_on_enter
  end

  if self.endOnExit
    verify_end_on_exit
  end

  if self.record
    verify_record
  end

  if self.canSpeak
    verify_can_speak
  end

  if self.canHear
    verify_can_hear
  end

  if self.mute
    verify_mute
  end
end
create_conversation!(builder) click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 88
def create_conversation!(builder)
  ncco = [
    {
      action: 'conversation',
      name: builder.name
    }
  ]

  ncco[0].merge!(musicOnHoldUrl: builder.musicOnHoldUrl) if (builder.musicOnHoldUrl || builder.musicOnHoldUrl == false)
  ncco[0].merge!(startOnEnter: builder.startOnEnter) if (builder.startOnEnter || builder.startOnEnter == false)
  ncco[0].merge!(endOnExit: builder.endOnExit) if (builder.endOnExit || builder.endOnExit == false)
  ncco[0].merge!(record: builder.record) if builder.record
  ncco[0].merge!(canSpeak: builder.canSpeak) if builder.canSpeak
  ncco[0].merge!(canHear: builder.canHear) if builder.canHear
  ncco[0].merge!(mute: builder.mute) if builder.mute

  ncco
end
verify_can_hear() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 75
def verify_can_hear
  raise ClientError.new("Expected 'canHear' value to be an Array of leg UUIDs") unless self.canHear.is_a?(Array)
end
verify_can_speak() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 71
def verify_can_speak
  raise ClientError.new("Expected 'canSpeak' value to be an Array of leg UUIDs") unless self.canSpeak.is_a?(Array)
end
verify_end_on_exit() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 63
def verify_end_on_exit
  raise ClientError.new("Expected 'endOnExit' value to be a Boolean") unless self.endOnExit == true || self.endOnExit == false
end
verify_music_on_hold_url() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 51
def verify_music_on_hold_url
  uri = URI.parse(self.musicOnHoldUrl)

  raise ClientError.new("Invalid 'musicOnHoldUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)

  self.musicOnHoldUrl
end
verify_mute() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 79
def verify_mute
  raise ClientError.new("Expected 'mute' value to be a Boolean") unless self.mute == true || self.mute == false
  raise ClientError.new("The 'mute' value is not supported if the 'canSpeak' option is defined") if self.canSpeak
end
verify_record() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 67
def verify_record
  raise ClientError.new("Expected 'record' value to be a Boolean") unless self.record == true || self.record == false
end
verify_start_on_enter() click to toggle source
# File lib/vonage/voice/actions/conversation.rb, line 59
def verify_start_on_enter
  raise ClientError.new("Expected 'startOnEnter' value to be a Boolean") unless self.startOnEnter == true || self.startOnEnter == false
end