diff --git a/bandwidth/model/bxml/verbs/__init__.py b/bandwidth/model/bxml/verbs/__init__.py index c8f3ee26..8d6e0dc1 100644 --- a/bandwidth/model/bxml/verbs/__init__.py +++ b/bandwidth/model/bxml/verbs/__init__.py @@ -6,12 +6,14 @@ from .phone_number import PhoneNumber from .play_audio import PlayAudio from .record import Record -from .start_recording import StartRecording +from .send_dtmf import SendDtmf from .sip_uri import SipUri +from .speak_sentence import SpeakSentence +from .start_recording import StartRecording from .start_stream import StartStream +from .stop_gather import StopGather from .stop_stream import StopStream -from .stream_param import StreamParam from .stop_recording import StopRecording -from .speak_sentence import SpeakSentence +from .stream_param import StreamParam 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/bandwidth/model/bxml/verbs/stop_gather.py b/bandwidth/model/bxml/verbs/stop_gather.py new file mode 100644 index 00000000..73b6b8a3 --- /dev/null +++ b/bandwidth/model/bxml/verbs/stop_gather.py @@ -0,0 +1,16 @@ +""" +stop_gather.py + +Bandwidth's StopGather BXML verb + +@copyright Bandwidth INC +""" +from ..terminal_verb import TerminalVerb + + +class StopGather(TerminalVerb): + + def __init__(self): + """Initialize a verb + """ + super().__init__(tag="StopGather", content=None) 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) + diff --git a/test/unit/bxml/test_stop_gather.py b/test/unit/bxml/test_stop_gather.py new file mode 100644 index 00000000..64578c2d --- /dev/null +++ b/test/unit/bxml/test_stop_gather.py @@ -0,0 +1,28 @@ +""" +test_stop_gather.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.stop_gather import StopGather + + +class TestTag(unittest.TestCase): + + def setUp(self): + self.stop_gather = StopGather() + self.test_verb = Verb(tag="test") + + def test_to_bxml(self): + expected = '' + assert(expected == self.stop_gather.to_bxml()) + + def test_add_verb(self): + with pytest.raises(AttributeError): + self.stop_gather.add_verb(self.test_verb) +