Source code for wxc_sdk.telephony.guest_calling

from collections.abc import Generator
from typing import Optional

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

__all__ = ['GuestCallingApi', 'DestinationMember', 'GuestCallingSettings']

from wxc_sdk.common import IdAndName, OwnerType


[docs] class GuestCallingSettings(ApiModel): #: When enabled, click-to-call calling is allowed. enabled: Optional[bool] = None #: When enabled, privacy mode is enabled. privacy_enabled: Optional[bool] = None video_enabled: Optional[bool] = None
[docs] class DestinationMember(ApiModel): #: ID of the destination member. id: Optional[str] = None #: First name of the destination member. first_name: Optional[str] = None #: Last name of the destination member. last_name: Optional[str] = None #: Phone number of the destination member. phone_number: Optional[str] = None #: Extension of the destination member. extension: Optional[str] = None #: Routing prefix of the destination member. routing_prefix: Optional[str] = None #: ESN of the destination member. esn: Optional[str] = None #: Type of the destination member. type: Optional[OwnerType] = None #: Location of the destination member. location: Optional[IdAndName] = None
[docs] class GuestCallingApi(ApiChild, base='telephony/config/guestCalling'): """ Guest Calling Settings with Click-to-call Calling Service Settings supports reading and writing of Webex Calling service settings for a specific organization. Viewing these read-only organization settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. Modifying these organization settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`. A partner administrator can retrieve or change settings in a customer's organization using the optional `orgId` query parameter. """
[docs] def read(self, org_id: str = None) -> GuestCallingSettings: """ Read the Click-to-call Settings Retrieve the organization's click-to-call calling settings. Click-to-call settings determine whether click-to-call is enabled and whether privacy mode is enabled. Retrieving click-to-call settings requires a full or read-only administrator auth token with a scope of `spark-admin:telephony_config_read`. :param org_id: ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API. :type org_id: str :rtype: :class:`GuestCallingSettings` """ params = {} if org_id is not None: params['orgId'] = org_id url = self.ep() data = super().get(url, params=params) r = GuestCallingSettings.model_validate(data) return r
[docs] def update(self, enabled: bool, privacy_enabled: bool, destination_members: list[str], org_id: str = None): """ Update the Click-to-call Settings Update the organization's click-to-call settings. Click-to-call settings determine whether click-to-call is enabled and whether privacy mode is enabled. Updating an organization's click-to-call settings requires a full administrator auth token with a scope of `spark-admin:telephony_config_write`. :param enabled: Set to `true` to allow click-to-call calling. :type enabled: bool :param privacy_enabled: Set to `true` to enable privacy mode. :type privacy_enabled: bool :param destination_members: List of destination member IDs. Supported destination types are Auto Attendant, Call Queue, Hunt Group, and Virtual Line. :type destination_members: list[str] :param org_id: ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API. :type org_id: str :rtype: None """ params = {} if org_id is not None: params['orgId'] = org_id body = dict() body['enabled'] = enabled body['privacyEnabled'] = privacy_enabled body['destinationMembers'] = destination_members url = self.ep() super().put(url, params=params, json=body)
[docs] def members( self, member_name: str = None, phone_number: str = None, extension: str = None, org_id: str = None, **params ) -> Generator[DestinationMember, None, None]: """ Read the Click-to-call Members Retrieve the organization's click-to-call members. Click-to-call members are the destination members that click-to-call callers can call. Retrieving click-to-call members requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`. :param member_name: Search (Contains) numbers based on member name. :type member_name: str :param phone_number: Search (Contains) based on number. :type phone_number: str :param extension: Search (Contains) based on extension. :type extension: str :param org_id: ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API. :type org_id: str :return: Generator yielding :class:`DestinationMember` instances """ if org_id is not None: params['orgId'] = org_id if member_name is not None: params['memberName'] = member_name if phone_number is not None: params['phoneNumber'] = phone_number if extension is not None: params['extension'] = extension url = self.ep('members') return self.session.follow_pagination( url=url, model=DestinationMember, item_key='destinationMembers', params=params )
[docs] def available_members( self, member_name: str = None, phone_number: str = None, extension: str = None, org_id: str = None, **params ) -> Generator[DestinationMember, None, None]: """ Read the Click-to-call Available Members Retrieve the organization's click-to-call available members. Click-to-call available members are the members that can be added as destination members for click-to-call callers. Retrieving click-to-call available members requires a full or read-only administrator or location administrator auth token with a scope of `spark-admin:telephony_config_read`. :param member_name: Search (Contains) numbers based on member name. :type member_name: str :param phone_number: Search (Contains) based on number. :type phone_number: str :param extension: Search (Contains) based on extension. :type extension: str :param org_id: ID of the organization. Only admin users of another organization (such as partners) may use this parameter as the default is the same organization as the token used to access the API. :type org_id: str :return: Generator yielding :class:`DestinationMember` instances """ if org_id is not None: params['orgId'] = org_id if member_name is not None: params['memberName'] = member_name if phone_number is not None: params['phoneNumber'] = phone_number if extension is not None: params['extension'] = extension url = self.ep('availableMembers') return self.session.follow_pagination( url=url, model=DestinationMember, item_key='availableDestinationMembers', params=params )