class Plivo::Resources::MultiPartyCall

Public Class Methods

new(client, options = nil) click to toggle source
Calls superclass method Plivo::Base::Resource::new
# File lib/plivo/resources/multipartycalls.rb, line 5
def initialize(client, options = nil)
  @_name = 'MultiPartyCall'
  @_identifier_string = 'mpc_uuid'
  super
  @_is_voice_request = true
  if options.key? :multi_party_prefix
    @id = options[:multi_party_prefix] + '_' + @id
  else
    @id = 'uuid_' + @id
  end
  configure_resource_uri
end

Public Instance Methods

add_participant(role, from=nil, to=nil, call_uuid=nil, caller_name=nil, call_status_callback_url=nil, call_status_callback_method='POST', sip_headers=nil, confirm_key=nil, confirm_key_sound_url=nil, confirm_key_sound_method='GET', dial_music='Real', ring_timeout=45, delay_dial=0, max_duration=14400, max_participants=10, record_min_member_count=1, wait_music_url=nil, wait_music_method='GET', agent_hold_music_url=nil, agent_hold_music_method='GET', customer_hold_music_url=nil, customer_hold_music_method='GET', recording_callback_url=nil, recording_callback_method='GET', status_callback_url=nil, status_callback_method='GET', on_exit_action_url=nil, on_exit_action_method='POST', record=false, record_file_format='mp3', status_callback_events='mpc-state-changes,participant-state-changes', stay_alone=false, coach_mode=true, mute=false, hold=false, start_mpc_on_enter=false, end_mpc_on_exit=false, relay_dtmf_inputs=false, enter_sound='beep:1', enter_sound_method='GET', exit_sound='beep:2', exit_sound_method='GET', start_recording_audio=nil, start_recording_audio_method='GET', stop_recording_audio=nil, stop_recording_audio_method='GET') click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 22
def add_participant(role,
                    from=nil,
                    to=nil,
                    call_uuid=nil,
                    caller_name=nil,
                    call_status_callback_url=nil,
                    call_status_callback_method='POST',
                    sip_headers=nil,
                    confirm_key=nil,
                    confirm_key_sound_url=nil,
                    confirm_key_sound_method='GET',
                    dial_music='Real',
                    ring_timeout=45,
                    delay_dial=0,
                    max_duration=14400,
                    max_participants=10,
                    record_min_member_count=1,
                    wait_music_url=nil,
                    wait_music_method='GET',
                    agent_hold_music_url=nil,
                    agent_hold_music_method='GET',
                    customer_hold_music_url=nil,
                    customer_hold_music_method='GET',
                    recording_callback_url=nil,
                    recording_callback_method='GET',
                    status_callback_url=nil,
                    status_callback_method='GET',
                    on_exit_action_url=nil,
                    on_exit_action_method='POST',
                    record=false,
                    record_file_format='mp3',
                    status_callback_events='mpc-state-changes,participant-state-changes',
                    stay_alone=false,
                    coach_mode=true,
                    mute=false,
                    hold=false,
                    start_mpc_on_enter=false,
                    end_mpc_on_exit=false,
                    relay_dtmf_inputs=false,
                    enter_sound='beep:1',
                    enter_sound_method='GET',
                    exit_sound='beep:2',
                    exit_sound_method='GET',
                    start_recording_audio=nil,
                    start_recording_audio_method='GET',
                    stop_recording_audio=nil,
                    stop_recording_audio_method='GET')
  if (from and to) and call_uuid
    raise_invalid_request('cannot specify call_uuid when (from, to) is provided')
  end
  if not from and not to and not call_uuid
    raise_invalid_request('specify either call_uuid or (from, to)')
  end
  if call_uuid.nil? and (not from or not to)
    raise_invalid_request('specify (from, to) when not adding an existing call_uuid to multi party participant')
  end

  valid_param?(:role, role.downcase, String, true, %w[agent supervisor customer])
  valid_param?(:from, from, String, false ) unless from.nil?
  valid_param?(:to, to, String, false ) unless to.nil?
  valid_multiple_destination_nos?(:to, to, role: role, delimiter: '<', agent_limit: 20) unless to.nil?
  valid_param?(:call_uuid, call_uuid, String, false ) unless call_uuid.nil?
  valid_param?(:caller_name, caller_name, String, false) unless caller_name.nil?
  valid_range?(:caller_name, caller_name.length, false, 0, 50) unless caller_name.nil?
  valid_url?(:call_status_callback_url, call_status_callback_url, false) unless call_status_callback_url.nil?
  valid_param?(:call_status_callback_method, call_status_callback_method.upcase, String, false, %w[GET POST])
  valid_param?(:sip_headers, sip_headers, String, false) unless sip_headers.nil?
  valid_param?(:confirm_key, confirm_key, String, false , %w[0 1 2 3 4 5 6 7 8 9 # *]) unless confirm_key.nil?
  valid_url?(:confirm_key_sound_url, confirm_key_sound_url, false) unless confirm_key_sound_url.nil?
  valid_param?(:confirm_key_sound_method, confirm_key_sound_method.upcase, String, false, %w[GET POST])
  is_one_among_string_url?(:dial_music, dial_music, false, %w[real none])
  valid_param?(:ring_timeout, ring_timeout, [String,Integer], false)
  valid_multiple_destination_integers?(:ring_timeout, ring_timeout)
  valid_param?(:delay_dial, delay_dial, [String,Integer], false)
  valid_multiple_destination_integers?(:delay_dial, delay_dial)
  valid_range?(:max_duration, max_duration, false, 300, 28800)
  valid_range?(:max_participants, max_participants, false, 2, 10)
  valid_range?(:record_min_member_count, record_min_member_count, false, 1, 2)
  valid_url?(:wait_music_url, wait_music_url, false ) unless wait_music_url.nil?
  valid_param?(:wait_music_method, wait_music_method.upcase, String, false , %w[GET POST])
  valid_url?(:agent_hold_music_url, agent_hold_music_url, false) unless agent_hold_music_url.nil?
  valid_param?(:agent_hold_music_method, agent_hold_music_method.upcase, String, false , %w[GET POST])
  valid_url?(:customer_hold_music_url, customer_hold_music_url, false) unless customer_hold_music_url.nil?
  valid_param?(:customer_hold_music_method, customer_hold_music_method.upcase, String, false, %w[GET POST])
  valid_url?(:recording_callback_url, recording_callback_url, false) unless recording_callback_url.nil?
  valid_param?(:recording_callback_method, recording_callback_method.upcase, String, false, %w[GET POST])
  valid_url?(:status_callback_url, status_callback_url, false) unless status_callback_url.nil?
  valid_param?(:status_callback_method, status_callback_method.upcase, String, false, %w[GET POST])
  valid_url?(:on_exit_action_url, on_exit_action_url, false ) unless on_exit_action_url.nil?
  valid_param?(:on_exit_action_method, on_exit_action_method.upcase, String, false, %w[GET POST])
  valid_param?(:record, record, [TrueClass, FalseClass], false )
  valid_param?(:record_file_format, record_file_format.downcase, String, false, %w[mp3 wav])
  multi_valid_param?(:status_callback_events, status_callback_events.downcase, String, false, %w[mpc-state-changes participant-state-changes participant-speak-events participant-digit-input-events add-participant-api-events], true, ',')
  valid_param?(:stay_alone, stay_alone, [TrueClass, FalseClass], false)
  valid_param?(:coach_mode, coach_mode, [TrueClass, FalseClass], false)
  valid_param?(:mute, mute, [TrueClass, FalseClass],false)
  valid_param?(:hold, hold, [TrueClass, FalseClass], false)
  valid_param?(:start_mpc_on_enter, start_mpc_on_enter, [TrueClass, FalseClass], false)
  valid_param?(:end_mpc_on_exit, end_mpc_on_exit, [TrueClass, FalseClass], false)
  valid_param?(:relay_dtmf_inputs, relay_dtmf_inputs, [TrueClass, FalseClass], false)
  is_one_among_string_url?(:enter_sound, enter_sound, false, %w[beep:1 beep:2 none])
  valid_param?(:enter_sound_method, enter_sound_method.upcase, String, false, %w[GET POST])
  is_one_among_string_url?(:exit_sound, exit_sound, false , %w[beep:1 beep:2 none])
  valid_param?(:exit_sound_method, exit_sound_method.upcase, String, false, %w[GET POST])
  valid_param?(:start_recording_audio_method, start_recording_audio_method.upcase, String, false, %w[GET POST])
  valid_url?(:start_recording_audio, start_recording_audio, false ) unless start_recording_audio.nil?
  valid_param?(:stop_recording_audio_method, stop_recording_audio_method.upcase, String, false, %w[GET POST])
  valid_url?(:stop_recording_audio, stop_recording_audio, false ) unless stop_recording_audio.nil?
  if (to!=nil) && (ring_timeout.is_a?(String)) && (to.split('<').size < ring_timeout.split('<').size)
    raise_invalid_request("RingTimeout:number of ring_timout(s) should be same as number of destination(s)")
  end

  if (to!=nil) && (delay_dial.is_a?(String)) && (to.split('<').size < delay_dial.split('<').size)
    raise_invalid_request("Delaydial : number of delay_dial(s) should be same as number of destination(s)")
  end

  params = {}
  params[:role] = role unless role.nil?
  params[:from] = from unless from.nil?
  params[:to] = to unless to.nil?
  params[:call_uuid] = call_uuid unless call_uuid.nil?
  params[:caller_name] = caller_name || from
  params[:call_status_callback_url] = call_status_callback_url unless call_status_callback_url.nil?
  params[:call_status_callback_method] = call_status_callback_method.upcase unless call_status_callback_method.nil?
  params[:sip_headers] = sip_headers unless sip_headers.nil?
  params[:confirm_key] = confirm_key unless confirm_key.nil?
  params[:confirm_key_sound_url] = confirm_key_sound_url unless confirm_key_sound_url.nil?
  params[:confirm_key_sound_method] = confirm_key_sound_method.upcase unless confirm_key_sound_method.nil?
  params[:dial_music] = dial_music unless dial_music.nil?
  params[:ring_timeout] = ring_timeout unless ring_timeout.nil?
  params[:delay_dial] = delay_dial unless delay_dial.nil?
  params[:max_duration] = max_duration unless max_duration.nil?
  params[:max_participants] = max_participants unless max_participants.nil?
  params[:record_min_member_count] = record_min_member_count unless record_min_member_count.nil?
  params[:wait_music_url] = wait_music_url unless wait_music_url.nil?
  params[:wait_music_method] = wait_music_method.upcase unless wait_music_method.nil?
  params[:agent_hold_music_url] = agent_hold_music_url unless agent_hold_music_url.nil?
  params[:agent_hold_music_method] = agent_hold_music_method.upcase unless agent_hold_music_method.nil?
  params[:customer_hold_music_url] = customer_hold_music_url unless customer_hold_music_url.nil?
  params[:customer_hold_music_method] = customer_hold_music_method.upcase unless customer_hold_music_method.nil?
  params[:recording_callback_url] = recording_callback_url unless recording_callback_url.nil?
  params[:recording_callback_method] = recording_callback_method.upcase unless recording_callback_method.nil?
  params[:status_callback_url] = status_callback_url unless status_callback_url.nil?
  params[:status_callback_method] = status_callback_method.upcase unless status_callback_method.nil?
  params[:on_exit_action_url] = on_exit_action_url unless on_exit_action_url.nil?
  params[:on_exit_action_method] = on_exit_action_method.upcase unless on_exit_action_method.nil?
  params[:record] = record unless record.nil?
  params[:record_file_format] = record_file_format.downcase unless record_file_format.nil?
  params[:status_callback_events] = status_callback_events.downcase unless status_callback_events.nil?
  params[:stay_alone] = stay_alone unless stay_alone.nil?
  params[:coach_mode] = coach_mode unless coach_mode.nil?
  params[:mute] = mute unless mute.nil?
  params[:hold] = hold unless hold.nil?
  params[:start_mpc_on_enter] = start_mpc_on_enter unless start_mpc_on_enter.nil?
  params[:end_mpc_on_exit] = end_mpc_on_exit unless end_mpc_on_exit.nil?
  params[:relay_dtmf_inputs] = relay_dtmf_inputs unless relay_dtmf_inputs.nil?
  params[:enter_sound] = enter_sound unless enter_sound.nil?
  params[:enter_sound_method] = enter_sound_method.upcase unless exit_sound_method.nil?
  params[:exit_sound] = exit_sound unless exit_sound.nil?
  params[:exit_sound_method] = exit_sound_method.upcase unless exit_sound_method.nil?
  params[:start_recording_audio] = start_recording_audio unless start_recording_audio.nil?
  params[:start_recording_audio_method] = start_recording_audio_method.upcase unless start_recording_audio_method.nil?
  params[:stop_recording_audio] = stop_recording_audio unless stop_recording_audio.nil?
  params[:stop_recording_audio_method] = stop_recording_audio_method.upcase unless stop_recording_audio_method.nil?
  perform_action_apiresponse('Participant', 'POST', params, true )
end
get() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 18
def get
  perform_action(nil,'GET',nil,true)
end
get_participant(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 259
def get_participant(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client,resource_id: @id, member_id: member_id).get_participant
end
kick_participant(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 254
def kick_participant(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: @id, member_id: member_id).kick_participant
end
list_participants(call_uuid = nil ) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 242
def list_participants(call_uuid = nil )
  valid_param?(:call_uuid, call_uuid, String, false) unless call_uuid.nil?
  params = {}
  params[:call_uuid] = call_uuid unless call_uuid.nil?
  perform_action('Participant', 'GET', params, true)
end
pause_participant_recording(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 232
def pause_participant_recording(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: mpc_id[1], member_id: member_id).pause_participant_recording
end
pause_recording() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 214
def pause_recording
  perform_action_apiresponse('Record/Pause', 'POST')
end
resume_participant_recording(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 237
def resume_participant_recording(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: mpc_id[1], member_id: member_id).resume_participant_recording
end
resume_recording() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 218
def resume_recording
  perform_action_apiresponse('Record/Resume', 'POST')
end
start() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 189
def start
  perform_action_apiresponse(nil, 'POST', Hash['status' => 'active'], true)
end
start_participant_recording(member_id, file_format='mp3', recording_callback_url=nil, recording_callback_method='POST') click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 222
def start_participant_recording(member_id, file_format='mp3', recording_callback_url=nil, recording_callback_method='POST')
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: mpc_id[1], member_id: member_id).start_participant_recording(file_format, recording_callback_url, recording_callback_method)
end
start_play_audio(member_id, url) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 264
def start_play_audio(member_id, url)
  valid_param?(:member_id, member_id, [String, Integer], true)
  valid_url?(:url, url, true)
  MultiPartyCallMember.new(@_client, resource_id: @id, member_id: member_id).start_play_audio(url)
end
start_recording(file_format = 'mp3', recording_callback_url = nil, recording_callback_method='POST') click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 197
def start_recording(file_format = 'mp3', recording_callback_url = nil, recording_callback_method='POST')
  valid_param?(:file_format, file_format, String, false , %w[mp3 wav])
  valid_url?(:recording_callback_url, recording_callback_url, false) unless recording_callback_url.nil?
  valid_param?(:recording_callback_method, recording_callback_method.upcase,String, false, %w[GET POST])

  params = {}
  params[:file_format] = file_format.downcase unless file_format.nil?
  params[:recording_callback_url] = recording_callback_url unless recording_callback_url.nil?
  params[:recording_callback_method] = recording_callback_method.upcase unless recording_callback_method.nil?

  perform_action_apiresponse('Record', 'POST', params, true)
end
stop() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 193
def stop
  perform_action_apiresponse(nil, 'DELETE', nil, true)
end
stop_participant_recording(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 227
def stop_participant_recording(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: mpc_id[1], member_id: member_id).stop_participant_recording
end
stop_play_audio(member_id) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 270
def stop_play_audio(member_id)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallMember.new(@_client, resource_id: @id, member_id: member_id).stop_play_audio
end
stop_recording() click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 210
def stop_recording
  perform_action_apiresponse('Record', 'DELETE')
end
update_participant(member_id, coach_mode = nil, mute = nil , hold = nil) click to toggle source
# File lib/plivo/resources/multipartycalls.rb, line 249
def update_participant(member_id, coach_mode = nil, mute = nil , hold = nil)
  valid_param?(:member_id, member_id, [String, Integer], true)
  MultiPartyCallParticipant.new(@_client, resource_id: @id, member_id: member_id).update_participant(coach_mode, mute, hold)
end