8000 allow creating feedback in one request · LilyAcorn/twilio-python@80445fa · GitHub
[go: up one dir, main page]

Skip to content

Commit 80445fa

Browse files
author
Doug Black
committed
allow creating feedback in one request
1 parent b0043f2 commit 80445fa

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed

tests/test_call_feedback.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,35 @@ def test_create_call_feedback(self, request):
5151
timeout=ANY,
5252
)
5353

54+
@patch('twilio.rest.resources.base.make_twilio_request')
55+
def test_create_call_feedback_one_request(self, request):
56+
resp = create_mock_json('tests/resources/call_feedback.json')
57+
resp.status_code = 201
58+
request.return_value = resp
59+
60+
base_uri = 'https://api.twilio.com/2010-04-01/Accounts/AC123'
61+
account_sid = 'AC123'
62+
auth = (account_sid, "token")
63+
64+
calls = Calls(base_uri, auth)
65+
uri = "%s/Calls/CA123/Feedback" % base_uri
66+
feedback = calls.feedback(
67+
'CA123',
68+
quality_score=5,
69+
issue=['imperfect-audio', 'post-dial-delay']
70+
)
71+
72+
exp_data = {
73+
'QualityScore': 5,
74+
'Issue': ['imperfect-audio', 'post-dial-delay'],
75+
}
76+
77+
assert_equal(['imperfect-audio', 'post-dial-delay'], feedback.issues)
78+
request.assert_called_with(
79+
"POST", uri,
80+
data=exp_data, auth=auth,
81+
)
82+
5483

5584
class CallFeedbackSummaryTest(unittest.TestCase):
5685

twilio/rest/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
from .resources import Transcriptions
2727
from .resources import UNSET_TIMEOUT
2828
from .resources import Usage
29+
from .resources import CallFeedbackFactory
30+
from .resources import CallFeedback
2931

3032

3133
def find_credentials(environ=None):
@@ -133,6 +135,20 @@ def members(self, queue_sid):
133135
base_uri = "%s/Queues/%s" % (self.account_uri, queue_sid)
134136
return Members(base_uri, self.auth, self.timeout)
135137

138+
def feedback(self, call_sid):
139+
"""
140+
Return a :class:`CallFeedback <twilio.rest.resources.CallFeedback>`
141+
instance for the :class:`Call <twilio.rest.resources.calls.Call>`
142+
with the given call_sid
143+
"""
144+
base_uri = "%s/Calls/%s/Feedback" % (self.account_uri, call_sid)
145+
call_feedback_list = CallFeedbackFactory(
146+
base_uri,
147+
self.auth,
148+
self.timeout
149+
)
150+
return CallFeedback(call_feedback_list)
151+
136152
def request(self, path, method=None, vars=None):
137153
"""sends a request and gets a response from the Twilio REST API
138154

twilio/rest/resources/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
)
2525
from .calls import Call, Calls
2626
from .caller_ids import CallerIds, CallerId
27+
from .call_feedback import (
28+
CallFeedbackFactory, CallFeedback, CallFeedbackSummary,
29+
CallFeedbackSummaryInstance
30+
)
2731
from .connection import Connection
2832
from .sandboxes import Sandbox, Sandboxes
2933
from .sms_messages import (

twilio/rest/resources/call_feedback.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from twilio.rest.resources import (
1+
from . import (
22
ListResource,
33
InstanceResource,
44
transform_params,

twilio/rest/resources/calls.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
CallFeedbackFactory,
55
CallFeedbackSummary,
66
)
7-
from .util import normalize_dates, parse_date
7+
from .util import normalize_dates, parse_date, transform_params
88
from . import InstanceResource, ListResource
99

1010

@@ -153,3 +153,19 @@ def route(self, sid, url, method="POST"):
153153
:returns: Updated :class:`Call` resource
154154
"""
155155
return self.update(sid, url=url, method=method)
156+
157+
def feedback(self, sid, quality_score, issue=None):
158+
""" Create feedback for the given call.
159+
160+
:param sid: A Call Sid for a specific call
161+
:param quality_score: The quality of the call
162+
:param issue: A list of issues experienced during the call
163+
:returns: A :class:`CallFeedback` object
164+
"""
165+
uri = "%s/%s" % (self.uri, sid)
166+
call_feedback_factory = CallFeedbackFactory(
167+
uri, self.auth, self.timeout
168+
)
169+
return call_feedback_factory.create(
170+
quality_score=quality_score, issue=issue
171+
)

0 commit comments

Comments
 (0)
0