diff --git a/bandwidth/model/bxml/verbs/__init__.py b/bandwidth/model/bxml/verbs/__init__.py index c29ce144..b630beda 100644 --- a/bandwidth/model/bxml/verbs/__init__.py +++ b/bandwidth/model/bxml/verbs/__init__.py @@ -2,6 +2,7 @@ from .pause_recording import PauseRecording from .phone_number import PhoneNumber from .record import Record +from .send_dtmf import SendDtmf from .sip_uri import SipUri from .tag import Tag from .transfer import Transfer diff --git a/bandwidth/model/bxml/verbs/send_dtmf.py b/bandwidth/model/bxml/verbs/send_dtmf.py new file mode 100644 index 00000000..e3c1527d --- /dev/null +++ b/bandwidth/model/bxml/verbs/send_dtmf.py @@ -0,0 +1,38 @@ +""" +send_dtmf.py + +Bandwidth's SendDtmf BXML verb + +@copyright Bandwidth INC +""" +from ..terminal_verb import TerminalVerb + + +class SendDtmf(TerminalVerb): + + def __init__( + self, digits: str, + tone_duration: str=None, + tone_interval: str=None, + ): + """Initialize a verb + + Args: + 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. + tone_duration (str, optional): The length (in milliseconds) of each DTMF tone. Default value is 200. Range: decimal values between 50 - 5000. + tone_interval (str, optional): The duration of silence (in milliseconds) following each DTMF tone. Default value is 400. Range: decimal values between 50 - 5000. + """ + self.digits = digits + self.tone_duration = tone_duration + self.tone_interval = tone_interval + super().__init__( + tag="SendDtmf", + content=self.digits + ) + + @property + def _attributes(self): + return { + "toneDuration": self.tone_duration, + "toneInterval": self.tone_interval + } diff --git a/test/unit/bxml/test_send_dtmf.py b/test/unit/bxml/test_send_dtmf.py new file mode 100644 index 00000000..5698d2c4 --- /dev/null +++ b/test/unit/bxml/test_send_dtmf.py @@ -0,0 +1,33 @@ +""" +test_send_dtmf.py + +Unit tests for the BXML verb + +@copyright Bandwidth Inc. +""" +import pytest +import unittest + +from bandwidth.model.bxml.verb import Verb +from bandwidth.model.bxml.verbs.send_dtmf import SendDtmf + + +class TestSendDtmf(unittest.TestCase): + + def setUp(self): + self.send_dtmf = SendDtmf( + digits="1234", + tone_duration="3", + tone_interval="5" + ) + self.test_verb = Verb(tag="test") + + def test_to_bxml(self): + expected = '1234' + assert(expected == self.send_dtmf.to_bxml()) + + + def test_add_verb(self): + with pytest.raises(AttributeError): + self.send_dtmf.add_verb(self.test_verb) +