Skip to content

Commit bc66701

Browse files
authored
DX-1670-1673 added sip uri and tag bxml (#6)
* DX-1670-1673 added sip uri and tag bxml * updated version
1 parent b802c80 commit bc66701

File tree

5 files changed

+137
-2
lines changed

5 files changed

+137
-2
lines changed

bandwidth/voice/bxml/verbs/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@
1818
from .ring import Ring
1919
from .stop_gather import StopGather
2020
from .start_gather import StartGather
21+
from .tag import Tag
22+
from .sip_uri import SipUri
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
"""
2+
sip_uri.py
3+
4+
Representation of Bandwidth's sip uri BXML verb
5+
6+
@copyright Bandwidth INC
7+
"""
8+
9+
from lxml import etree
10+
11+
from .base_verb import AbstractBxmlVerb
12+
13+
SIP_URI_TAG = "SipUri"
14+
15+
16+
class SipUri(AbstractBxmlVerb):
17+
18+
def __init__(self, uri=None, transfer_answer_url=None, transfer_answer_method=None,
19+
username=None, password=None, tag=None, uui=None,
20+
transfer_disconnect_url=None, transfer_disconnect_method=None,
21+
transfer_answer_fallback_url=None, transfer_answer_fallback_method=None,
22+
fallback_username=None, fallback_password=None):
23+
"""
24+
Initializes the SipUri class with the following parameters
25+
26+
:param str uri: The sip uri
27+
:param str transfer_answer_url: The url to send the transfer event to
28+
:param str transfer_answer_method: The http method of the transfer event request
29+
:param str transfer_disconnect_url: The url to send the transfer disconnect event to
30+
:param str transfer_disconnect_method: The http method of the transfer disconnect event request
31+
:param str username: The username to authenticate on the transfer event url
32+
:param str password: The password to authenticate on the transfer event url
33+
:param str tag: Custom string sent in the callback
34+
:param str uui: The value of the `User-To-User` header to send within the initial `INVITE`
35+
:param str transfer_answer_fallback_url: URL for fallback events
36+
:param str transfer_answer_fallback_method: HTTP method for fallback events
37+
:param str fallback_username: Basic auth username for fallback events
38+
:param str fallback_password: Basic auth password for fallback events
39+
"""
40+
self.uri = uri
41+
self.transfer_answer_url = transfer_answer_url
42+
self.transfer_answer_method = transfer_answer_method
43+
self.username = username
44+
self.password = password
45+
self.tag = tag
46+
self.uui = uui
47+
self.transfer_disconnect_method = transfer_disconnect_method
48+
self.transfer_disconnect_url = transfer_disconnect_url
49+
self.transfer_answer_fallback_url = transfer_answer_fallback_url
50+
self.transfer_answer_fallback_method = transfer_answer_fallback_method
51+
self.fallback_username = fallback_username
52+
self.fallback_password = fallback_password
53+
54+
def to_etree_element(self):
55+
"""
56+
Converts the class into an etree element. Used for other verb classes to build xml
57+
58+
:return etree.Element: The etree Element representing this class
59+
"""
60+
root = etree.Element(SIP_URI_TAG)
61+
if self.uri is not None:
62+
root.text = self.uri
63+
if self.transfer_answer_url is not None:
64+
root.set("transferAnswerUrl", self.transfer_answer_url)
65+
if self.transfer_answer_method is not None:
66+
root.set("transferAnswerMethod", self.transfer_answer_method)
67+
if self.username is not None:
68+
root.set("username", self.username)
69+
if self.password is not None:
70+
root.set("password", self.password)
71+
if self.tag is not None:
72+
root.set("tag", self.tag)
73+
if self.uui is not None:
74+
root.set("uui", self.uui)
75+
if self.transfer_disconnect_method is not None:
76+
root.set("transferDisconnectMethod", self.transfer_disconnect_method)
77+
if self.transfer_disconnect_url is not None:
78+
root.set("transferDisconnectUrl", self.transfer_disconnect_url)
79+
if self.transfer_answer_fallback_url is not None:
80+
root.set("transferAnswerFallbackUrl", self.transfer_answer_fallback_url)
81+
if self.transfer_answer_fallback_method is not None:
82+
root.set("transferAnswerFallbackMethod", self.transfer_answer_fallback_method)
83+
if self.fallback_username is not None:
84+
root.set("fallbackUsername", self.fallback_username)
85+
if self.fallback_password is not None:
86+
root.set("fallbackPassword", self.fallback_password)
87+
return root
88+
89+
def to_bxml(self):
90+
return etree.tostring(self.to_etree_element()).decode()

bandwidth/voice/bxml/verbs/tag.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
play_audio.py
3+
4+
Representation of Bandwidth's play audio BXML verb
5+
6+
@copyright Bandwidth INC
7+
"""
8+
9+
from lxml import etree
10+
11+
from .base_verb import AbstractBxmlVerb
12+
13+
TAG_TAG = "Tag"
14+
15+
16+
class Tag(AbstractBxmlVerb):
17+
18+
def __init__(self, tag=None):
19+
"""
20+
Initializes the Tag class with the following parameters
21+
22+
:param str tag: The tag to set the call to
23+
"""
24+
self.tag = tag
25+
26+
def to_etree_element(self):
27+
"""
28+
Converts the class into an etree element. Used for other verb classes to build xml
29+
30+
:return etree.Element: The etree Element representing this class
31+
"""
32+
root = etree.Element(TAG_TAG)
33+
if self.tag is not None:
34+
root.text = self.tag
35+
return root
36+
37+
def to_bxml(self):
38+
return etree.tostring(self.to_etree_element()).decode()

bandwidth/voice/bxml/verbs/transfer.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class Transfer(AbstractBxmlVerb):
1717

1818
def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfer_complete_url=None,
1919
transfer_complete_method=None, username=None, password=None, diversion_treatment=None,
20-
diversion_reason=None, phone_numbers=None,
20+
diversion_reason=None, phone_numbers=None, sip_uris=None,
2121
transfer_complete_fallback_url=None, transfer_complete_fallback_method=None,
2222
fallback_username=None, fallback_password=None):
2323
"""
@@ -33,6 +33,7 @@ def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfe
3333
:param str diversion_treatment: The diversion treatment for the call
3434
:param str diversion_reason: The diversion reason for the call
3535
:param list<PhoneNumber> phone_numbers: The numbers to receive the transferred call
36+
:param list<SipUri> sip_uris: The sip uris to receive the transferred call
3637
:param str transfer_complete_fallback_url: URL for fallback events
3738
:param str transfer_complete_fallback_method: HTTP method for fallback events
3839
:param str fallback_username: Basic auth username for fallback events
@@ -48,6 +49,7 @@ def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfe
4849
self.diversion_treatment = diversion_treatment
4950
self.diversion_reason = diversion_reason
5051
self.phone_numbers = phone_numbers
52+
self.sip_uris = sip_uris
5153
self.transfer_complete_fallback_url = transfer_complete_fallback_url
5254
self.transfer_complete_fallback_method = transfer_complete_fallback_method
5355
self.fallback_username = fallback_username
@@ -84,4 +86,7 @@ def to_bxml(self):
8486
if self.phone_numbers is not None:
8587
for phone_number in self.phone_numbers:
8688
root.append(phone_number.to_etree_element())
89+
if self.sip_uris is not None:
90+
for sip_uri in self.sip_uris:
91+
root.append(sip_uri.to_etree_element())
8792
return etree.tostring(root).decode()

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
setup(
1414
name='bandwidth-sdk',
15-
version='6.13.3',
15+
version='6.14.0',
1616
description='Bandwidth\'s set of APIs',
1717
long_description=long_description,
1818
long_description_content_type="text/markdown",

0 commit comments

Comments
 (0)