8000 #283 -- Add Task verb to voice_response.py · twilio/twilio-python@3d45613 · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3d45613

Browse files
committed
#283 -- Add Task verb to voice_response.py
1 parent 348e033 commit 3d45613

File tree

2 files changed

+124
-1
lines changed

2 files changed

+124
-1
lines changed

tests/unit/twiml/test_voice_response.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from nose.tools import assert_equal
33
from six import u
44
from tests.unit.twiml import TwilioTest
5-
from twilio.twiml.voice_response import VoiceResponse, Dial, Gather
5+
from twilio.twiml.voice_response import VoiceResponse, Dial, Enqueue, Gather
66

77

88
class TestResponse(TwilioTest):
@@ -349,6 +349,18 @@ def test_queue(self):
349349
)
350350

351351

352+
class TestEcho(TwilioTest):
353+
354+
def test_echo(self):
355+
r = VoiceResponse()
356+
r.echo()
357+
358+
assert_equal(
359+
self.strip(r),
360+
'<?xml version="1.0" encoding="UTF-8"?><Response><Echo /></Response>'
361+
)
362+
363+
352364
class TestEnqueue(TwilioTest):
353365

354366
def test_enqueue(self):
@@ -366,6 +378,30 @@ def test_enqueue(self):
366378
'<?xml version="1.0" encoding="UTF-8"?><Response><Enqueue action="act" method="GET" waitUrl="wait" waitUrlMethod="POST">TestEnqueueAttribute</Enqueue></Response>'
367379
)
368380

381+
def test_task_string(self):
382+
e = Enqueue(None, workflowSid='123123123')
383+
e.task('{"account_sid": "AC123123123"}')
384+
385+
r = VoiceResponse()
386+
r.append(e)
387+
388+
assert_equal(
389+
self.strip(r),
390+
'<?xml version="1.0" encoding="UTF-8"?><Response><Enqueue workflowsid="123123123"><Task>{"account_sid": "AC123123123"}</Task></Enqueue></Response>'
391+
)
392+
393+
def test_task_dict(self):
394+
e = Enqueue(None, workflowSid='123123123')
395+
e.task({"account_sid": "AC123123123"})
396+
397+
r = VoiceResponse()
398+
r.append(e)
399+
400+
assert_equal(
401+
self.strip(r),
402+
'<?xml version="1.0" encoding="UTF-8"?><Response><Enqueue workflowsid="123123123"><Task>{"account_sid": "AC123123123"}</Task></Enqueue></Response>'
403+
)
404+
369405

370406
class TestDial(TwilioTest):
371407

@@ -379,6 +415,18 @@ def test_dial(self):
379415
'<?xml version="1.0" encoding="UTF-8"?><Response><Dial>1231231234</Dial></Response>'
380416
)
381417

418+
def test_sim(self):
419+
d = Dial()
420+
d.sim('123123123')
421+
422+
r = VoiceResponse()
423+
r.append(d)
424+
425+
assert_equal(
426+
self.strip(r),
427+
'<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Sim>123123123</Sim></Dial></Response>'
428+
)
429+
382430
def test_sip(self):
383431
""" should redirect the call """
384432
d = Dial()

twilio/twiml/voice_response.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import json
2+
13
from twilio.twiml import TwiML
24

35

@@ -57,6 +59,15 @@ def dial(self,
5759
**kwargs
5860
))
5961

62+
def echo(self,
63+
**kwargs):
64+
"""
65+
Add a new <Echo> element
66+
"""
67+
return self.append(Echo(
68+
**kwargs
69+
))
70+
6071
def enqueue(self,
6172
name,
6273
action=None,
@@ -444,6 +455,19 @@ def queue(self,
444455
**kwargs
445456
))
446457

458+
def sim(self,
459+
sid,
460+
**kwargs):
461+
"""
462+
Add a <Sim> element
463+
464+
:param sid: sim sid
465+
"""
466+
return self.append(Sim(
467+
sid,
468+
**kwargs
469+
))
470+
447471
def sip(self,
448472
uri,
449473
username=None,
@@ -541,6 +565,20 @@ def __init__(self, queue_name, **kwargs):
541565
self.value = queue_name
542566

543567

568+
class Sim(TwiML):
569+
"""
570+
<Sim> element
571+
"""
572+
def __init__(self, sid, **kwargs):
573+
"""
574+
Create a new <Sim> element
575+
576+
:param sid: sim sid
577+
"""
578+
super(Sim, self).__init__(**kwargs)
579+
self.value = sid
580+
581+
544582
class Sip(TwiML):
545583
"""
546584
<Sip> element
@@ -556,6 +594,17 @@ def __init__(self, uri, **kwargs):
556594
self.value = uri
557595

558596

597+
class Echo(TwiML):
598+
"""
599+
<Echo> element
600+
"""
601+
def __init__(self, **kwargs):
602+
"""
603+
Create a new <Echo> element
604+
"""
605+
super(Echo, self).__init__(**kwargs)
606+
607+
559608
class Enqueue(TwiML):
560609
"""
561610
<Enqueue> element
@@ -570,6 +619,32 @@ def __init__(self, name, **kwargs):
570619
super(Enqueue, self).__init__(**kwargs)
571620
self.value = name
572621

622+
def task(self, attributes, **kwargs):
623+
"""
624+
Add a <Task> element
625+
626+
:param attributes: Attributes for a task
627+
:return: <Task> element
628+
"""
629+
return self.append(Task(attributes, **kwargs))
630+
631+
632+
class Task(TwiML):
633+
"""
634+
<Task> element
635+
"""
636+
def __init__(self, attributes, **kwargs):
637+
"""
638+
Create a new <Task> element
639+
640+
:param attributes: Attributes for a task
641+
"""
642+
super(Task, self).__init__(**kwargs)
643+
if isinstance(attributes, basestring):
644+
self.value = attributes
645+
else:
646+
self.value = json.dumps(attributes)
647+
573648

574649
class Gather(TwiML):
575650
"""

0 commit comments

Comments
 (0)
0