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',
=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, , String, false) unless .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] = unless .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
|