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
2 changes: 2 additions & 0 deletions bandwidth/voice/bxml/verbs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@
from .ring import Ring
from .stop_gather import StopGather
from .start_gather import StartGather
from .tag import Tag
from .sip_uri import SipUri
90 changes: 90 additions & 0 deletions bandwidth/voice/bxml/verbs/sip_uri.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
"""
sip_uri.py

Representation of Bandwidth's sip uri BXML verb

@copyright Bandwidth INC
"""

from lxml import etree

from .base_verb import AbstractBxmlVerb

SIP_URI_TAG = "SipUri"


class SipUri(AbstractBxmlVerb):

def __init__(self, uri=None, transfer_answer_url=None, transfer_answer_method=None,
username=None, password=None, tag=None, uui=None,
transfer_disconnect_url=None, transfer_disconnect_method=None,
transfer_answer_fallback_url=None, transfer_answer_fallback_method=None,
fallback_username=None, fallback_password=None):
"""
Initializes the SipUri class with the following parameters

:param str uri: The sip uri
:param str transfer_answer_url: The url to send the transfer event to
:param str transfer_answer_method: The http method of the transfer event request
:param str transfer_disconnect_url: The url to send the transfer disconnect event to
:param str transfer_disconnect_method: The http method of the transfer disconnect event request
:param str username: The username to authenticate on the transfer event url
:param str password: The password to authenticate on the transfer event url
:param str tag: Custom string sent in the callback
:param str uui: The value of the `User-To-User` header to send within the initial `INVITE`
:param str transfer_answer_fallback_url: URL for fallback events
:param str transfer_answer_fallback_method: HTTP method for fallback events
:param str fallback_username: Basic auth username for fallback events
:param str fallback_password: Basic auth password for fallback events
"""
self.uri = uri
self.transfer_answer_url = transfer_answer_url
self.transfer_answer_method = transfer_answer_method
self.username = username
self.password = password
self.tag = tag
self.uui = uui
self.transfer_disconnect_method = transfer_disconnect_method
self.transfer_disconnect_url = transfer_disconnect_url
self.transfer_answer_fallback_url = transfer_answer_fallback_url
self.transfer_answer_fallback_method = transfer_answer_fallback_method
self.fallback_username = fallback_username
self.fallback_password = fallback_password

def to_etree_element(self):
"""
Converts the class into an etree element. Used for other verb classes to build xml

:return etree.Element: The etree Element representing this class
"""
root = etree.Element(SIP_URI_TAG)
if self.uri is not None:
root.text = self.uri
if self.transfer_answer_url is not None:
root.set("transferAnswerUrl", self.transfer_answer_url)
if self.transfer_answer_method is not None:
root.set("transferAnswerMethod", self.transfer_answer_method)
if self.username is not None:
root.set("username", self.username)
if self.password is not None:
root.set("password", self.password)
if self.tag is not None:
root.set("tag", self.tag)
if self.uui is not None:
root.set("uui", self.uui)
if self.transfer_disconnect_method is not None:
root.set("transferDisconnectMethod", self.transfer_disconnect_method)
if self.transfer_disconnect_url is not None:
root.set("transferDisconnectUrl", self.transfer_disconnect_url)
if self.transfer_answer_fallback_url is not None:
root.set("transferAnswerFallbackUrl", self.transfer_answer_fallback_url)
if self.transfer_answer_fallback_method is not None:
root.set("transferAnswerFallbackMethod", self.transfer_answer_fallback_method)
if self.fallback_username is not None:
root.set("fallbackUsername", self.fallback_username)
if self.fallback_password is not None:
root.set("fallbackPassword", self.fallback_password)
return root

def to_bxml(self):
return etree.tostring(self.to_etree_element()).decode()
38 changes: 38 additions & 0 deletions bandwidth/voice/bxml/verbs/tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""
play_audio.py

Representation of Bandwidth's play audio BXML verb

@copyright Bandwidth INC
"""

from lxml import etree

from .base_verb import AbstractBxmlVerb

TAG_TAG = "Tag"


class Tag(AbstractBxmlVerb):

def __init__(self, tag=None):
"""
Initializes the Tag class with the following parameters

:param str tag: The tag to set the call to
"""
self.tag = tag

def to_etree_element(self):
"""
Converts the class into an etree element. Used for other verb classes to build xml

:return etree.Element: The etree Element representing this class
"""
root = etree.Element(TAG_TAG)
if self.tag is not None:
root.text = self.tag
return root

def to_bxml(self):
return etree.tostring(self.to_etree_element()).decode()
7 changes: 6 additions & 1 deletion bandwidth/voice/bxml/verbs/transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class Transfer(AbstractBxmlVerb):

def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfer_complete_url=None,
transfer_complete_method=None, username=None, password=None, diversion_treatment=None,
diversion_reason=None, phone_numbers=None,
diversion_reason=None, phone_numbers=None, sip_uris=None,
transfer_complete_fallback_url=None, transfer_complete_fallback_method=None,
fallback_username=None, fallback_password=None):
"""
Expand All @@ -33,6 +33,7 @@ def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfe
:param str diversion_treatment: The diversion treatment for the call
:param str diversion_reason: The diversion reason for the call
:param list<PhoneNumber> phone_numbers: The numbers to receive the transferred call
:param list<SipUri> sip_uris: The sip uris to receive the transferred call
:param str transfer_complete_fallback_url: URL for fallback events
:param str transfer_complete_fallback_method: HTTP method for fallback events
:param str fallback_username: Basic auth username for fallback events
Expand All @@ -48,6 +49,7 @@ def __init__(self, transfer_caller_id=None, call_timeout=None, tag=None, transfe
self.diversion_treatment = diversion_treatment
self.diversion_reason = diversion_reason
self.phone_numbers = phone_numbers
self.sip_uris = sip_uris
self.transfer_complete_fallback_url = transfer_complete_fallback_url
self.transfer_complete_fallback_method = transfer_complete_fallback_method
self.fallback_username = fallback_username
Expand Down Expand Up @@ -84,4 +86,7 @@ def to_bxml(self):
if self.phone_numbers is not None:
for phone_number in self.phone_numbers:
root.append(phone_number.to_etree_element())
if self.sip_uris is not None:
for sip_uri in self.sip_uris:
root.append(sip_uri.to_etree_element())
return etree.tostring(root).decode()
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

setup(
name='bandwidth-sdk',
version='6.13.3',
version='6.14.0',
description='Bandwidth\'s set of APIs',
long_description=long_description,
long_description_content_type="text/markdown",
Expand Down