class Plivo::Resources::MaskingSession

Public Class Methods

new(client, options = nil) click to toggle source
Calls superclass method Plivo::Base::Resource::new
# File lib/plivo/resources/maskingsession.rb, line 5
def initialize(client, options = nil)
  @_name = 'Masking/Session'
  @_identifier_string = 'session_uuid'
  super
  @_is_voice_request = true
end

Public Instance Methods

delete() click to toggle source
# File lib/plivo/resources/maskingsession.rb, line 52
def delete
  perform_delete
end
to_s() click to toggle source
# File lib/plivo/resources/maskingsession.rb, line 56
def to_s
  {
    first_party: @first_party,
    second_party: @second_party,
    virtual_number: @virtual_number,
    status: @status,
    initiate_call_to_first_party: @initiate_call_to_first_party,
    session_uuid: @session_uuid,
    callback_url: @callback_url,
    callback_method: @callback_method,
    created_time: @created_time,
    modified_time: @modified_time,
    expiry_time: @expiry_time,
    duration: @duration,
    amount: @amount,
    call_time_limit: @call_time_limit,
    ring_timeout: @ring_timeout,
    first_party_play_url: @first_party_play_url,
    second_party_play_url: @second_party_play_url,
    record: @record,
    record_file_format: @record_file_format,
    recording_callback_url: @recording_callback_url,
    recording_callback_method: @recording_callback_method,
    interaction: @interaction,
    total_call_amount: @total_call_amount,
    total_call_count: @total_call_count,
    total_call_billed_duration: @total_call_billed_duration,
    total_session_amount: @total_session_amount,
    last_interaction_time: @last_interaction_time,
    is_pin_authentication_required: @is_pin_authentication_required,
    generate_pin: @generate_pin,
    generate_pin_length: @generate_pin_length,
    second_party_pin: @second_party_pin,
    pin_prompt_play: @pin_prompt_play,
    pin_retry: @pin_retry,
    pin_retry_wait: @pin_retry_wait,
    incorrect_pin_play: @incorrect_pin_play,
    unknown_caller_play: @unknown_caller_play,
    force_pin_authentication: @force_pin_authentication,
    virtual_number_cooloff_period: @virtual_number_cooloff_period,
    create_session_with_single_party: @create_session_with_single_party
  }.to_s
end
update(options = nil) click to toggle source
# File lib/plivo/resources/maskingsession.rb, line 12
def update(options = nil)
  return if options.nil?
  valid_param?(:options, options, Hash, true)

  params = {}
  params_expected = %i[first_party second_party session_expiry call_time_limit record record_file_format recording_callback_url
                callback_url callback_method ring_timeout first_party_play_url second_party_play_url recording_callback_method
                subaccount geomatch]
  params_expected.each do |param|
    if options.key?(param) && valid_param?(param, options[param], [String, Symbol, TrueClass, FalseClass], true)
      params[param] = options[param]
    end
  end

  updated_session = perform_masking_update(params)
  session_data = updated_session.instance_variables.map do |var|
    [var[1..-1].to_sym, updated_session.instance_variable_get(var)]
  end.to_h

  relevant_keys = %i[api_id message session]
  filtered_session_data = session_data.select { |key, _| relevant_keys.include?(key) }

  if filtered_session_data[:session]
    session_instance = filtered_session_data[:session]
    session_data = session_instance.map do |key, value|
      [key.to_sym, value]
    end.to_h

    # Extract relevant keys from session
    session_relevant_keys = %i[first_party second_party virtual_number status initiate_call_to_first_party session_uuid callback_url callback_method created_time
                         modified_time expiry_time duration amount call_time_limit ring_timeout first_party_play_url second_party_play_url record record_file_format recording_callback_url
                         recording_callback_method interaction total_call_amount total_call_count total_call_billed_duration total_session_amount last_interaction_time unknown_caller_play
                         is_pin_authentication_required generate_pin generate_pin_length first_party_pin second_party_pin pin_prompt_play pin_retry pin_retry_wait incorrect_pin_play]

    filtered_session_data[:session] = session_data.select { |key, _| session_relevant_keys.include?(key) }
  end

  filtered_session_data
end