Class: Plivo::Resources::MultiPartyCall

Inherits:
Base::Resource show all
Defined in:
lib/plivo/resources/multipartycalls.rb

Constant Summary

Constants included from Utils

Utils::TYPE_WHITELIST

Instance Attribute Summary

Attributes inherited from Base::Resource

#id

Instance Method Summary collapse

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

Returns a new instance of MultiPartyCall.



5
6
7
8
9
10
11
12
13
14
15
16
# 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

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, 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') ⇒ 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
185
186
187
# 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

#getObject



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



259
260
261
262
# 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) ⇒ Object



254
255
256
257
# 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) ⇒ Object



242
243
244
245
246
247
# 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) ⇒ Object



232
233
234
235
# 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_recordingObject



214
215
216
# File 'lib/plivo/resources/multipartycalls.rb', line 214

def pause_recording
  perform_action_apiresponse('Record/Pause', 'POST')
end

#resume_participant_recording(member_id) ⇒ Object



237
238
239
240
# 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_recordingObject



218
219
220
# File 'lib/plivo/resources/multipartycalls.rb', line 218

def resume_recording
  perform_action_apiresponse('Record/Resume', 'POST')
end

#startObject



189
190
191
# 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') ⇒ Object



222
223
224
225
# 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) ⇒ Object



264
265
266
267
268
# 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') ⇒ Object



197
198
199
200
201
202
203
204
205
206
207
208
# 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

#stopObject



193
194
195
# File 'lib/plivo/resources/multipartycalls.rb', line 193

def stop
  perform_action_apiresponse(nil, 'DELETE', nil, true)
end

#stop_participant_recording(member_id) ⇒ Object



227
228
229
230
# 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) ⇒ Object



270
271
272
273
# 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_recordingObject



210
211
212
# 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) ⇒ Object



249
250
251
252
# 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