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,485 @@
|
|
|
1
|
+
from vobiz.utils.validators import *
|
|
2
|
+
from vobiz.xml import VobizXMLElement, map_type
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ConferenceElement(VobizXMLElement):
|
|
6
|
+
_name = 'Conference'
|
|
7
|
+
_nestable = []
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def muted(self):
|
|
11
|
+
return self.__muted
|
|
12
|
+
|
|
13
|
+
@muted.setter
|
|
14
|
+
def muted(self, value):
|
|
15
|
+
self.__muted = bool(value) if value is not None else None
|
|
16
|
+
|
|
17
|
+
@validate_args(
|
|
18
|
+
value=[of_type_exact(bool)],
|
|
19
|
+
)
|
|
20
|
+
def set_muted(self, value):
|
|
21
|
+
self.muted = value
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def enter_sound(self):
|
|
26
|
+
return self.__enter_sound
|
|
27
|
+
|
|
28
|
+
@enter_sound.setter
|
|
29
|
+
def enter_sound(self, value):
|
|
30
|
+
self.__enter_sound = str(
|
|
31
|
+
value) if value is not None else None
|
|
32
|
+
|
|
33
|
+
@validate_args(
|
|
34
|
+
value=[of_type(str)],
|
|
35
|
+
)
|
|
36
|
+
def set_enter_sound(self, value):
|
|
37
|
+
self.enter_sound = value
|
|
38
|
+
return self
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def exit_sound(self):
|
|
42
|
+
return self.__exit_sound
|
|
43
|
+
|
|
44
|
+
@exit_sound.setter
|
|
45
|
+
def exit_sound(self, value):
|
|
46
|
+
self.__exit_sound = str(value) if value is not None else None
|
|
47
|
+
|
|
48
|
+
@validate_args(
|
|
49
|
+
value=[of_type(str)],
|
|
50
|
+
)
|
|
51
|
+
def set_exit_sound(self, value):
|
|
52
|
+
self.exit_sound = value
|
|
53
|
+
return self
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def start_conference_on_enter(self):
|
|
57
|
+
return self.__start_conference_on_enter
|
|
58
|
+
|
|
59
|
+
@start_conference_on_enter.setter
|
|
60
|
+
def start_conference_on_enter(self, value):
|
|
61
|
+
self.__start_conference_on_enter = bool(
|
|
62
|
+
value) if value is not None else None
|
|
63
|
+
|
|
64
|
+
@validate_args(
|
|
65
|
+
value=[of_type_exact(bool)],
|
|
66
|
+
)
|
|
67
|
+
def set_start_conference_on_enter(self, value):
|
|
68
|
+
self.start_conference_on_enter = value
|
|
69
|
+
return self
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def end_conference_on_exit(self):
|
|
73
|
+
return self.__end_conference_on_exit
|
|
74
|
+
|
|
75
|
+
@end_conference_on_exit.setter
|
|
76
|
+
def end_conference_on_exit(self, value):
|
|
77
|
+
self.__end_conference_on_exit = bool(
|
|
78
|
+
value) if value is not None else None
|
|
79
|
+
|
|
80
|
+
@validate_args(
|
|
81
|
+
value=[of_type_exact(bool)],
|
|
82
|
+
)
|
|
83
|
+
def set_end_conference_on_exit(self, value):
|
|
84
|
+
self.end_conference_on_exit = value
|
|
85
|
+
return self
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def stay_alone(self):
|
|
89
|
+
return self.__stay_alone
|
|
90
|
+
|
|
91
|
+
@stay_alone.setter
|
|
92
|
+
def stay_alone(self, value):
|
|
93
|
+
self.__stay_alone = bool(value) if value is not None else None
|
|
94
|
+
|
|
95
|
+
@validate_args(
|
|
96
|
+
value=[of_type_exact(bool)],
|
|
97
|
+
)
|
|
98
|
+
def set_stay_alone(self, value):
|
|
99
|
+
self.stay_alone = value
|
|
100
|
+
return self
|
|
101
|
+
|
|
102
|
+
@property
|
|
103
|
+
def wait_sound(self):
|
|
104
|
+
return self.__wait_sound
|
|
105
|
+
|
|
106
|
+
@wait_sound.setter
|
|
107
|
+
def wait_sound(self, value):
|
|
108
|
+
self.__wait_sound = str(value) if value is not None else None
|
|
109
|
+
|
|
110
|
+
@validate_args(
|
|
111
|
+
value=[of_type(str)],
|
|
112
|
+
)
|
|
113
|
+
def set_wait_sound(self, value):
|
|
114
|
+
self.wait_sound = value
|
|
115
|
+
return self
|
|
116
|
+
|
|
117
|
+
@property
|
|
118
|
+
def max_members(self):
|
|
119
|
+
return self.__max_members
|
|
120
|
+
|
|
121
|
+
@max_members.setter
|
|
122
|
+
def max_members(self, value):
|
|
123
|
+
self.__max_members = int(value) if value is not None else None
|
|
124
|
+
|
|
125
|
+
@validate_args(
|
|
126
|
+
value=[of_type(int)],
|
|
127
|
+
)
|
|
128
|
+
def set_max_members(self, value):
|
|
129
|
+
self.max_members = value
|
|
130
|
+
return self
|
|
131
|
+
|
|
132
|
+
@property
|
|
133
|
+
def record(self):
|
|
134
|
+
return self.__record
|
|
135
|
+
|
|
136
|
+
@record.setter
|
|
137
|
+
def record(self, value):
|
|
138
|
+
self.__record = bool(value) if value is not None else None
|
|
139
|
+
|
|
140
|
+
@validate_args(
|
|
141
|
+
value=[of_type_exact(bool)],
|
|
142
|
+
)
|
|
143
|
+
def set_record(self, value):
|
|
144
|
+
self.record = value
|
|
145
|
+
return self
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def record_file_format(self):
|
|
149
|
+
return self.__record_file_format
|
|
150
|
+
|
|
151
|
+
@record_file_format.setter
|
|
152
|
+
def record_file_format(self, value):
|
|
153
|
+
self.__record_file_format = str(
|
|
154
|
+
value) if value is not None else None
|
|
155
|
+
|
|
156
|
+
@validate_args(
|
|
157
|
+
value=[of_type(str)],
|
|
158
|
+
)
|
|
159
|
+
def set_record_file_format(self, value):
|
|
160
|
+
self.record_file_format = value
|
|
161
|
+
return self
|
|
162
|
+
|
|
163
|
+
@property
|
|
164
|
+
def time_limit(self):
|
|
165
|
+
return self.__time_limit
|
|
166
|
+
|
|
167
|
+
@time_limit.setter
|
|
168
|
+
def time_limit(self, value):
|
|
169
|
+
self.__time_limit = int(value) if value is not None else None
|
|
170
|
+
|
|
171
|
+
@validate_args(
|
|
172
|
+
value=[of_type(int)],
|
|
173
|
+
)
|
|
174
|
+
def set_time_limit(self, value):
|
|
175
|
+
self.time_limit = value
|
|
176
|
+
return self
|
|
177
|
+
|
|
178
|
+
@property
|
|
179
|
+
def hangup_on_star(self):
|
|
180
|
+
return self.__hangup_on_star
|
|
181
|
+
|
|
182
|
+
@hangup_on_star.setter
|
|
183
|
+
def hangup_on_star(self, value):
|
|
184
|
+
self.__hangup_on_star = bool(value) if value is not None else None
|
|
185
|
+
|
|
186
|
+
@validate_args(
|
|
187
|
+
value=[of_type_exact(bool)],
|
|
188
|
+
)
|
|
189
|
+
def set_hangup_on_star(self, value):
|
|
190
|
+
self.hangup_on_star = value
|
|
191
|
+
return self
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
def action(self):
|
|
195
|
+
return self.__action
|
|
196
|
+
|
|
197
|
+
@action.setter
|
|
198
|
+
def action(self, value):
|
|
199
|
+
self.__action = str(value) if value is not None else None
|
|
200
|
+
|
|
201
|
+
@validate_args(
|
|
202
|
+
value=[of_type(str)],
|
|
203
|
+
)
|
|
204
|
+
def set_action(self, value):
|
|
205
|
+
self.action = value
|
|
206
|
+
return self
|
|
207
|
+
|
|
208
|
+
@property
|
|
209
|
+
def method(self):
|
|
210
|
+
return self.__method
|
|
211
|
+
|
|
212
|
+
@method.setter
|
|
213
|
+
def method(self, value):
|
|
214
|
+
self.__method = str(value) if value is not None else None
|
|
215
|
+
|
|
216
|
+
@validate_args(
|
|
217
|
+
value=[of_type(str)],
|
|
218
|
+
)
|
|
219
|
+
def set_method(self, value):
|
|
220
|
+
self.method = value
|
|
221
|
+
return self
|
|
222
|
+
|
|
223
|
+
@property
|
|
224
|
+
def callback_url(self):
|
|
225
|
+
return self.__callback_url
|
|
226
|
+
|
|
227
|
+
@callback_url.setter
|
|
228
|
+
def callback_url(self, value):
|
|
229
|
+
self.__callback_url = str(
|
|
230
|
+
value) if value is not None else None
|
|
231
|
+
|
|
232
|
+
@validate_args(
|
|
233
|
+
value=[of_type(str)],
|
|
234
|
+
)
|
|
235
|
+
def set_callback_url(self, value):
|
|
236
|
+
self.callback_url = value
|
|
237
|
+
return self
|
|
238
|
+
|
|
239
|
+
@property
|
|
240
|
+
def callback_method(self):
|
|
241
|
+
return self.__callback_method
|
|
242
|
+
|
|
243
|
+
@callback_method.setter
|
|
244
|
+
def callback_method(self, value):
|
|
245
|
+
self.__callback_method = str(
|
|
246
|
+
value) if value is not None else None
|
|
247
|
+
|
|
248
|
+
@validate_args(
|
|
249
|
+
value=[of_type(str)],
|
|
250
|
+
)
|
|
251
|
+
def set_callback_method(self, value):
|
|
252
|
+
self.callback_method = value
|
|
253
|
+
return self
|
|
254
|
+
|
|
255
|
+
@property
|
|
256
|
+
def digits_match(self):
|
|
257
|
+
return self.__digits_match
|
|
258
|
+
|
|
259
|
+
@digits_match.setter
|
|
260
|
+
def digits_match(self, value):
|
|
261
|
+
self.__digits_match = str(
|
|
262
|
+
value) if value is not None else None
|
|
263
|
+
|
|
264
|
+
@validate_args(
|
|
265
|
+
value=[of_type(str)],
|
|
266
|
+
)
|
|
267
|
+
def set_digits_match(self, value):
|
|
268
|
+
self.digits_match = value
|
|
269
|
+
return self
|
|
270
|
+
|
|
271
|
+
@property
|
|
272
|
+
def floor_event(self):
|
|
273
|
+
return self.__floor_event
|
|
274
|
+
|
|
275
|
+
@floor_event.setter
|
|
276
|
+
def floor_event(self, value):
|
|
277
|
+
self.__floor_event = bool(value) if value is not None else None
|
|
278
|
+
|
|
279
|
+
@validate_args(
|
|
280
|
+
value=[of_type_exact(bool)],
|
|
281
|
+
)
|
|
282
|
+
def set_floor_event(self, value):
|
|
283
|
+
self.floor_event = value
|
|
284
|
+
return self
|
|
285
|
+
|
|
286
|
+
@property
|
|
287
|
+
def redirect(self):
|
|
288
|
+
return self.__redirect
|
|
289
|
+
|
|
290
|
+
@redirect.setter
|
|
291
|
+
def redirect(self, value):
|
|
292
|
+
self.__redirect = bool(value) if value is not None else None
|
|
293
|
+
|
|
294
|
+
@validate_args(
|
|
295
|
+
value=[of_type_exact(bool)],
|
|
296
|
+
)
|
|
297
|
+
def set_redirect(self, value):
|
|
298
|
+
self.redirect = value
|
|
299
|
+
return self
|
|
300
|
+
|
|
301
|
+
@property
|
|
302
|
+
def relay_dtmf(self):
|
|
303
|
+
return self.__relay_dtmf
|
|
304
|
+
|
|
305
|
+
@relay_dtmf.setter
|
|
306
|
+
def relay_dtmf(self, value):
|
|
307
|
+
self.__relay_dtmf = bool(value) if value is not None else None
|
|
308
|
+
|
|
309
|
+
@validate_args(
|
|
310
|
+
value=[of_type_exact(bool)],
|
|
311
|
+
)
|
|
312
|
+
def set_relay_dtmf(self, value):
|
|
313
|
+
self.relay_dtmf = value
|
|
314
|
+
return self
|
|
315
|
+
|
|
316
|
+
@property
|
|
317
|
+
def send_digits(self):
|
|
318
|
+
return self.__send_digits
|
|
319
|
+
|
|
320
|
+
@send_digits.setter
|
|
321
|
+
def send_digits(self, value):
|
|
322
|
+
self.__send_digits = str(
|
|
323
|
+
value) if value is not None else None
|
|
324
|
+
|
|
325
|
+
@validate_args(
|
|
326
|
+
value=[of_type(str)],
|
|
327
|
+
)
|
|
328
|
+
def set_send_digits(self, value):
|
|
329
|
+
self.send_digits = value
|
|
330
|
+
return self
|
|
331
|
+
|
|
332
|
+
@property
|
|
333
|
+
def record_when_alone(self):
|
|
334
|
+
return self.__record_when_alone
|
|
335
|
+
|
|
336
|
+
@record_when_alone.setter
|
|
337
|
+
def record_when_alone(self, value):
|
|
338
|
+
self.__record_when_alone = str(
|
|
339
|
+
value) if value is not None else None
|
|
340
|
+
|
|
341
|
+
@validate_args(
|
|
342
|
+
value=[of_type(str)],
|
|
343
|
+
)
|
|
344
|
+
def set_record_when_alone(self, value):
|
|
345
|
+
self.record_when_alone = value
|
|
346
|
+
return self
|
|
347
|
+
|
|
348
|
+
@property
|
|
349
|
+
def transcription_type(self):
|
|
350
|
+
return self.__transcription_type
|
|
351
|
+
|
|
352
|
+
@transcription_type.setter
|
|
353
|
+
def transcription_type(self, value):
|
|
354
|
+
self.__transcription_type = str(
|
|
355
|
+
value) if value is not None else None
|
|
356
|
+
|
|
357
|
+
@validate_args(
|
|
358
|
+
value=[of_type(str)],
|
|
359
|
+
)
|
|
360
|
+
def set_transcription_type(self, value):
|
|
361
|
+
self.transcription_type = value
|
|
362
|
+
return self
|
|
363
|
+
|
|
364
|
+
@property
|
|
365
|
+
def transcription_url(self):
|
|
366
|
+
return self.__transcription_url
|
|
367
|
+
|
|
368
|
+
@transcription_url.setter
|
|
369
|
+
def transcription_url(self, value):
|
|
370
|
+
self.__transcription_url = str(
|
|
371
|
+
value) if value is not None else None
|
|
372
|
+
|
|
373
|
+
@validate_args(
|
|
374
|
+
value=[of_type(str)],
|
|
375
|
+
)
|
|
376
|
+
def set_transcription_url(self, value):
|
|
377
|
+
self.transcription_url = value
|
|
378
|
+
return self
|
|
379
|
+
|
|
380
|
+
@property
|
|
381
|
+
def transcription_method(self):
|
|
382
|
+
return self.__transcription_method
|
|
383
|
+
|
|
384
|
+
@transcription_method.setter
|
|
385
|
+
def transcription_method(self, value):
|
|
386
|
+
self.__transcription_method = str(
|
|
387
|
+
value) if value is not None else None
|
|
388
|
+
|
|
389
|
+
@validate_args(
|
|
390
|
+
value=[of_type(str)],
|
|
391
|
+
)
|
|
392
|
+
def set_transcription_method(self, value):
|
|
393
|
+
self.transcription_method = value
|
|
394
|
+
return self
|
|
395
|
+
|
|
396
|
+
def __init__(
|
|
397
|
+
self,
|
|
398
|
+
content=None,
|
|
399
|
+
muted=None,
|
|
400
|
+
enter_sound=None,
|
|
401
|
+
exit_sound=None,
|
|
402
|
+
start_conference_on_enter=None,
|
|
403
|
+
end_conference_on_exit=None,
|
|
404
|
+
stay_alone=None,
|
|
405
|
+
wait_sound=None,
|
|
406
|
+
max_members=None,
|
|
407
|
+
record=None,
|
|
408
|
+
record_file_format=None,
|
|
409
|
+
time_limit=None,
|
|
410
|
+
hangup_on_star=None,
|
|
411
|
+
action=None,
|
|
412
|
+
method=None,
|
|
413
|
+
callback_url=None,
|
|
414
|
+
callback_method=None,
|
|
415
|
+
digits_match=None,
|
|
416
|
+
floor_event=None,
|
|
417
|
+
redirect=None,
|
|
418
|
+
relay_dtmf=None,
|
|
419
|
+
send_digits=None,
|
|
420
|
+
record_when_alone=None,
|
|
421
|
+
transcription_type=None,
|
|
422
|
+
transcription_url=None,
|
|
423
|
+
transcription_method=None,
|
|
424
|
+
):
|
|
425
|
+
super(ConferenceElement, self).__init__()
|
|
426
|
+
|
|
427
|
+
self.content = content
|
|
428
|
+
self.muted = muted
|
|
429
|
+
self.enter_sound = enter_sound
|
|
430
|
+
self.exit_sound = exit_sound
|
|
431
|
+
self.start_conference_on_enter = start_conference_on_enter
|
|
432
|
+
self.end_conference_on_exit = end_conference_on_exit
|
|
433
|
+
self.stay_alone = stay_alone
|
|
434
|
+
self.wait_sound = wait_sound
|
|
435
|
+
self.max_members = max_members
|
|
436
|
+
self.record = record
|
|
437
|
+
self.record_file_format = record_file_format
|
|
438
|
+
self.time_limit = time_limit
|
|
439
|
+
self.hangup_on_star = hangup_on_star
|
|
440
|
+
self.action = action
|
|
441
|
+
self.method = method
|
|
442
|
+
self.callback_url = callback_url
|
|
443
|
+
self.callback_method = callback_method
|
|
444
|
+
self.digits_match = digits_match
|
|
445
|
+
self.floor_event = floor_event
|
|
446
|
+
self.redirect = redirect
|
|
447
|
+
self.relay_dtmf = relay_dtmf
|
|
448
|
+
self.send_digits = send_digits
|
|
449
|
+
self.record_when_alone = record_when_alone
|
|
450
|
+
self.transcription_type = transcription_type
|
|
451
|
+
self.transcription_url = transcription_url
|
|
452
|
+
self.transcription_method = transcription_method
|
|
453
|
+
|
|
454
|
+
def to_dict(self):
|
|
455
|
+
d = {
|
|
456
|
+
'muted': self.muted,
|
|
457
|
+
'enterSound': self.enter_sound,
|
|
458
|
+
'exitSound': self.exit_sound,
|
|
459
|
+
'startConferenceOnEnter': self.start_conference_on_enter,
|
|
460
|
+
'endConferenceOnExit': self.end_conference_on_exit,
|
|
461
|
+
'stayAlone': self.stay_alone,
|
|
462
|
+
'waitSound': self.wait_sound,
|
|
463
|
+
'maxMembers': self.max_members,
|
|
464
|
+
'record': self.record,
|
|
465
|
+
'recordFileFormat': self.record_file_format,
|
|
466
|
+
'timeLimit': self.time_limit,
|
|
467
|
+
'hangupOnStar': self.hangup_on_star,
|
|
468
|
+
'action': self.action,
|
|
469
|
+
'method': self.method,
|
|
470
|
+
'callbackUrl': self.callback_url,
|
|
471
|
+
'callbackMethod': self.callback_method,
|
|
472
|
+
'digitsMatch': self.digits_match,
|
|
473
|
+
'floorEvent': self.floor_event,
|
|
474
|
+
'redirect': self.redirect,
|
|
475
|
+
'relayDTMF': self.relay_dtmf,
|
|
476
|
+
'sendDigits': self.send_digits,
|
|
477
|
+
'recordWhenAlone': self.record_when_alone,
|
|
478
|
+
'transcriptionType': self.transcription_type,
|
|
479
|
+
'transcriptionUrl': self.transcription_url,
|
|
480
|
+
'transcriptionMethod': self.transcription_method,
|
|
481
|
+
}
|
|
482
|
+
return {
|
|
483
|
+
k: str(map_type(v))
|
|
484
|
+
for k, v in d.items() if v is not None
|
|
485
|
+
}
|
vobiz/xml/DTMFElement.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from vobiz.xml import VobizXMLElement, map_type
|
|
2
|
+
from vobiz.utils.validators import *
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class DTMFElement(VobizXMLElement):
|
|
6
|
+
_name = 'DTMF'
|
|
7
|
+
_nestable = []
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def async_(self):
|
|
11
|
+
return self.__async
|
|
12
|
+
|
|
13
|
+
@async_.setter
|
|
14
|
+
def async_(self, value):
|
|
15
|
+
self.__async = bool(value) if value is not None else None
|
|
16
|
+
|
|
17
|
+
@validate_args(
|
|
18
|
+
value=[of_type_exact(bool)],
|
|
19
|
+
)
|
|
20
|
+
def set_async(self, value):
|
|
21
|
+
self.async_ = value
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
content,
|
|
27
|
+
async_=None,
|
|
28
|
+
):
|
|
29
|
+
super(DTMFElement, self).__init__()
|
|
30
|
+
|
|
31
|
+
self.content = content
|
|
32
|
+
self.async_ = async_
|
|
33
|
+
|
|
34
|
+
def to_dict(self):
|
|
35
|
+
d = {
|
|
36
|
+
'async': self.async_,
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
k: str(map_type(v))
|
|
40
|
+
for k, v in d.items() if v is not None
|
|
41
|
+
}
|