Class: Plivo::Resources::MultiPartyCall
- Inherits:
-
Base::Resource
- Object
- Base::Resource
- Plivo::Resources::MultiPartyCall
- Defined in:
- lib/plivo/resources/multipartycalls.rb
Constant Summary
Constants included from Utils
Instance Attribute Summary
Attributes inherited from Base::Resource
Instance Method Summary collapse
- #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, 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') ⇒ Object
- #get ⇒ Object
- #get_participant(member_id) ⇒ Object
-
#initialize(client, options = nil) ⇒ MultiPartyCall
constructor
A new instance of MultiPartyCall.
- #kick_participant(member_id) ⇒ Object
- #list_participants(call_uuid = nil) ⇒ Object
- #pause_participant_recording(member_id) ⇒ Object
- #pause_recording ⇒ Object
- #resume_participant_recording(member_id) ⇒ Object
- #resume_recording ⇒ Object
- #start ⇒ Object
- #start_participant_recording(member_id, file_format = 'mp3', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
- #start_recording(file_format = 'mp3', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
- #stop ⇒ Object
- #stop_participant_recording(member_id) ⇒ Object
- #stop_recording ⇒ Object
- #update_participant(member_id, coach_mode = nil, mute = nil, hold = nil) ⇒ Object
Methods included from Utils
GetSortedQueryParamString?, compute_signatureV3?, expected_type?, expected_value?, generate_url?, getMapFromQueryString?, is_one_among_string_url?, multi_valid_param?, raise_invalid_request, valid_account?, valid_date_format?, valid_mainaccount?, valid_multiple_destination_integers?, valid_multiple_destination_nos?, valid_param?, valid_range?, valid_signature?, valid_signatureV3?, valid_subaccount?, valid_url?
Constructor Details
#initialize(client, options = nil) ⇒ MultiPartyCall
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/plivo/resources/multipartycalls.rb', line 5 def initialize(client, = nil) @_name = 'MultiPartyCall' @_identifier_string = 'mpc_uuid' super @_is_voice_request = true if .key? :multi_party_prefix @id = [:multi_party_prefix] + '_' + @id else @id = 'uuid_' + @id end configure_resource_uri end |
Instance Method Details
#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, 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') ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# 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, 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') 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_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]) 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[: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? perform_action_apiresponse('Participant', 'POST', params, true ) end |
#get ⇒ Object
18 19 20 |
# File 'lib/plivo/resources/multipartycalls.rb', line 18 def get perform_action(nil,'GET',nil,true) end |
#get_participant(member_id) ⇒ Object
245 246 247 248 |
# File 'lib/plivo/resources/multipartycalls.rb', line 245 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) ⇒ Object
240 241 242 243 |
# File 'lib/plivo/resources/multipartycalls.rb', line 240 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) ⇒ Object
228 229 230 231 232 233 |
# File 'lib/plivo/resources/multipartycalls.rb', line 228 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) ⇒ Object
218 219 220 221 |
# File 'lib/plivo/resources/multipartycalls.rb', line 218 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 ⇒ Object
199 200 201 |
# File 'lib/plivo/resources/multipartycalls.rb', line 199 def pause_recording perform_action_apiresponse('Record/Pause', 'POST') end |
#resume_participant_recording(member_id) ⇒ Object
223 224 225 226 |
# File 'lib/plivo/resources/multipartycalls.rb', line 223 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 ⇒ Object
203 204 205 |
# File 'lib/plivo/resources/multipartycalls.rb', line 203 def resume_recording perform_action_apiresponse('Record/Resume', 'POST') end |
#start ⇒ Object
174 175 176 |
# File 'lib/plivo/resources/multipartycalls.rb', line 174 def start perform_action_apiresponse(nil, 'POST', Hash['status' => 'active'], true) end |
#start_participant_recording(member_id, file_format = 'mp3', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
208 209 210 211 |
# File 'lib/plivo/resources/multipartycalls.rb', line 208 def start_participant_recording(member_id, file_format='mp3', status_callback_url=nil, status_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, status_callback_url, status_callback_method) end |
#start_recording(file_format = 'mp3', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/plivo/resources/multipartycalls.rb', line 182 def start_recording(file_format = 'mp3', status_callback_url = nil, status_callback_method='POST') valid_param?(:file_format, file_format, String, false , %w[mp3 wav]) 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]) params = {} params[:file_format] = file_format.downcase unless file_format.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? perform_action_apiresponse('Record', 'POST', params, true) end |
#stop ⇒ Object
178 179 180 |
# File 'lib/plivo/resources/multipartycalls.rb', line 178 def stop perform_action_apiresponse(nil, 'DELETE', nil, true) end |
#stop_participant_recording(member_id) ⇒ Object
213 214 215 216 |
# File 'lib/plivo/resources/multipartycalls.rb', line 213 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_recording ⇒ Object
195 196 197 |
# File 'lib/plivo/resources/multipartycalls.rb', line 195 def stop_recording perform_action_apiresponse('Record', 'DELETE') end |
#update_participant(member_id, coach_mode = nil, mute = nil, hold = nil) ⇒ Object
235 236 237 238 |
# File 'lib/plivo/resources/multipartycalls.rb', line 235 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 |