1# coding=utf-8 2r""" 3This code was generated by 4\ / _ _ _| _ _ 5 | (_)\/(_)(_|\/| |(/_ v1.0.0 6 / / 7""" 8 9from twilio.base import deserialize 10from twilio.base import serialize 11from twilio.base import values 12from twilio.base.instance_context import InstanceContext 13from twilio.base.instance_resource import InstanceResource 14from twilio.base.list_resource import ListResource 15from twilio.base.page import Page 16 17 18class FeedbackSummaryList(ListResource): 19 20 def __init__(self, version, account_sid): 21 """ 22 Initialize the FeedbackSummaryList 23 24 :param Version version: Version that contains the resource 25 :param account_sid: The SID of the Account that created this resource 26 27 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryList 28 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryList 29 """ 30 super(FeedbackSummaryList, self).__init__(version) 31 32 # Path Solution 33 self._solution = {'account_sid': account_sid, } 34 self._uri = '/Accounts/{account_sid}/Calls/FeedbackSummary.json'.format(**self._solution) 35 36 def create(self, start_date, end_date, include_subaccounts=values.unset, 37 status_callback=values.unset, status_callback_method=values.unset): 38 """ 39 Create the FeedbackSummaryInstance 40 41 :param date start_date: Only include feedback given on or after this date 42 :param date end_date: Only include feedback given on or before this date 43 :param bool include_subaccounts: `true` includes feedback from the specified account and its subaccounts 44 :param unicode status_callback: The URL that we will request when the feedback summary is complete 45 :param unicode status_callback_method: The HTTP method we use to make requests to the StatusCallback URL 46 47 :returns: The created FeedbackSummaryInstance 48 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 49 """ 50 data = values.of({ 51 'StartDate': serialize.iso8601_date(start_date), 52 'EndDate': serialize.iso8601_date(end_date), 53 'IncludeSubaccounts': include_subaccounts, 54 'StatusCallback': status_callback, 55 'StatusCallbackMethod': status_callback_method, 56 }) 57 58 payload = self._version.create(method='POST', uri=self._uri, data=data, ) 59 60 return FeedbackSummaryInstance(self._version, payload, account_sid=self._solution['account_sid'], ) 61 62 def get(self, sid): 63 """ 64 Constructs a FeedbackSummaryContext 65 66 :param sid: A string that uniquely identifies this feedback summary resource 67 68 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 69 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 70 """ 71 return FeedbackSummaryContext(self._version, account_sid=self._solution['account_sid'], sid=sid, ) 72 73 def __call__(self, sid): 74 """ 75 Constructs a FeedbackSummaryContext 76 77 :param sid: A string that uniquely identifies this feedback summary resource 78 79 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 80 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 81 """ 82 return FeedbackSummaryContext(self._version, account_sid=self._solution['account_sid'], sid=sid, ) 83 84 def __repr__(self): 85 """ 86 Provide a friendly representation 87 88 :returns: Machine friendly representation 89 :rtype: str 90 """ 91 return '<Twilio.Api.V2010.FeedbackSummaryList>' 92 93 94class FeedbackSummaryPage(Page): 95 96 def __init__(self, version, response, solution): 97 """ 98 Initialize the FeedbackSummaryPage 99 100 :param Version version: Version that contains the resource 101 :param Response response: Response from the API 102 :param account_sid: The SID of the Account that created this resource 103 104 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryPage 105 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryPage 106 """ 107 super(FeedbackSummaryPage, self).__init__(version, response) 108 109 # Path Solution 110 self._solution = solution 111 112 def get_instance(self, payload): 113 """ 114 Build an instance of FeedbackSummaryInstance 115 116 :param dict payload: Payload response from the API 117 118 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 119 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 120 """ 121 return FeedbackSummaryInstance(self._version, payload, account_sid=self._solution['account_sid'], ) 122 123 def __repr__(self): 124 """ 125 Provide a friendly representation 126 127 :returns: Machine friendly representation 128 :rtype: str 129 """ 130 return '<Twilio.Api.V2010.FeedbackSummaryPage>' 131 132 133class FeedbackSummaryContext(InstanceContext): 134 135 def __init__(self, version, account_sid, sid): 136 """ 137 Initialize the FeedbackSummaryContext 138 139 :param Version version: Version that contains the resource 140 :param account_sid: The unique sid that identifies this account 141 :param sid: A string that uniquely identifies this feedback summary resource 142 143 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 144 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 145 """ 146 super(FeedbackSummaryContext, self).__init__(version) 147 148 # Path Solution 149 self._solution = {'account_sid': account_sid, 'sid': sid, } 150 self._uri = '/Accounts/{account_sid}/Calls/FeedbackSummary/{sid}.json'.format(**self._solution) 151 152 def fetch(self): 153 """ 154 Fetch the FeedbackSummaryInstance 155 156 :returns: The fetched FeedbackSummaryInstance 157 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 158 """ 159 payload = self._version.fetch(method='GET', uri=self._uri, ) 160 161 return FeedbackSummaryInstance( 162 self._version, 163 payload, 164 account_sid=self._solution['account_sid'], 165 sid=self._solution['sid'], 166 ) 167 168 def delete(self): 169 """ 170 Deletes the FeedbackSummaryInstance 171 172 :returns: True if delete succeeds, False otherwise 173 :rtype: bool 174 """ 175 return self._version.delete(method='DELETE', uri=self._uri, ) 176 177 def __repr__(self): 178 """ 179 Provide a friendly representation 180 181 :returns: Machine friendly representation 182 :rtype: str 183 """ 184 context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) 185 return '<Twilio.Api.V2010.FeedbackSummaryContext {}>'.format(context) 186 187 188class FeedbackSummaryInstance(InstanceResource): 189 190 class Status(object): 191 QUEUED = "queued" 192 IN_PROGRESS = "in-progress" 193 COMPLETED = "completed" 194 FAILED = "failed" 195 196 def __init__(self, version, payload, account_sid, sid=None): 197 """ 198 Initialize the FeedbackSummaryInstance 199 200 :returns: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 201 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 202 """ 203 super(FeedbackSummaryInstance, self).__init__(version) 204 205 # Marshaled Properties 206 self._properties = { 207 'account_sid': payload.get('account_sid'), 208 'call_count': deserialize.integer(payload.get('call_count')), 209 'call_feedback_count': deserialize.integer(payload.get('call_feedback_count')), 210 'date_created': deserialize.rfc2822_datetime(payload.get('date_created')), 211 'date_updated': deserialize.rfc2822_datetime(payload.get('date_updated')), 212 'end_date': deserialize.iso8601_date(payload.get('end_date')), 213 'include_subaccounts': payload.get('include_subaccounts'), 214 'issues': payload.get('issues'), 215 'quality_score_average': deserialize.decimal(payload.get('quality_score_average')), 216 'quality_score_median': deserialize.decimal(payload.get('quality_score_median')), 217 'quality_score_standard_deviation': deserialize.decimal(payload.get('quality_score_standard_deviation')), 218 'sid': payload.get('sid'), 219 'start_date': deserialize.iso8601_date(payload.get('start_date')), 220 'status': payload.get('status'), 221 } 222 223 # Context 224 self._context = None 225 self._solution = {'account_sid': account_sid, 'sid': sid or self._properties['sid'], } 226 227 @property 228 def _proxy(self): 229 """ 230 Generate an instance context for the instance, the context is capable of 231 performing various actions. All instance actions are proxied to the context 232 233 :returns: FeedbackSummaryContext for this FeedbackSummaryInstance 234 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryContext 235 """ 236 if self._context is None: 237 self._context = FeedbackSummaryContext( 238 self._version, 239 account_sid=self._solution['account_sid'], 240 sid=self._solution['sid'], 241 ) 242 return self._context 243 244 @property 245 def account_sid(self): 246 """ 247 :returns: The unique sid that identifies this account 248 :rtype: unicode 249 """ 250 return self._properties['account_sid'] 251 252 @property 253 def call_count(self): 254 """ 255 :returns: The total number of calls 256 :rtype: unicode 257 """ 258 return self._properties['call_count'] 259 260 @property 261 def call_feedback_count(self): 262 """ 263 :returns: The total number of calls with a feedback entry 264 :rtype: unicode 265 """ 266 return self._properties['call_feedback_count'] 267 268 @property 269 def date_created(self): 270 """ 271 :returns: The date this resource was created 272 :rtype: datetime 273 """ 274 return self._properties['date_created'] 275 276 @property 277 def date_updated(self): 278 """ 279 :returns: The date this resource was last updated 280 :rtype: datetime 281 """ 282 return self._properties['date_updated'] 283 284 @property 285 def end_date(self): 286 """ 287 :returns: The latest feedback entry date in the summary 288 :rtype: date 289 """ 290 return self._properties['end_date'] 291 292 @property 293 def include_subaccounts(self): 294 """ 295 :returns: Whether the feedback summary includes subaccounts 296 :rtype: bool 297 """ 298 return self._properties['include_subaccounts'] 299 300 @property 301 def issues(self): 302 """ 303 :returns: Issues experienced during the call 304 :rtype: list[dict] 305 """ 306 return self._properties['issues'] 307 308 @property 309 def quality_score_average(self): 310 """ 311 :returns: The average QualityScore of the feedback entries 312 :rtype: unicode 313 """ 314 return self._properties['quality_score_average'] 315 316 @property 317 def quality_score_median(self): 318 """ 319 :returns: The median QualityScore of the feedback entries 320 :rtype: unicode 321 """ 322 return self._properties['quality_score_median'] 323 324 @property 325 def quality_score_standard_deviation(self): 326 """ 327 :returns: The standard deviation of the quality scores 328 :rtype: unicode 329 """ 330 return self._properties['quality_score_standard_deviation'] 331 332 @property 333 def sid(self): 334 """ 335 :returns: A string that uniquely identifies this feedback entry 336 :rtype: unicode 337 """ 338 return self._properties['sid'] 339 340 @property 341 def start_date(self): 342 """ 343 :returns: The earliest feedback entry date in the summary 344 :rtype: date 345 """ 346 return self._properties['start_date'] 347 348 @property 349 def status(self): 350 """ 351 :returns: The status of the feedback summary 352 :rtype: FeedbackSummaryInstance.Status 353 """ 354 return self._properties['status'] 355 356 def fetch(self): 357 """ 358 Fetch the FeedbackSummaryInstance 359 360 :returns: The fetched FeedbackSummaryInstance 361 :rtype: twilio.rest.api.v2010.account.call.feedback_summary.FeedbackSummaryInstance 362 """ 363 return self._proxy.fetch() 364 365 def delete(self): 366 """ 367 Deletes the FeedbackSummaryInstance 368 369 :returns: True if delete succeeds, False otherwise 370 :rtype: bool 371 """ 372 return self._proxy.delete() 373 374 def __repr__(self): 375 """ 376 Provide a friendly representation 377 378 :returns: Machine friendly representation 379 :rtype: str 380 """ 381 context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items()) 382 return '<Twilio.Api.V2010.FeedbackSummaryInstance {}>'.format(context) 383