vobiz-python 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vobiz/__init__.py +4 -0
- vobiz/base.py +237 -0
- vobiz/exceptions.py +34 -0
- vobiz/resources/__init__.py +12 -0
- vobiz/resources/accounts.py +59 -0
- vobiz/resources/applications.py +138 -0
- vobiz/resources/calls_vobiz.py +206 -0
- vobiz/resources/cdrs.py +46 -0
- vobiz/resources/credentials.py +104 -0
- vobiz/resources/endpoints.py +101 -0
- vobiz/resources/ip_access_control_lists.py +100 -0
- vobiz/resources/numbers.py +134 -0
- vobiz/resources/origination_uris.py +109 -0
- vobiz/resources/recordings.py +91 -0
- vobiz/resources/sip_trunks.py +99 -0
- vobiz/resources/subaccounts.py +101 -0
- vobiz/rest/__init__.py +2 -0
- vobiz/rest/client.py +277 -0
- vobiz/utils/__init__.py +72 -0
- vobiz/utils/interactive.py +50 -0
- vobiz/utils/jwt.py +97 -0
- vobiz/utils/location.py +6 -0
- vobiz/utils/signature_v3.py +111 -0
- vobiz/utils/template.py +50 -0
- vobiz/utils/validators.py +280 -0
- vobiz/version.py +2 -0
- vobiz/xml/ConferenceElement.py +485 -0
- vobiz/xml/DTMFElement.py +41 -0
- vobiz/xml/DialElement.py +371 -0
- vobiz/xml/MultiPartyCallElement.py +711 -0
- vobiz/xml/ResponseElement.py +414 -0
- vobiz/xml/VobizXMLElement.py +48 -0
- vobiz/xml/__init__.py +31 -0
- vobiz/xml/breakElement.py +62 -0
- vobiz/xml/contElement.py +190 -0
- vobiz/xml/emphasisElement.py +174 -0
- vobiz/xml/getDigitsElement.py +294 -0
- vobiz/xml/getInputElement.py +369 -0
- vobiz/xml/hangupElement.py +57 -0
- vobiz/xml/langElement.py +197 -0
- vobiz/xml/messageElement.py +115 -0
- vobiz/xml/numberElement.py +77 -0
- vobiz/xml/pElement.py +164 -0
- vobiz/xml/phonemeElement.py +62 -0
- vobiz/xml/playElement.py +41 -0
- vobiz/xml/preAnswerElement.py +148 -0
- vobiz/xml/prosodyElement.py +227 -0
- vobiz/xml/recordElement.py +337 -0
- vobiz/xml/redirectElement.py +42 -0
- vobiz/xml/sElement.py +154 -0
- vobiz/xml/sayAsElement.py +61 -0
- vobiz/xml/speakElement.py +249 -0
- vobiz/xml/streamElement.py +123 -0
- vobiz/xml/subElement.py +43 -0
- vobiz/xml/userElement.py +79 -0
- vobiz/xml/wElement.py +144 -0
- vobiz/xml/waitElement.py +93 -0
- vobiz/xml/xmlUtils.py +6 -0
- vobiz_python-0.1.0.dist-info/METADATA +640 -0
- vobiz_python-0.1.0.dist-info/RECORD +63 -0
- vobiz_python-0.1.0.dist-info/WHEEL +5 -0
- vobiz_python-0.1.0.dist-info/licenses/LICENSE.txt +19 -0
- vobiz_python-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
from vobiz.xml import (ConferenceElement, DialElement, DTMFElement,
|
|
2
|
+
GetDigitsElement, GetInputElement, HangupElement,
|
|
3
|
+
MessageElement, PlayElement, VobizXMLElement,
|
|
4
|
+
PreAnswerElement, RecordElement, RedirectElement,
|
|
5
|
+
SpeakElement, WaitElement, MultiPartyCallElement
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ResponseElement(VobizXMLElement):
|
|
10
|
+
_name = 'Response'
|
|
11
|
+
_nestable = [
|
|
12
|
+
'Conference',
|
|
13
|
+
'Dial',
|
|
14
|
+
'DTMF',
|
|
15
|
+
'GetDigits',
|
|
16
|
+
'GetInput',
|
|
17
|
+
'Hangup',
|
|
18
|
+
'Message',
|
|
19
|
+
'Play',
|
|
20
|
+
'PreAnswer',
|
|
21
|
+
'Record',
|
|
22
|
+
'Redirect',
|
|
23
|
+
'Speak',
|
|
24
|
+
'Wait',
|
|
25
|
+
'MultiPartyCall',
|
|
26
|
+
'Stream'
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
def add_conference(
|
|
30
|
+
self,
|
|
31
|
+
content,
|
|
32
|
+
muted=None,
|
|
33
|
+
enter_sound=None,
|
|
34
|
+
exit_sound=None,
|
|
35
|
+
start_conference_on_enter=None,
|
|
36
|
+
end_conference_on_exit=None,
|
|
37
|
+
stay_alone=None,
|
|
38
|
+
wait_sound=None,
|
|
39
|
+
max_members=None,
|
|
40
|
+
record=None,
|
|
41
|
+
record_file_format=None,
|
|
42
|
+
time_limit=None,
|
|
43
|
+
hangup_on_star=None,
|
|
44
|
+
action=None,
|
|
45
|
+
method=None,
|
|
46
|
+
callback_url=None,
|
|
47
|
+
callback_method=None,
|
|
48
|
+
digits_match=None,
|
|
49
|
+
floor_event=None,
|
|
50
|
+
redirect=None,
|
|
51
|
+
relay_dtmf=None,
|
|
52
|
+
):
|
|
53
|
+
self.add(
|
|
54
|
+
ConferenceElement(
|
|
55
|
+
content=content,
|
|
56
|
+
muted=muted,
|
|
57
|
+
enter_sound=enter_sound,
|
|
58
|
+
exit_sound=exit_sound,
|
|
59
|
+
start_conference_on_enter=start_conference_on_enter,
|
|
60
|
+
end_conference_on_exit=end_conference_on_exit,
|
|
61
|
+
stay_alone=stay_alone,
|
|
62
|
+
wait_sound=wait_sound,
|
|
63
|
+
max_members=max_members,
|
|
64
|
+
record=record,
|
|
65
|
+
record_file_format=record_file_format,
|
|
66
|
+
time_limit=time_limit,
|
|
67
|
+
hangup_on_star=hangup_on_star,
|
|
68
|
+
action=action,
|
|
69
|
+
method=method,
|
|
70
|
+
callback_url=callback_url,
|
|
71
|
+
callback_method=callback_method,
|
|
72
|
+
digits_match=digits_match,
|
|
73
|
+
floor_event=floor_event,
|
|
74
|
+
redirect=redirect,
|
|
75
|
+
relay_dtmf=relay_dtmf,
|
|
76
|
+
))
|
|
77
|
+
return self
|
|
78
|
+
|
|
79
|
+
def add_dial(
|
|
80
|
+
self,
|
|
81
|
+
action=None,
|
|
82
|
+
method=None,
|
|
83
|
+
hangup_on_star=None,
|
|
84
|
+
time_limit=None,
|
|
85
|
+
timeout=None,
|
|
86
|
+
caller_id=None,
|
|
87
|
+
caller_name=None,
|
|
88
|
+
confirm_sound=None,
|
|
89
|
+
confirm_key=None,
|
|
90
|
+
dial_music=None,
|
|
91
|
+
callback_url=None,
|
|
92
|
+
callback_method=None,
|
|
93
|
+
redirect=None,
|
|
94
|
+
digits_match=None,
|
|
95
|
+
digits_match_b_leg=None,
|
|
96
|
+
sip_headers=None,
|
|
97
|
+
):
|
|
98
|
+
self.add(
|
|
99
|
+
DialElement(
|
|
100
|
+
action=action,
|
|
101
|
+
method=method,
|
|
102
|
+
hangup_on_star=hangup_on_star,
|
|
103
|
+
time_limit=time_limit,
|
|
104
|
+
timeout=timeout,
|
|
105
|
+
caller_id=caller_id,
|
|
106
|
+
caller_name=caller_name,
|
|
107
|
+
confirm_sound=confirm_sound,
|
|
108
|
+
confirm_key=confirm_key,
|
|
109
|
+
dial_music=dial_music,
|
|
110
|
+
callback_url=callback_url,
|
|
111
|
+
callback_method=callback_method,
|
|
112
|
+
redirect=redirect,
|
|
113
|
+
digits_match=digits_match,
|
|
114
|
+
digits_match_b_leg=digits_match_b_leg,
|
|
115
|
+
sip_headers=sip_headers,
|
|
116
|
+
))
|
|
117
|
+
return self
|
|
118
|
+
|
|
119
|
+
def add_dtmf(
|
|
120
|
+
self,
|
|
121
|
+
content,
|
|
122
|
+
async_=None,
|
|
123
|
+
):
|
|
124
|
+
self.add(DTMFElement(
|
|
125
|
+
content=content,
|
|
126
|
+
async_=async_,
|
|
127
|
+
))
|
|
128
|
+
return self
|
|
129
|
+
|
|
130
|
+
def add_get_digits(
|
|
131
|
+
self,
|
|
132
|
+
action=None,
|
|
133
|
+
method=None,
|
|
134
|
+
timeout=None,
|
|
135
|
+
digit_timeout=None,
|
|
136
|
+
finish_on_key=None,
|
|
137
|
+
num_digits=None,
|
|
138
|
+
retries=None,
|
|
139
|
+
redirect=None,
|
|
140
|
+
play_beep=None,
|
|
141
|
+
valid_digits=None,
|
|
142
|
+
invalid_digits_sound=None,
|
|
143
|
+
log=None,
|
|
144
|
+
):
|
|
145
|
+
self.add(
|
|
146
|
+
GetDigitsElement(
|
|
147
|
+
action=action,
|
|
148
|
+
method=method,
|
|
149
|
+
timeout=timeout,
|
|
150
|
+
digit_timeout=digit_timeout,
|
|
151
|
+
finish_on_key=finish_on_key,
|
|
152
|
+
num_digits=num_digits,
|
|
153
|
+
retries=retries,
|
|
154
|
+
redirect=redirect,
|
|
155
|
+
play_beep=play_beep,
|
|
156
|
+
valid_digits=valid_digits,
|
|
157
|
+
invalid_digits_sound=invalid_digits_sound,
|
|
158
|
+
log=log,
|
|
159
|
+
))
|
|
160
|
+
return self
|
|
161
|
+
|
|
162
|
+
def add_get_input(
|
|
163
|
+
self,
|
|
164
|
+
action=None,
|
|
165
|
+
method=None,
|
|
166
|
+
input_type=None,
|
|
167
|
+
execution_timeout=None,
|
|
168
|
+
digit_end_timeout=None,
|
|
169
|
+
speech_end_timeout=None,
|
|
170
|
+
finish_on_key=None,
|
|
171
|
+
num_digits=None,
|
|
172
|
+
speech_model=None,
|
|
173
|
+
hints=None,
|
|
174
|
+
language=None,
|
|
175
|
+
interim_speech_results_callback=None,
|
|
176
|
+
interim_speech_results_callback_method=None,
|
|
177
|
+
log=None,
|
|
178
|
+
redirect=None,
|
|
179
|
+
profanity_filter=None,
|
|
180
|
+
):
|
|
181
|
+
self.add(
|
|
182
|
+
GetInputElement(
|
|
183
|
+
action=action,
|
|
184
|
+
method=method,
|
|
185
|
+
input_type=input_type,
|
|
186
|
+
execution_timeout=execution_timeout,
|
|
187
|
+
digit_end_timeout=digit_end_timeout,
|
|
188
|
+
speech_end_timeout=speech_end_timeout,
|
|
189
|
+
finish_on_key=finish_on_key,
|
|
190
|
+
num_digits=num_digits,
|
|
191
|
+
speech_model=speech_model,
|
|
192
|
+
hints=hints,
|
|
193
|
+
language=language,
|
|
194
|
+
interim_speech_results_callback=interim_speech_results_callback,
|
|
195
|
+
interim_speech_results_callback_method=interim_speech_results_callback_method,
|
|
196
|
+
log=log,
|
|
197
|
+
redirect=redirect,
|
|
198
|
+
profanity_filter=profanity_filter,
|
|
199
|
+
))
|
|
200
|
+
return self
|
|
201
|
+
|
|
202
|
+
def add_hangup(
|
|
203
|
+
self,
|
|
204
|
+
reason=None,
|
|
205
|
+
schedule=None,
|
|
206
|
+
):
|
|
207
|
+
self.add(HangupElement(
|
|
208
|
+
reason=reason,
|
|
209
|
+
schedule=schedule,
|
|
210
|
+
))
|
|
211
|
+
return self
|
|
212
|
+
|
|
213
|
+
def add_message(
|
|
214
|
+
self,
|
|
215
|
+
content,
|
|
216
|
+
src=None,
|
|
217
|
+
dst=None,
|
|
218
|
+
type=None,
|
|
219
|
+
callback_url=None,
|
|
220
|
+
callback_method=None,
|
|
221
|
+
):
|
|
222
|
+
self.add(
|
|
223
|
+
MessageElement(
|
|
224
|
+
content=content,
|
|
225
|
+
src=src,
|
|
226
|
+
dst=dst,
|
|
227
|
+
type=type,
|
|
228
|
+
callback_url=callback_url,
|
|
229
|
+
callback_method=callback_method,
|
|
230
|
+
))
|
|
231
|
+
return self
|
|
232
|
+
|
|
233
|
+
def add_play(
|
|
234
|
+
self,
|
|
235
|
+
content,
|
|
236
|
+
loop=None,
|
|
237
|
+
):
|
|
238
|
+
self.add(PlayElement(
|
|
239
|
+
content=content,
|
|
240
|
+
loop=loop,
|
|
241
|
+
))
|
|
242
|
+
return self
|
|
243
|
+
|
|
244
|
+
def add_pre_answer(self, ):
|
|
245
|
+
self.add(PreAnswerElement())
|
|
246
|
+
return self
|
|
247
|
+
|
|
248
|
+
def add_record(
|
|
249
|
+
self,
|
|
250
|
+
action=None,
|
|
251
|
+
method=None,
|
|
252
|
+
file_format=None,
|
|
253
|
+
redirect=None,
|
|
254
|
+
timeout=None,
|
|
255
|
+
max_length=None,
|
|
256
|
+
play_beep=None,
|
|
257
|
+
finish_on_key=None,
|
|
258
|
+
record_session=None,
|
|
259
|
+
start_on_dial_answer=None,
|
|
260
|
+
transcription_type=None,
|
|
261
|
+
transcription_url=None,
|
|
262
|
+
transcription_report_type=None,
|
|
263
|
+
transcription_method=None,
|
|
264
|
+
callback_url=None,
|
|
265
|
+
callback_method=None,
|
|
266
|
+
):
|
|
267
|
+
self.add(
|
|
268
|
+
RecordElement(
|
|
269
|
+
action=action,
|
|
270
|
+
method=method,
|
|
271
|
+
file_format=file_format,
|
|
272
|
+
redirect=redirect,
|
|
273
|
+
timeout=timeout,
|
|
274
|
+
max_length=max_length,
|
|
275
|
+
play_beep=play_beep,
|
|
276
|
+
finish_on_key=finish_on_key,
|
|
277
|
+
record_session=record_session,
|
|
278
|
+
start_on_dial_answer=start_on_dial_answer,
|
|
279
|
+
transcription_type=transcription_type,
|
|
280
|
+
transcription_url=transcription_url,
|
|
281
|
+
transcription_report_type=transcription_report_type,
|
|
282
|
+
transcription_method=transcription_method,
|
|
283
|
+
callback_url=callback_url,
|
|
284
|
+
callback_method=callback_method,
|
|
285
|
+
))
|
|
286
|
+
return self
|
|
287
|
+
|
|
288
|
+
def add_redirect(
|
|
289
|
+
self,
|
|
290
|
+
content,
|
|
291
|
+
method=None,
|
|
292
|
+
):
|
|
293
|
+
self.add(RedirectElement(
|
|
294
|
+
content=content,
|
|
295
|
+
method=method,
|
|
296
|
+
))
|
|
297
|
+
return self
|
|
298
|
+
|
|
299
|
+
def add_speak(
|
|
300
|
+
self,
|
|
301
|
+
content,
|
|
302
|
+
voice=None,
|
|
303
|
+
language=None,
|
|
304
|
+
loop=None,
|
|
305
|
+
):
|
|
306
|
+
self.add(
|
|
307
|
+
SpeakElement(
|
|
308
|
+
content=content,
|
|
309
|
+
voice=voice,
|
|
310
|
+
language=language,
|
|
311
|
+
loop=loop,
|
|
312
|
+
))
|
|
313
|
+
return self
|
|
314
|
+
|
|
315
|
+
def add_wait(
|
|
316
|
+
self,
|
|
317
|
+
length=None,
|
|
318
|
+
silence=None,
|
|
319
|
+
min_silence=None,
|
|
320
|
+
beep=None,
|
|
321
|
+
):
|
|
322
|
+
self.add(
|
|
323
|
+
WaitElement(
|
|
324
|
+
length=length,
|
|
325
|
+
silence=silence,
|
|
326
|
+
min_silence=min_silence,
|
|
327
|
+
beep=beep,
|
|
328
|
+
))
|
|
329
|
+
return self
|
|
330
|
+
|
|
331
|
+
def add_multi_party_call(self,
|
|
332
|
+
content,
|
|
333
|
+
role,
|
|
334
|
+
max_duration=14400,
|
|
335
|
+
max_participants=10,
|
|
336
|
+
wait_music_url=None,
|
|
337
|
+
wait_music_method="GET",
|
|
338
|
+
wait_time=None,
|
|
339
|
+
agent_hold_music_url=None,
|
|
340
|
+
agent_hold_music_method='GET',
|
|
341
|
+
customer_hold_music_url=None,
|
|
342
|
+
customer_hold_music_method='GET',
|
|
343
|
+
recording_callback_url=None,
|
|
344
|
+
recording_callback_method='GET',
|
|
345
|
+
status_callback_url=None,
|
|
346
|
+
status_callback_method='GET',
|
|
347
|
+
on_exit_action_url=None,
|
|
348
|
+
on_exit_action_method='POST',
|
|
349
|
+
record=False,
|
|
350
|
+
record_file_format='mp3',
|
|
351
|
+
status_callback_events='mpc-state-changes,participant-state-changes',
|
|
352
|
+
stay_alone=False,
|
|
353
|
+
coach_mode=True,
|
|
354
|
+
mute=False,
|
|
355
|
+
hold=False,
|
|
356
|
+
start_mpc_on_enter=True,
|
|
357
|
+
end_mpc_on_exit=False,
|
|
358
|
+
relay_dtmf_inputs=False,
|
|
359
|
+
enter_sound='beep:1',
|
|
360
|
+
enter_sound_method='GET',
|
|
361
|
+
exit_sound='beep:2',
|
|
362
|
+
exit_sound_method='GET',
|
|
363
|
+
start_recording_audio=None,
|
|
364
|
+
start_recording_audio_method='GET',
|
|
365
|
+
stop_recording_audio=None,
|
|
366
|
+
stop_recording_audio_method='GET',
|
|
367
|
+
transcript=False,
|
|
368
|
+
transcription_url=None
|
|
369
|
+
):
|
|
370
|
+
self.add(
|
|
371
|
+
MultiPartyCallElement(
|
|
372
|
+
content=content,
|
|
373
|
+
role=role,
|
|
374
|
+
max_duration=max_duration,
|
|
375
|
+
max_participants=max_participants,
|
|
376
|
+
wait_music_url=wait_music_url,
|
|
377
|
+
wait_music_method=wait_music_method,
|
|
378
|
+
wait_time=wait_time,
|
|
379
|
+
agent_hold_music_url=agent_hold_music_url,
|
|
380
|
+
agent_hold_music_method=agent_hold_music_method,
|
|
381
|
+
customer_hold_music_url=customer_hold_music_url,
|
|
382
|
+
customer_hold_music_method=customer_hold_music_method,
|
|
383
|
+
record=record,
|
|
384
|
+
record_file_format=record_file_format,
|
|
385
|
+
recording_callback_url=recording_callback_url,
|
|
386
|
+
recording_callback_method=recording_callback_method,
|
|
387
|
+
status_callback_events=status_callback_events,
|
|
388
|
+
status_callback_url=status_callback_url,
|
|
389
|
+
status_callback_method=status_callback_method,
|
|
390
|
+
stay_alone=stay_alone,
|
|
391
|
+
coach_mode=coach_mode,
|
|
392
|
+
mute=mute,
|
|
393
|
+
hold=hold,
|
|
394
|
+
start_mpc_on_enter=start_mpc_on_enter,
|
|
395
|
+
end_mpc_on_exit=end_mpc_on_exit,
|
|
396
|
+
enter_sound=enter_sound,
|
|
397
|
+
enter_sound_method=enter_sound_method,
|
|
398
|
+
exit_sound=exit_sound,
|
|
399
|
+
exit_sound_method=exit_sound_method,
|
|
400
|
+
on_exit_action_url=on_exit_action_url,
|
|
401
|
+
on_exit_action_method=on_exit_action_method,
|
|
402
|
+
relay_dtmf_inputs=relay_dtmf_inputs,
|
|
403
|
+
start_recording_audio=start_recording_audio,
|
|
404
|
+
start_recording_audio_method=start_recording_audio_method,
|
|
405
|
+
stop_recording_audio=stop_recording_audio,
|
|
406
|
+
stop_recording_audio_method=stop_recording_audio_method,
|
|
407
|
+
transcript=transcript,
|
|
408
|
+
transcription_url=transcription_url
|
|
409
|
+
)
|
|
410
|
+
)
|
|
411
|
+
return self
|
|
412
|
+
|
|
413
|
+
def to_dict(self):
|
|
414
|
+
return {}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from lxml import etree
|
|
2
|
+
from vobiz.exceptions import VobizXMLError
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class VobizXMLElement(object):
|
|
6
|
+
def __init__(self):
|
|
7
|
+
self.content = ''
|
|
8
|
+
self.children = []
|
|
9
|
+
|
|
10
|
+
def add(self, element):
|
|
11
|
+
if not isinstance(element, VobizXMLElement):
|
|
12
|
+
raise VobizXMLError('element must be a VobizXMLElement')
|
|
13
|
+
|
|
14
|
+
if element._name not in self._nestable:
|
|
15
|
+
raise VobizXMLError(
|
|
16
|
+
'{} is not nestable in {} (allowed: {})'.format(
|
|
17
|
+
element._name, self._name, self._nestable))
|
|
18
|
+
self.children.append(element)
|
|
19
|
+
return self
|
|
20
|
+
|
|
21
|
+
def continue_speak(self, body=None):
|
|
22
|
+
return body.replace('<cont>', ' ').replace('</cont>', ' ')
|
|
23
|
+
|
|
24
|
+
def to_string(self, pretty=True):
|
|
25
|
+
s = self.continue_speak(etree.tostring(self._to_element(), pretty_print=pretty, encoding='unicode'))
|
|
26
|
+
|
|
27
|
+
if not isinstance(s, str):
|
|
28
|
+
s = s.encode('utf-8')
|
|
29
|
+
return s
|
|
30
|
+
|
|
31
|
+
def _to_element(self, parent=None):
|
|
32
|
+
e = etree.SubElement(
|
|
33
|
+
parent, self._name,
|
|
34
|
+
**self.to_dict()) if parent is not None else etree.Element(
|
|
35
|
+
self._name, **self.to_dict())
|
|
36
|
+
if self.content:
|
|
37
|
+
try:
|
|
38
|
+
if False:
|
|
39
|
+
e.text = self.content.decode()
|
|
40
|
+
elif isinstance(self.content, bytes):
|
|
41
|
+
e.text = self.content.decode()
|
|
42
|
+
else:
|
|
43
|
+
e.text = self.content
|
|
44
|
+
except:
|
|
45
|
+
e.text = self.content
|
|
46
|
+
for child in self.children:
|
|
47
|
+
child._to_element(parent=e)
|
|
48
|
+
return e
|
vobiz/xml/__init__.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from .xmlUtils import map_type
|
|
2
|
+
from .VobizXMLElement import VobizXMLElement
|
|
3
|
+
from .ConferenceElement import ConferenceElement
|
|
4
|
+
from .DTMFElement import DTMFElement
|
|
5
|
+
from .MultiPartyCallElement import MultiPartyCallElement
|
|
6
|
+
from .hangupElement import HangupElement
|
|
7
|
+
from .messageElement import MessageElement
|
|
8
|
+
from .numberElement import NumberElement
|
|
9
|
+
from .playElement import PlayElement
|
|
10
|
+
from .waitElement import WaitElement
|
|
11
|
+
from .recordElement import RecordElement
|
|
12
|
+
from .redirectElement import RedirectElement
|
|
13
|
+
from .userElement import UserElement
|
|
14
|
+
from .breakElement import BreakElement
|
|
15
|
+
from .langElement import LangElement
|
|
16
|
+
from .emphasisElement import EmphasisElement
|
|
17
|
+
from .speakElement import SpeakElement
|
|
18
|
+
from .getDigitsElement import GetDigitsElement
|
|
19
|
+
from .getInputElement import GetInputElement
|
|
20
|
+
from .preAnswerElement import PreAnswerElement
|
|
21
|
+
from .DialElement import DialElement
|
|
22
|
+
from .ResponseElement import ResponseElement
|
|
23
|
+
from .pElement import PElement
|
|
24
|
+
from .phonemeElement import PhonemeElement
|
|
25
|
+
from .prosodyElement import ProsodyElement
|
|
26
|
+
from .sElement import SElement
|
|
27
|
+
from .sayAsElement import SayAsElement
|
|
28
|
+
from .subElement import SubElement
|
|
29
|
+
from .wElement import WElement
|
|
30
|
+
from .contElement import ContElement
|
|
31
|
+
from .streamElement import StreamElement
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
from vobiz.utils.validators import *
|
|
2
|
+
from vobiz.xml import VobizXMLElement, map_type
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BreakElement(VobizXMLElement):
|
|
6
|
+
_name = 'break'
|
|
7
|
+
_nestable = []
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def strength(self):
|
|
11
|
+
return self.__strength
|
|
12
|
+
|
|
13
|
+
@strength.setter
|
|
14
|
+
def strength(self, value):
|
|
15
|
+
self.__strength = str(
|
|
16
|
+
value) if value is not None else None
|
|
17
|
+
|
|
18
|
+
@validate_args(
|
|
19
|
+
value=[of_type(str)],
|
|
20
|
+
)
|
|
21
|
+
def set_strength(self, value):
|
|
22
|
+
self.strength = value
|
|
23
|
+
return self
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def time(self):
|
|
27
|
+
return self.__time
|
|
28
|
+
|
|
29
|
+
@time.setter
|
|
30
|
+
def time(self, value):
|
|
31
|
+
self.__time = str(
|
|
32
|
+
value) if value is not None else None
|
|
33
|
+
|
|
34
|
+
@validate_args(
|
|
35
|
+
value=[of_type(str)],
|
|
36
|
+
)
|
|
37
|
+
def set_time(self, value):
|
|
38
|
+
self.time = value
|
|
39
|
+
return self
|
|
40
|
+
|
|
41
|
+
def __init__(
|
|
42
|
+
self,
|
|
43
|
+
content=None,
|
|
44
|
+
strength=None,
|
|
45
|
+
time=None,
|
|
46
|
+
):
|
|
47
|
+
|
|
48
|
+
super(BreakElement, self).__init__()
|
|
49
|
+
self.content = content
|
|
50
|
+
self.strength = strength
|
|
51
|
+
self.time = time
|
|
52
|
+
|
|
53
|
+
def to_dict(self):
|
|
54
|
+
d = {
|
|
55
|
+
'strength': self.strength,
|
|
56
|
+
'time': self.time,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
k: str(map_type(v))
|
|
61
|
+
for k, v in d.items() if v is not None
|
|
62
|
+
}
|