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', start_recording_audio = nil, start_recording_audio_method = 'GET', stop_recording_audio = nil, stop_recording_audio_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_play_audio(member_id, url) ⇒ Object
- #start_recording(file_format = 'mp3', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
- #stop ⇒ Object
- #stop_participant_recording(member_id) ⇒ Object
- #stop_play_audio(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', start_recording_audio = nil, start_recording_audio_method = 'GET', stop_recording_audio = nil, stop_recording_audio_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 173 174 175 176 177 178 179 180 181 182 183 184 |
# 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', 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_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[: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 ⇒ 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
256 257 258 259 |
# File 'lib/plivo/resources/multipartycalls.rb', line 256 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
251 252 253 254 |
# File 'lib/plivo/resources/multipartycalls.rb', line 251 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
239 240 241 242 243 244 |
# File 'lib/plivo/resources/multipartycalls.rb', line 239 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
229 230 231 232 |
# File 'lib/plivo/resources/multipartycalls.rb', line 229 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
211 212 213 |
# File 'lib/plivo/resources/multipartycalls.rb', line 211 def pause_recording perform_action_apiresponse('Record/Pause', 'POST') end |
#resume_participant_recording(member_id) ⇒ Object
234 235 236 237 |
# File 'lib/plivo/resources/multipartycalls.rb', line 234 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
215 216 217 |
# File 'lib/plivo/resources/multipartycalls.rb', line 215 def resume_recording perform_action_apiresponse('Record/Resume', 'POST') end |
#start ⇒ Object
186 187 188 |
# File 'lib/plivo/resources/multipartycalls.rb', line 186 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
219 220 221 222 |
# File 'lib/plivo/resources/multipartycalls.rb', line 219 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_play_audio(member_id, url) ⇒ Object
261 262 263 264 265 |
# File 'lib/plivo/resources/multipartycalls.rb', line 261 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', status_callback_url = nil, status_callback_method = 'POST') ⇒ Object
194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/plivo/resources/multipartycalls.rb', line 194 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
190 191 192 |
# File 'lib/plivo/resources/multipartycalls.rb', line 190 def stop perform_action_apiresponse(nil, 'DELETE', nil, true) end |
#stop_participant_recording(member_id) ⇒ Object
224 225 226 227 |
# File 'lib/plivo/resources/multipartycalls.rb', line 224 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) ⇒ Object
267 268 269 270 |
# File 'lib/plivo/resources/multipartycalls.rb', line 267 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 ⇒ Object
207 208 209 |
# File 'lib/plivo/resources/multipartycalls.rb', line 207 def stop_recording perform_action_apiresponse('Record', 'DELETE') end |
#update_participant(member_id, coach_mode = nil, mute = nil, hold = nil) ⇒ Object
246 247 248 249 |
# File 'lib/plivo/resources/multipartycalls.rb', line 246 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 |