Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions bandwidth/model/bxml/verbs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
38 changes: 38 additions & 0 deletions bandwidth/model/bxml/verbs/send_dtmf.py
Original file line number Diff line number Diff line change
@@ -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 <SendDtmf> 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
}
16 changes: 16 additions & 0 deletions bandwidth/model/bxml/verbs/stop_gather.py
Original file line number Diff line number Diff line change
@@ -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 <StopGather> verb
"""
super().__init__(tag="StopGather", content=None)
33 changes: 33 additions & 0 deletions test/unit/bxml/test_send_dtmf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""
test_send_dtmf.py

Unit tests for the <SendDtmf> 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 = '<SendDtmf toneDuration="3" toneInterval="5">1234</SendDtmf>'
assert(expected == self.send_dtmf.to_bxml())


def test_add_verb(self):
with pytest.raises(AttributeError):
self.send_dtmf.add_verb(self.test_verb)

28 changes: 28 additions & 0 deletions test/unit/bxml/test_stop_gather.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""
test_stop_gather.py

Unit tests for the <StopGather> 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 = '<StopGather />'
assert(expected == self.stop_gather.to_bxml())

def test_add_verb(self):
with pytest.raises(AttributeError):
self.stop_gather.add_verb(self.test_verb)