Source code for wxc_sdk.telephony.cx_essentials.wrapup_reasons

"""
Customer Experience Essentials Wrap Up Reasons API
"""

import builtins
from typing import Optional

from pydantic import TypeAdapter

from wxc_sdk.api_child import ApiChild
from wxc_sdk.base import ApiModel

__all__ = [
    'WrapupReasonApi',
    'QueueWrapupReasonSettings',
    'WrapUpReasonDetails',
    'WrapupReasonQueue',
    'AvailableQueue',
    'WrapUpReason',
]


[docs] class WrapUpReason(ApiModel): #: Unique wrap-up identifier. id: Optional[str] = None #: Name of the wrap-up reason. name: Optional[str] = None #: Description of the wrap-up reason. description: Optional[str] = None #: Number of queues assigned to the wrap-up reason. number_of_queues_assigned: Optional[int] = None
class QueueSettingsReason(ApiModel): #: Unique wrap-up identifier. id: Optional[str] = None #: Name of the wrap-up reason. name: Optional[str] = None #: Description of the wrap-up reason. description: Optional[str] = None #: Denotes whether the wrap-up reason is the default for the queue. default_enabled: Optional[bool] = None
[docs] class QueueWrapupReasonSettings(ApiModel): #: Denotes whether the wrap-up timer is enabled. wrapup_timer_enabled: Optional[bool] = None #: Wrap up timer value in seconds. wrapup_timer: Optional[int] = None #: List of wrap-up reasons. wrapup_reasons: Optional[list[QueueSettingsReason]] = None
[docs] class WrapupReasonQueue(ApiModel): #: Unique queue identifier. id: Optional[str] = None #: Name of the queue. name: Optional[str] = None #: Name of the location. location_name: Optional[str] = None #: Unique location identifier. location_id: Optional[str] = None #: Phone number of the queue. phone_number: Optional[str] = None #: Extension of the queue. extension: Optional[int] = None #: Denotes whether the default wrap-up is enabled for the queue. default_wrapup_enabled: Optional[bool] = None
[docs] class WrapUpReasonDetails(ApiModel): #: Name of the wrap-up reason. name: Optional[str] = None #: Description of the wrap-up reason. description: Optional[str] = None #: Number of queues assigned to the wrap-up reason. default_wrapup_queues_count: Optional[int] = None #: List of queues assigned to the wrap-up reason. queues: Optional[list[WrapupReasonQueue]] = None
[docs] class AvailableQueue(ApiModel): #: Unique queue identifier. id: Optional[str] = None #: Name of the queue. name: Optional[str] = None #: Name of the location. location_name: Optional[str] = None #: Unique location identifier. location_id: Optional[str] = None #: Phone number of the queue. phone_number: Optional[str] = None #: Extension of the queue. extension: Optional[int] = None
[docs] class WrapupReasonApi(ApiChild, base='telephony/config'): """ Wrap up reasons API """
[docs] def read_queue_settings(self, location_id: str, queue_id: str) -> QueueWrapupReasonSettings: """ Read Wrap Up Reason Settings Return a wrap-up reason by location ID and queue ID. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Retrieving the wrap-up reason by location ID and queue ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. :param location_id: The location ID. :type location_id: str :param queue_id: The queue ID. :type queue_id: str :rtype: list[QueueWrapupReasonSettings] """ url = self.ep(f'cxEssentials/locations/{location_id}/queues/{queue_id}/wrapup/settings') data = super().get(url) return QueueWrapupReasonSettings.model_validate(data)
[docs] def update_queue_settings( self, location_id: str, queue_id: str, wrapup_reasons: list[str] = None, default_wrapup_reason_id: str = None, wrapup_timer_enabled: bool = None, wrapup_timer: int = None, ): """ Update Wrap Up Reason Settings Modify a wrap-up reason by location ID and queue ID. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Modifying a wrap-up reason by location ID and queue ID requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`. :param location_id: The location ID. :type location_id: str :param queue_id: The queue ID. :type queue_id: str :param wrapup_reasons: List of wrap-up reason IDs. :type wrapup_reasons: list[str] :param default_wrapup_reason_id: Unique wrap-up identifier. To clear the default wrap-up reason, set this to ''. :type default_wrapup_reason_id: str :param wrapup_timer_enabled: Denotes whether the wrap-up timer is enabled. :type wrapup_timer_enabled: bool :param wrapup_timer: Wrap up timer value in seconds. :type wrapup_timer: int :rtype: None """ body = dict() if wrapup_reasons is not None: body['wrapupReasons'] = wrapup_reasons if default_wrapup_reason_id is not None: body['defaultWrapupReasonId'] = default_wrapup_reason_id or None if wrapup_timer_enabled is not None: body['wrapupTimerEnabled'] = wrapup_timer_enabled if wrapup_timer is not None: body['wrapupTimer'] = wrapup_timer url = self.ep(f'cxEssentials/locations/{location_id}/queues/{queue_id}/wrapup/settings') super().put(url, json=body)
[docs] def list(self) -> list[WrapUpReason]: """ List Wrap Up Reasons Return the list of wrap-up reasons configured for a customer. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Retrieving the list of wrap-up reasons requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. :rtype: list[WrapUpReason] """ url = self.ep('cxEssentials/wrapup/reasons') data = super().get(url) r = TypeAdapter(list[WrapUpReason]).validate_python(data['wrapupReasons']) return r
[docs] def create( self, name: str, description: str = None, queues: builtins.list[str] = None, assign_all_queues_enabled: bool = None, ) -> str: """ Create Wrap Up Reason Create a wrap-up reason. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Creating a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`. :param name: Name of the wrap-up reason. :type name: str :param description: Description of the wrap-up reason. :type description: str :param queues: List of queue IDs assigned to the wrap-up reason. :type queues: list[str] :param assign_all_queues_enabled: Denotes whether all queues are assigned to the wrap-up reason. :type assign_all_queues_enabled: bool :return: Wrap-up reason ID. :rtype: str """ body = dict() body['name'] = name if description is not None: body['description'] = description if queues is not None: body['queues'] = queues if assign_all_queues_enabled is not None: body['assignAllQueuesEnabled'] = assign_all_queues_enabled url = self.ep('cxEssentials/wrapup/reasons') data = super().post(url, json=body) return data['id']
[docs] def validate(self, name: str): """ Validate Wrap Up Reason Validate the wrap-up reason name. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Validating the wrap-up reason name requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`. :param name: Name of the wrap-up reason. :type name: str :rtype: None """ body = dict() body['name'] = name url = self.ep('cxEssentials/wrapup/reasons/actions/validateName/invoke') super().post(url, json=body)
[docs] def delete(self, wrapup_reason_id: str): """ Delete Wrap Up Reason Delete a wrap-up reason. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Deleting the wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`. :param wrapup_reason_id: Wrap-up reason ID. :type wrapup_reason_id: str :rtype: None """ url = self.ep(f'cxEssentials/wrapup/reasons/{wrapup_reason_id}') super().delete(url)
[docs] def details(self, wrapup_reason_id: str) -> WrapUpReasonDetails: """ Read Wrap Up Reason Return the wrap-up reason by ID. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Retrieving the wrap-up reason by ID requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. :param wrapup_reason_id: Wrap-up reason ID. :type wrapup_reason_id: str :rtype: WrapUpReasonDetails """ url = self.ep(f'cxEssentials/wrapup/reasons/{wrapup_reason_id}') data = super().get(url) r = WrapUpReasonDetails.model_validate(data) return r
[docs] def update( self, wrapup_reason_id: str, name: str = None, description: str = None, queues_to_assign: builtins.list[str] = None, queues_to_unassign: builtins.list[str] = None, assign_all_queues_enabled: bool = None, unassign_all_queues_enabled: bool = None, ): """ Update Wrap Up Reason Modify a wrap-up reason. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Modifying a wrap-up reason requires a full or device administrator auth token with a scope of `spark-admin:telephony_config_write`. :param wrapup_reason_id: Wrap-up reason ID. :type wrapup_reason_id: str :param name: Name of the wrap-up reason. :type name: str :param description: Description of the wrap-up reason. :type description: str :param queues_to_assign: List of queue IDs to assign to the wrap-up reason. :type queues_to_assign: list[str] :param queues_to_unassign: List of queue IDs to unassign from the wrap-up reason. :type queues_to_unassign: list[str] :param assign_all_queues_enabled: Denotes whether all queues are assigned to the wrap-up reason. :type assign_all_queues_enabled: bool :param unassign_all_queues_enabled: Denotes whether all queues are unassigned from the wrap-up reason. :type unassign_all_queues_enabled: bool :rtype: None """ body = dict() if name is not None: body['name'] = name if description is not None: body['description'] = description if queues_to_assign is not None: body['queuesToAssign'] = queues_to_assign if queues_to_unassign is not None: body['queuesToUnassign'] = queues_to_unassign if assign_all_queues_enabled is not None: body['assignAllQueuesEnabled'] = assign_all_queues_enabled if unassign_all_queues_enabled is not None: body['unassignAllQueuesEnabled'] = unassign_all_queues_enabled url = self.ep(f'cxEssentials/wrapup/reasons/{wrapup_reason_id}') super().put(url, json=body)
[docs] def available_queues(self, wrapup_reason_id: str) -> builtins.list[AvailableQueue]: """ Read Available Queues Return the available queues for a wrap-up reason. Agents handling calls use wrap-up reasons to categorize the outcome after a call ends. The control hub admin can configure these reasons for customers and assign them to queues. Upon call completion, agents select a wrap-up reason from the queue's assigned list. Each wrap-up reason includes a name and description, and can be set as the default for a queue. Admins can also configure a timer, which dictates the time agents have to select a reason post-call, with a default of 60 seconds. This timer can be disabled if necessary. Retrieving the available queues for a wrap-up reason requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. :param wrapup_reason_id: Wrap-up reason ID. :type wrapup_reason_id: str :rtype: list[AvailableQueue] """ url = self.ep(f'cxEssentials/wrapup/reasons/{wrapup_reason_id}/availableQueues') data = super().get(url) if 'queues' not in data: return [] r = TypeAdapter(list[AvailableQueue]).validate_python(data['queues']) return r