Skip to content

Commit 757bac2

Browse files
Merge pull request #128 from Bandwidth/DX-2907
DX-2907 `<SendDtmf>` Refactor
2 parents d2361ef + d4398ab commit 757bac2

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

bandwidth/model/bxml/verbs/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from .pause_recording import PauseRecording
33
from .phone_number import PhoneNumber
44
from .record import Record
5+
from .send_dtmf import SendDtmf
56
from .sip_uri import SipUri
67
from .tag import Tag
78
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+
}

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+

0 commit comments

Comments
 (0)