Skip to content

Commit 2b48892

Browse files
Merge pull request #130 from Bandwidth/DX-2914
DX-2914 `<StopGather>` Verb Refactored
2 parents 5a01caa + 2ca8c48 commit 2b48892

File tree

5 files changed

+120
-3
lines changed

5 files changed

+120
-3
lines changed

bandwidth/model/bxml/verbs/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
from .phone_number import PhoneNumber
77
from .play_audio import PlayAudio
88
from .record import Record
9-
from .start_recording import StartRecording
9+
from .send_dtmf import SendDtmf
1010
from .sip_uri import SipUri
11+
from .speak_sentence import SpeakSentence
12+
from .start_recording import StartRecording
1113
from .start_stream import StartStream
14+
from .stop_gather import StopGather
1215
from .stop_stream import StopStream
13-
from .stream_param import StreamParam
1416
from .stop_recording import StopRecording
15-
from .speak_sentence import SpeakSentence
17+
from .stream_param import StreamParam
1618
from .tag import Tag
1719
from .transfer import Transfer
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
send_dtmf.py
3+
4+
Bandwidth's SendDtmf BXML verb
5+
6+
@copyright Bandwidth INC
7+
"""
8+
from ..terminal_verb import TerminalVerb
9+
10+
11+
class SendDtmf(TerminalVerb):
12+
13+
def __init__(
14+
self, digits: str,
15+
tone_duration: str=None,
16+
tone_interval: str=None,
17+
):
18+
"""Initialize a <SendDtmf> verb
19+
20+
Args:
21+
digits (str): String containing the DTMF characters to be sent in a call. Allows a maximum of 50 characters. The digits will be sent one-by-one with a marginal delay.
22+
tone_duration (str, optional): The length (in milliseconds) of each DTMF tone. Default value is 200. Range: decimal values between 50 - 5000.
23+
tone_interval (str, optional): The duration of silence (in milliseconds) following each DTMF tone. Default value is 400. Range: decimal values between 50 - 5000.
24+
"""
25+
self.digits = digits
26+
self.tone_duration = tone_duration
27+
self.tone_interval = tone_interval
28+
super().__init__(
29+
tag="SendDtmf",
30+
content=self.digits
31+
)
32+
33+
@property
34+
def _attributes(self):
35+
return {
36+
"toneDuration": self.tone_duration,
37+
"toneInterval": self.tone_interval
38+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
stop_gather.py
3+
4+
Bandwidth's StopGather BXML verb
5+
6+
@copyright Bandwidth INC
7+
"""
8+
from ..terminal_verb import TerminalVerb
9+
10+
11+
class StopGather(TerminalVerb):
12+
13+
def __init__(self):
14+
"""Initialize a <StopGather> verb
15+
"""
16+
super().__init__(tag="StopGather", content=None)

test/unit/bxml/test_send_dtmf.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
test_send_dtmf.py
3+
4+
Unit tests for the <SendDtmf> BXML verb
5+
6+
@copyright Bandwidth Inc.
7+
"""
8+
import pytest
9+
import unittest
10+
11+
from bandwidth.model.bxml.verb import Verb
12+
from bandwidth.model.bxml.verbs.send_dtmf import SendDtmf
13+
14+
15+
class TestSendDtmf(unittest.TestCase):
16+
17+
def setUp(self):
18+
self.send_dtmf = SendDtmf(
19+
digits="1234",
20+
tone_duration="3",
21+
tone_interval="5"
22+
)
23+
self.test_verb = Verb(tag="test")
24+
25+
def test_to_bxml(self):
26+
expected = '<SendDtmf toneDuration="3" toneInterval="5">1234</SendDtmf>'
27+
assert(expected == self.send_dtmf.to_bxml())
28+
29+
30+
def test_add_verb(self):
31+
with pytest.raises(AttributeError):
32+
self.send_dtmf.add_verb(self.test_verb)
33+

test/unit/bxml/test_stop_gather.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""
2+
test_stop_gather.py
3+
4+
Unit tests for the <StopGather> BXML verb
5+
6+
@copyright Bandwidth Inc.
7+
"""
8+
import pytest
9+
import unittest
10+
11+
from bandwidth.model.bxml.verb import Verb
12+
from bandwidth.model.bxml.verbs.stop_gather import StopGather
13+
14+
15+
class TestTag(unittest.TestCase):
16+
17+
def setUp(self):
18+
self.stop_gather = StopGather()
19+
self.test_verb = Verb(tag="test")
20+
21+
def test_to_bxml(self):
22+
expected = '<StopGather />'
23+
assert(expected == self.stop_gather.to_bxml())
24+
25+
def test_add_verb(self):
26+
with pytest.raises(AttributeError):
27+
self.stop_gather.add_verb(self.test_verb)
28+

0 commit comments

Comments
 (0)