File: C:/Users/fred/anaconda3/Lib/site-packages/twilio/rest/taskrouter/v1/workspace/task/reservation.py
r"""
This code was generated by
___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __
| | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/
| |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \
Twilio - Taskrouter
This is the public Twilio REST API.
NOTE: This class is auto generated by OpenAPI Generator.
https://openapi-generator.tech
Do not edit the class manually.
"""
from datetime import datetime
from typing import Any, Dict, List, Optional, Union, Iterator, AsyncIterator
from twilio.base import deserialize, serialize, values
from twilio.base.instance_context import InstanceContext
from twilio.base.instance_resource import InstanceResource
from twilio.base.list_resource import ListResource
from twilio.base.version import Version
from twilio.base.page import Page
class ReservationInstance(InstanceResource):
class CallStatus(object):
INITIATED = "initiated"
RINGING = "ringing"
ANSWERED = "answered"
COMPLETED = "completed"
class ConferenceEvent(object):
START = "start"
END = "end"
JOIN = "join"
LEAVE = "leave"
MUTE = "mute"
HOLD = "hold"
SPEAKER = "speaker"
class Status(object):
PENDING = "pending"
ACCEPTED = "accepted"
REJECTED = "rejected"
TIMEOUT = "timeout"
CANCELED = "canceled"
RESCINDED = "rescinded"
WRAPPING = "wrapping"
COMPLETED = "completed"
class SupervisorMode(object):
MONITOR = "monitor"
WHISPER = "whisper"
BARGE = "barge"
"""
:ivar account_sid: The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the TaskReservation resource.
:ivar date_created: The date and time in GMT when the resource was created specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
:ivar date_updated: The date and time in GMT when the resource was last updated specified in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
:ivar reservation_status:
:ivar sid: The unique string that we created to identify the TaskReservation resource.
:ivar task_sid: The SID of the reserved Task resource.
:ivar worker_name: The `friendly_name` of the Worker that is reserved.
:ivar worker_sid: The SID of the reserved Worker resource.
:ivar workspace_sid: The SID of the Workspace that this task is contained within.
:ivar url: The absolute URL of the TaskReservation reservation.
:ivar links: The URLs of related resources.
"""
def __init__(
self,
version: Version,
payload: Dict[str, Any],
workspace_sid: str,
task_sid: str,
sid: Optional[str] = None,
):
super().__init__(version)
self.account_sid: Optional[str] = payload.get("account_sid")
self.date_created: Optional[datetime] = deserialize.iso8601_datetime(
payload.get("date_created")
)
self.date_updated: Optional[datetime] = deserialize.iso8601_datetime(
payload.get("date_updated")
)
self.reservation_status: Optional["ReservationInstance.Status"] = payload.get(
"reservation_status"
)
self.sid: Optional[str] = payload.get("sid")
self.task_sid: Optional[str] = payload.get("task_sid")
self.worker_name: Optional[str] = payload.get("worker_name")
self.worker_sid: Optional[str] = payload.get("worker_sid")
self.workspace_sid: Optional[str] = payload.get("workspace_sid")
self.url: Optional[str] = payload.get("url")
self.links: Optional[Dict[str, object]] = payload.get("links")
self._solution = {
"workspace_sid": workspace_sid,
"task_sid": task_sid,
"sid": sid or self.sid,
}
self._context: Optional[ReservationContext] = None
@property
def _proxy(self) -> "ReservationContext":
"""
Generate an instance context for the instance, the context is capable of
performing various actions. All instance actions are proxied to the context
:returns: ReservationContext for this ReservationInstance
"""
if self._context is None:
self._context = ReservationContext(
self._version,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=self._solution["sid"],
)
return self._context
def fetch(self) -> "ReservationInstance":
"""
Fetch the ReservationInstance
:returns: The fetched ReservationInstance
"""
return self._proxy.fetch()
async def fetch_async(self) -> "ReservationInstance":
"""
Asynchronous coroutine to fetch the ReservationInstance
:returns: The fetched ReservationInstance
"""
return await self._proxy.fetch_async()
def update(
self,
if_match: Union[str, object] = values.unset,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_activity_sid: Union[str, object] = values.unset,
instruction: Union[str, object] = values.unset,
dequeue_post_work_activity_sid: Union[str, object] = values.unset,
dequeue_from: Union[str, object] = values.unset,
dequeue_record: Union[str, object] = values.unset,
dequeue_timeout: Union[int, object] = values.unset,
dequeue_to: Union[str, object] = values.unset,
dequeue_status_callback_url: Union[str, object] = values.unset,
call_from: Union[str, object] = values.unset,
call_record: Union[str, object] = values.unset,
call_timeout: Union[int, object] = values.unset,
call_to: Union[str, object] = values.unset,
call_url: Union[str, object] = values.unset,
call_status_callback_url: Union[str, object] = values.unset,
call_accept: Union[bool, object] = values.unset,
redirect_call_sid: Union[str, object] = values.unset,
redirect_accept: Union[bool, object] = values.unset,
redirect_url: Union[str, object] = values.unset,
to: Union[str, object] = values.unset,
from_: Union[str, object] = values.unset,
status_callback: Union[str, object] = values.unset,
status_callback_method: Union[str, object] = values.unset,
status_callback_event: Union[
List["ReservationInstance.CallStatus"], object
] = values.unset,
timeout: Union[int, object] = values.unset,
record: Union[bool, object] = values.unset,
muted: Union[bool, object] = values.unset,
beep: Union[str, object] = values.unset,
start_conference_on_enter: Union[bool, object] = values.unset,
end_conference_on_exit: Union[bool, object] = values.unset,
wait_url: Union[str, object] = values.unset,
wait_method: Union[str, object] = values.unset,
early_media: Union[bool, object] = values.unset,
max_participants: Union[int, object] = values.unset,
conference_status_callback: Union[str, object] = values.unset,
conference_status_callback_method: Union[str, object] = values.unset,
conference_status_callback_event: Union[
List["ReservationInstance.ConferenceEvent"], object
] = values.unset,
conference_record: Union[str, object] = values.unset,
conference_trim: Union[str, object] = values.unset,
recording_channels: Union[str, object] = values.unset,
recording_status_callback: Union[str, object] = values.unset,
recording_status_callback_method: Union[str, object] = values.unset,
conference_recording_status_callback: Union[str, object] = values.unset,
conference_recording_status_callback_method: Union[str, object] = values.unset,
region: Union[str, object] = values.unset,
sip_auth_username: Union[str, object] = values.unset,
sip_auth_password: Union[str, object] = values.unset,
dequeue_status_callback_event: Union[List[str], object] = values.unset,
post_work_activity_sid: Union[str, object] = values.unset,
supervisor_mode: Union[
"ReservationInstance.SupervisorMode", object
] = values.unset,
supervisor: Union[str, object] = values.unset,
end_conference_on_customer_exit: Union[bool, object] = values.unset,
beep_on_customer_entrance: Union[bool, object] = values.unset,
jitter_buffer_size: Union[str, object] = values.unset,
) -> "ReservationInstance":
"""
Update the ReservationInstance
:param if_match: The If-Match HTTP request header
:param reservation_status:
:param worker_activity_sid: The new worker activity SID if rejecting a reservation.
:param instruction: The assignment instruction for reservation.
:param dequeue_post_work_activity_sid: The SID of the Activity resource to start after executing a Dequeue instruction.
:param dequeue_from: The Caller ID of the call to the worker when executing a Dequeue instruction.
:param dequeue_record: Whether to record both legs of a call when executing a Dequeue instruction or which leg to record.
:param dequeue_timeout: Timeout for call when executing a Dequeue instruction.
:param dequeue_to: The Contact URI of the worker when executing a Dequeue instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param dequeue_status_callback_url: The Callback URL for completed call event when executing a Dequeue instruction.
:param call_from: The Caller ID of the outbound call when executing a Call instruction.
:param call_record: Whether to record both legs of a call when executing a Call instruction or which leg to record.
:param call_timeout: Timeout for call when executing a Call instruction.
:param call_to: The Contact URI of the worker when executing a Call instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param call_url: TwiML URI executed on answering the worker's leg as a result of the Call instruction.
:param call_status_callback_url: The URL to call for the completed call event when executing a Call instruction.
:param call_accept: Whether to accept a reservation when executing a Call instruction.
:param redirect_call_sid: The Call SID of the call parked in the queue when executing a Redirect instruction.
:param redirect_accept: Whether the reservation should be accepted when executing a Redirect instruction.
:param redirect_url: TwiML URI to redirect the call to when executing the Redirect instruction.
:param to: The Contact URI of the worker when executing a Conference instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param from_: The Caller ID of the call to the worker when executing a Conference instruction.
:param status_callback: The URL we should call using the `status_callback_method` to send status information to your application.
:param status_callback_method: The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`.
:param status_callback_event: The call progress events that we will send to `status_callback`. Can be: `initiated`, `ringing`, `answered`, or `completed`.
:param timeout: Timeout for call when executing a Conference instruction.
:param record: Whether to record the participant and their conferences, including the time between conferences. The default is `false`.
:param muted: Whether the agent is muted in the conference. The default is `false`.
:param beep: Whether to play a notification beep when the participant joins or when to play a beep. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`.
:param start_conference_on_enter: Whether to start the conference when the participant joins, if it has not already started. The default is `true`. If `false` and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
:param end_conference_on_exit: Whether to end the conference when the agent leaves.
:param wait_url: The URL we should call using the `wait_method` for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic).
:param wait_method: The HTTP method we should use to call `wait_url`. Can be `GET` or `POST` and the default is `POST`. When using a static audio file, this should be `GET` so that we can cache the file.
:param early_media: Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. The default is `true`.
:param max_participants: The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`.
:param conference_status_callback: The URL we should call using the `conference_status_callback_method` when the conference events in `conference_status_callback_event` occur. Only the value set by the first participant to join the conference is used. Subsequent `conference_status_callback` values are ignored.
:param conference_status_callback_method: The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_status_callback_event: The conference status events that we will send to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `speaker`.
:param conference_record: Whether to record the conference the participant is joining or when to record the conference. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`.
:param conference_trim: How to trim the leading and trailing silence from your recorded conference audio files. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`.
:param recording_channels: The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`.
:param recording_status_callback: The URL that we should call using the `recording_status_callback_method` when the recording status changes.
:param recording_status_callback_method: The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_recording_status_callback: The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available.
:param conference_recording_status_callback_method: The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param region: The [region](https://support.twilio.com/hc/en-us/articles/223132167-How-global-low-latency-routing-and-region-selection-work-for-conferences-and-Client-calls) where we should mix the recorded audio. Can be:`us1`, `us2`, `ie1`, `de1`, `sg1`, `br1`, `au1`, or `jp1`.
:param sip_auth_username: The SIP username used for authentication.
:param sip_auth_password: The SIP password for authentication.
:param dequeue_status_callback_event: The Call progress events sent via webhooks as a result of a Dequeue instruction.
:param post_work_activity_sid: The new worker activity SID after executing a Conference instruction.
:param supervisor_mode:
:param supervisor: The Supervisor SID/URI when executing the Supervise instruction.
:param end_conference_on_customer_exit: Whether to end the conference when the customer leaves.
:param beep_on_customer_entrance: Whether to play a notification beep when the customer joins.
:param jitter_buffer_size: The jitter buffer size for conference. Can be: `small`, `medium`, `large`, `off`.
:returns: The updated ReservationInstance
"""
return self._proxy.update(
if_match=if_match,
reservation_status=reservation_status,
worker_activity_sid=worker_activity_sid,
instruction=instruction,
dequeue_post_work_activity_sid=dequeue_post_work_activity_sid,
dequeue_from=dequeue_from,
dequeue_record=dequeue_record,
dequeue_timeout=dequeue_timeout,
dequeue_to=dequeue_to,
dequeue_status_callback_url=dequeue_status_callback_url,
call_from=call_from,
call_record=call_record,
call_timeout=call_timeout,
call_to=call_to,
call_url=call_url,
call_status_callback_url=call_status_callback_url,
call_accept=call_accept,
redirect_call_sid=redirect_call_sid,
redirect_accept=redirect_accept,
redirect_url=redirect_url,
to=to,
from_=from_,
status_callback=status_callback,
status_callback_method=status_callback_method,
status_callback_event=status_callback_event,
timeout=timeout,
record=record,
muted=muted,
beep=beep,
start_conference_on_enter=start_conference_on_enter,
end_conference_on_exit=end_conference_on_exit,
wait_url=wait_url,
wait_method=wait_method,
early_media=early_media,
max_participants=max_participants,
conference_status_callback=conference_status_callback,
conference_status_callback_method=conference_status_callback_method,
conference_status_callback_event=conference_status_callback_event,
conference_record=conference_record,
conference_trim=conference_trim,
recording_channels=recording_channels,
recording_status_callback=recording_status_callback,
recording_status_callback_method=recording_status_callback_method,
conference_recording_status_callback=conference_recording_status_callback,
conference_recording_status_callback_method=conference_recording_status_callback_method,
region=region,
sip_auth_username=sip_auth_username,
sip_auth_password=sip_auth_password,
dequeue_status_callback_event=dequeue_status_callback_event,
post_work_activity_sid=post_work_activity_sid,
supervisor_mode=supervisor_mode,
supervisor=supervisor,
end_conference_on_customer_exit=end_conference_on_customer_exit,
beep_on_customer_entrance=beep_on_customer_entrance,
jitter_buffer_size=jitter_buffer_size,
)
async def update_async(
self,
if_match: Union[str, object] = values.unset,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_activity_sid: Union[str, object] = values.unset,
instruction: Union[str, object] = values.unset,
dequeue_post_work_activity_sid: Union[str, object] = values.unset,
dequeue_from: Union[str, object] = values.unset,
dequeue_record: Union[str, object] = values.unset,
dequeue_timeout: Union[int, object] = values.unset,
dequeue_to: Union[str, object] = values.unset,
dequeue_status_callback_url: Union[str, object] = values.unset,
call_from: Union[str, object] = values.unset,
call_record: Union[str, object] = values.unset,
call_timeout: Union[int, object] = values.unset,
call_to: Union[str, object] = values.unset,
call_url: Union[str, object] = values.unset,
call_status_callback_url: Union[str, object] = values.unset,
call_accept: Union[bool, object] = values.unset,
redirect_call_sid: Union[str, object] = values.unset,
redirect_accept: Union[bool, object] = values.unset,
redirect_url: Union[str, object] = values.unset,
to: Union[str, object] = values.unset,
from_: Union[str, object] = values.unset,
status_callback: Union[str, object] = values.unset,
status_callback_method: Union[str, object] = values.unset,
status_callback_event: Union[
List["ReservationInstance.CallStatus"], object
] = values.unset,
timeout: Union[int, object] = values.unset,
record: Union[bool, object] = values.unset,
muted: Union[bool, object] = values.unset,
beep: Union[str, object] = values.unset,
start_conference_on_enter: Union[bool, object] = values.unset,
end_conference_on_exit: Union[bool, object] = values.unset,
wait_url: Union[str, object] = values.unset,
wait_method: Union[str, object] = values.unset,
early_media: Union[bool, object] = values.unset,
max_participants: Union[int, object] = values.unset,
conference_status_callback: Union[str, object] = values.unset,
conference_status_callback_method: Union[str, object] = values.unset,
conference_status_callback_event: Union[
List["ReservationInstance.ConferenceEvent"], object
] = values.unset,
conference_record: Union[str, object] = values.unset,
conference_trim: Union[str, object] = values.unset,
recording_channels: Union[str, object] = values.unset,
recording_status_callback: Union[str, object] = values.unset,
recording_status_callback_method: Union[str, object] = values.unset,
conference_recording_status_callback: Union[str, object] = values.unset,
conference_recording_status_callback_method: Union[str, object] = values.unset,
region: Union[str, object] = values.unset,
sip_auth_username: Union[str, object] = values.unset,
sip_auth_password: Union[str, object] = values.unset,
dequeue_status_callback_event: Union[List[str], object] = values.unset,
post_work_activity_sid: Union[str, object] = values.unset,
supervisor_mode: Union[
"ReservationInstance.SupervisorMode", object
] = values.unset,
supervisor: Union[str, object] = values.unset,
end_conference_on_customer_exit: Union[bool, object] = values.unset,
beep_on_customer_entrance: Union[bool, object] = values.unset,
jitter_buffer_size: Union[str, object] = values.unset,
) -> "ReservationInstance":
"""
Asynchronous coroutine to update the ReservationInstance
:param if_match: The If-Match HTTP request header
:param reservation_status:
:param worker_activity_sid: The new worker activity SID if rejecting a reservation.
:param instruction: The assignment instruction for reservation.
:param dequeue_post_work_activity_sid: The SID of the Activity resource to start after executing a Dequeue instruction.
:param dequeue_from: The Caller ID of the call to the worker when executing a Dequeue instruction.
:param dequeue_record: Whether to record both legs of a call when executing a Dequeue instruction or which leg to record.
:param dequeue_timeout: Timeout for call when executing a Dequeue instruction.
:param dequeue_to: The Contact URI of the worker when executing a Dequeue instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param dequeue_status_callback_url: The Callback URL for completed call event when executing a Dequeue instruction.
:param call_from: The Caller ID of the outbound call when executing a Call instruction.
:param call_record: Whether to record both legs of a call when executing a Call instruction or which leg to record.
:param call_timeout: Timeout for call when executing a Call instruction.
:param call_to: The Contact URI of the worker when executing a Call instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param call_url: TwiML URI executed on answering the worker's leg as a result of the Call instruction.
:param call_status_callback_url: The URL to call for the completed call event when executing a Call instruction.
:param call_accept: Whether to accept a reservation when executing a Call instruction.
:param redirect_call_sid: The Call SID of the call parked in the queue when executing a Redirect instruction.
:param redirect_accept: Whether the reservation should be accepted when executing a Redirect instruction.
:param redirect_url: TwiML URI to redirect the call to when executing the Redirect instruction.
:param to: The Contact URI of the worker when executing a Conference instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param from_: The Caller ID of the call to the worker when executing a Conference instruction.
:param status_callback: The URL we should call using the `status_callback_method` to send status information to your application.
:param status_callback_method: The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`.
:param status_callback_event: The call progress events that we will send to `status_callback`. Can be: `initiated`, `ringing`, `answered`, or `completed`.
:param timeout: Timeout for call when executing a Conference instruction.
:param record: Whether to record the participant and their conferences, including the time between conferences. The default is `false`.
:param muted: Whether the agent is muted in the conference. The default is `false`.
:param beep: Whether to play a notification beep when the participant joins or when to play a beep. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`.
:param start_conference_on_enter: Whether to start the conference when the participant joins, if it has not already started. The default is `true`. If `false` and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
:param end_conference_on_exit: Whether to end the conference when the agent leaves.
:param wait_url: The URL we should call using the `wait_method` for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic).
:param wait_method: The HTTP method we should use to call `wait_url`. Can be `GET` or `POST` and the default is `POST`. When using a static audio file, this should be `GET` so that we can cache the file.
:param early_media: Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. The default is `true`.
:param max_participants: The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`.
:param conference_status_callback: The URL we should call using the `conference_status_callback_method` when the conference events in `conference_status_callback_event` occur. Only the value set by the first participant to join the conference is used. Subsequent `conference_status_callback` values are ignored.
:param conference_status_callback_method: The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_status_callback_event: The conference status events that we will send to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `speaker`.
:param conference_record: Whether to record the conference the participant is joining or when to record the conference. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`.
:param conference_trim: How to trim the leading and trailing silence from your recorded conference audio files. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`.
:param recording_channels: The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`.
:param recording_status_callback: The URL that we should call using the `recording_status_callback_method` when the recording status changes.
:param recording_status_callback_method: The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_recording_status_callback: The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available.
:param conference_recording_status_callback_method: The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param region: The [region](https://support.twilio.com/hc/en-us/articles/223132167-How-global-low-latency-routing-and-region-selection-work-for-conferences-and-Client-calls) where we should mix the recorded audio. Can be:`us1`, `us2`, `ie1`, `de1`, `sg1`, `br1`, `au1`, or `jp1`.
:param sip_auth_username: The SIP username used for authentication.
:param sip_auth_password: The SIP password for authentication.
:param dequeue_status_callback_event: The Call progress events sent via webhooks as a result of a Dequeue instruction.
:param post_work_activity_sid: The new worker activity SID after executing a Conference instruction.
:param supervisor_mode:
:param supervisor: The Supervisor SID/URI when executing the Supervise instruction.
:param end_conference_on_customer_exit: Whether to end the conference when the customer leaves.
:param beep_on_customer_entrance: Whether to play a notification beep when the customer joins.
:param jitter_buffer_size: The jitter buffer size for conference. Can be: `small`, `medium`, `large`, `off`.
:returns: The updated ReservationInstance
"""
return await self._proxy.update_async(
if_match=if_match,
reservation_status=reservation_status,
worker_activity_sid=worker_activity_sid,
instruction=instruction,
dequeue_post_work_activity_sid=dequeue_post_work_activity_sid,
dequeue_from=dequeue_from,
dequeue_record=dequeue_record,
dequeue_timeout=dequeue_timeout,
dequeue_to=dequeue_to,
dequeue_status_callback_url=dequeue_status_callback_url,
call_from=call_from,
call_record=call_record,
call_timeout=call_timeout,
call_to=call_to,
call_url=call_url,
call_status_callback_url=call_status_callback_url,
call_accept=call_accept,
redirect_call_sid=redirect_call_sid,
redirect_accept=redirect_accept,
redirect_url=redirect_url,
to=to,
from_=from_,
status_callback=status_callback,
status_callback_method=status_callback_method,
status_callback_event=status_callback_event,
timeout=timeout,
record=record,
muted=muted,
beep=beep,
start_conference_on_enter=start_conference_on_enter,
end_conference_on_exit=end_conference_on_exit,
wait_url=wait_url,
wait_method=wait_method,
early_media=early_media,
max_participants=max_participants,
conference_status_callback=conference_status_callback,
conference_status_callback_method=conference_status_callback_method,
conference_status_callback_event=conference_status_callback_event,
conference_record=conference_record,
conference_trim=conference_trim,
recording_channels=recording_channels,
recording_status_callback=recording_status_callback,
recording_status_callback_method=recording_status_callback_method,
conference_recording_status_callback=conference_recording_status_callback,
conference_recording_status_callback_method=conference_recording_status_callback_method,
region=region,
sip_auth_username=sip_auth_username,
sip_auth_password=sip_auth_password,
dequeue_status_callback_event=dequeue_status_callback_event,
post_work_activity_sid=post_work_activity_sid,
supervisor_mode=supervisor_mode,
supervisor=supervisor,
end_conference_on_customer_exit=end_conference_on_customer_exit,
beep_on_customer_entrance=beep_on_customer_entrance,
jitter_buffer_size=jitter_buffer_size,
)
def __repr__(self) -> str:
"""
Provide a friendly representation
:returns: Machine friendly representation
"""
context = " ".join("{}={}".format(k, v) for k, v in self._solution.items())
return "<Twilio.Taskrouter.V1.ReservationInstance {}>".format(context)
class ReservationContext(InstanceContext):
def __init__(self, version: Version, workspace_sid: str, task_sid: str, sid: str):
"""
Initialize the ReservationContext
:param version: Version that contains the resource
:param workspace_sid: The SID of the Workspace with the TaskReservation resources to update.
:param task_sid: The SID of the reserved Task resource with the TaskReservation resources to update.
:param sid: The SID of the TaskReservation resource to update.
"""
super().__init__(version)
# Path Solution
self._solution = {
"workspace_sid": workspace_sid,
"task_sid": task_sid,
"sid": sid,
}
self._uri = (
"/Workspaces/{workspace_sid}/Tasks/{task_sid}/Reservations/{sid}".format(
**self._solution
)
)
def fetch(self) -> ReservationInstance:
"""
Fetch the ReservationInstance
:returns: The fetched ReservationInstance
"""
headers = values.of({})
headers["Accept"] = "application/json"
payload = self._version.fetch(method="GET", uri=self._uri, headers=headers)
return ReservationInstance(
self._version,
payload,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=self._solution["sid"],
)
async def fetch_async(self) -> ReservationInstance:
"""
Asynchronous coroutine to fetch the ReservationInstance
:returns: The fetched ReservationInstance
"""
headers = values.of({})
headers["Accept"] = "application/json"
payload = await self._version.fetch_async(
method="GET", uri=self._uri, headers=headers
)
return ReservationInstance(
self._version,
payload,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=self._solution["sid"],
)
def update(
self,
if_match: Union[str, object] = values.unset,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_activity_sid: Union[str, object] = values.unset,
instruction: Union[str, object] = values.unset,
dequeue_post_work_activity_sid: Union[str, object] = values.unset,
dequeue_from: Union[str, object] = values.unset,
dequeue_record: Union[str, object] = values.unset,
dequeue_timeout: Union[int, object] = values.unset,
dequeue_to: Union[str, object] = values.unset,
dequeue_status_callback_url: Union[str, object] = values.unset,
call_from: Union[str, object] = values.unset,
call_record: Union[str, object] = values.unset,
call_timeout: Union[int, object] = values.unset,
call_to: Union[str, object] = values.unset,
call_url: Union[str, object] = values.unset,
call_status_callback_url: Union[str, object] = values.unset,
call_accept: Union[bool, object] = values.unset,
redirect_call_sid: Union[str, object] = values.unset,
redirect_accept: Union[bool, object] = values.unset,
redirect_url: Union[str, object] = values.unset,
to: Union[str, object] = values.unset,
from_: Union[str, object] = values.unset,
status_callback: Union[str, object] = values.unset,
status_callback_method: Union[str, object] = values.unset,
status_callback_event: Union[
List["ReservationInstance.CallStatus"], object
] = values.unset,
timeout: Union[int, object] = values.unset,
record: Union[bool, object] = values.unset,
muted: Union[bool, object] = values.unset,
beep: Union[str, object] = values.unset,
start_conference_on_enter: Union[bool, object] = values.unset,
end_conference_on_exit: Union[bool, object] = values.unset,
wait_url: Union[str, object] = values.unset,
wait_method: Union[str, object] = values.unset,
early_media: Union[bool, object] = values.unset,
max_participants: Union[int, object] = values.unset,
conference_status_callback: Union[str, object] = values.unset,
conference_status_callback_method: Union[str, object] = values.unset,
conference_status_callback_event: Union[
List["ReservationInstance.ConferenceEvent"], object
] = values.unset,
conference_record: Union[str, object] = values.unset,
conference_trim: Union[str, object] = values.unset,
recording_channels: Union[str, object] = values.unset,
recording_status_callback: Union[str, object] = values.unset,
recording_status_callback_method: Union[str, object] = values.unset,
conference_recording_status_callback: Union[str, object] = values.unset,
conference_recording_status_callback_method: Union[str, object] = values.unset,
region: Union[str, object] = values.unset,
sip_auth_username: Union[str, object] = values.unset,
sip_auth_password: Union[str, object] = values.unset,
dequeue_status_callback_event: Union[List[str], object] = values.unset,
post_work_activity_sid: Union[str, object] = values.unset,
supervisor_mode: Union[
"ReservationInstance.SupervisorMode", object
] = values.unset,
supervisor: Union[str, object] = values.unset,
end_conference_on_customer_exit: Union[bool, object] = values.unset,
beep_on_customer_entrance: Union[bool, object] = values.unset,
jitter_buffer_size: Union[str, object] = values.unset,
) -> ReservationInstance:
"""
Update the ReservationInstance
:param if_match: The If-Match HTTP request header
:param reservation_status:
:param worker_activity_sid: The new worker activity SID if rejecting a reservation.
:param instruction: The assignment instruction for reservation.
:param dequeue_post_work_activity_sid: The SID of the Activity resource to start after executing a Dequeue instruction.
:param dequeue_from: The Caller ID of the call to the worker when executing a Dequeue instruction.
:param dequeue_record: Whether to record both legs of a call when executing a Dequeue instruction or which leg to record.
:param dequeue_timeout: Timeout for call when executing a Dequeue instruction.
:param dequeue_to: The Contact URI of the worker when executing a Dequeue instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param dequeue_status_callback_url: The Callback URL for completed call event when executing a Dequeue instruction.
:param call_from: The Caller ID of the outbound call when executing a Call instruction.
:param call_record: Whether to record both legs of a call when executing a Call instruction or which leg to record.
:param call_timeout: Timeout for call when executing a Call instruction.
:param call_to: The Contact URI of the worker when executing a Call instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param call_url: TwiML URI executed on answering the worker's leg as a result of the Call instruction.
:param call_status_callback_url: The URL to call for the completed call event when executing a Call instruction.
:param call_accept: Whether to accept a reservation when executing a Call instruction.
:param redirect_call_sid: The Call SID of the call parked in the queue when executing a Redirect instruction.
:param redirect_accept: Whether the reservation should be accepted when executing a Redirect instruction.
:param redirect_url: TwiML URI to redirect the call to when executing the Redirect instruction.
:param to: The Contact URI of the worker when executing a Conference instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param from_: The Caller ID of the call to the worker when executing a Conference instruction.
:param status_callback: The URL we should call using the `status_callback_method` to send status information to your application.
:param status_callback_method: The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`.
:param status_callback_event: The call progress events that we will send to `status_callback`. Can be: `initiated`, `ringing`, `answered`, or `completed`.
:param timeout: Timeout for call when executing a Conference instruction.
:param record: Whether to record the participant and their conferences, including the time between conferences. The default is `false`.
:param muted: Whether the agent is muted in the conference. The default is `false`.
:param beep: Whether to play a notification beep when the participant joins or when to play a beep. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`.
:param start_conference_on_enter: Whether to start the conference when the participant joins, if it has not already started. The default is `true`. If `false` and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
:param end_conference_on_exit: Whether to end the conference when the agent leaves.
:param wait_url: The URL we should call using the `wait_method` for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic).
:param wait_method: The HTTP method we should use to call `wait_url`. Can be `GET` or `POST` and the default is `POST`. When using a static audio file, this should be `GET` so that we can cache the file.
:param early_media: Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. The default is `true`.
:param max_participants: The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`.
:param conference_status_callback: The URL we should call using the `conference_status_callback_method` when the conference events in `conference_status_callback_event` occur. Only the value set by the first participant to join the conference is used. Subsequent `conference_status_callback` values are ignored.
:param conference_status_callback_method: The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_status_callback_event: The conference status events that we will send to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `speaker`.
:param conference_record: Whether to record the conference the participant is joining or when to record the conference. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`.
:param conference_trim: How to trim the leading and trailing silence from your recorded conference audio files. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`.
:param recording_channels: The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`.
:param recording_status_callback: The URL that we should call using the `recording_status_callback_method` when the recording status changes.
:param recording_status_callback_method: The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_recording_status_callback: The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available.
:param conference_recording_status_callback_method: The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param region: The [region](https://support.twilio.com/hc/en-us/articles/223132167-How-global-low-latency-routing-and-region-selection-work-for-conferences-and-Client-calls) where we should mix the recorded audio. Can be:`us1`, `us2`, `ie1`, `de1`, `sg1`, `br1`, `au1`, or `jp1`.
:param sip_auth_username: The SIP username used for authentication.
:param sip_auth_password: The SIP password for authentication.
:param dequeue_status_callback_event: The Call progress events sent via webhooks as a result of a Dequeue instruction.
:param post_work_activity_sid: The new worker activity SID after executing a Conference instruction.
:param supervisor_mode:
:param supervisor: The Supervisor SID/URI when executing the Supervise instruction.
:param end_conference_on_customer_exit: Whether to end the conference when the customer leaves.
:param beep_on_customer_entrance: Whether to play a notification beep when the customer joins.
:param jitter_buffer_size: The jitter buffer size for conference. Can be: `small`, `medium`, `large`, `off`.
:returns: The updated ReservationInstance
"""
data = values.of(
{
"ReservationStatus": reservation_status,
"WorkerActivitySid": worker_activity_sid,
"Instruction": instruction,
"DequeuePostWorkActivitySid": dequeue_post_work_activity_sid,
"DequeueFrom": dequeue_from,
"DequeueRecord": dequeue_record,
"DequeueTimeout": dequeue_timeout,
"DequeueTo": dequeue_to,
"DequeueStatusCallbackUrl": dequeue_status_callback_url,
"CallFrom": call_from,
"CallRecord": call_record,
"CallTimeout": call_timeout,
"CallTo": call_to,
"CallUrl": call_url,
"CallStatusCallbackUrl": call_status_callback_url,
"CallAccept": serialize.boolean_to_string(call_accept),
"RedirectCallSid": redirect_call_sid,
"RedirectAccept": serialize.boolean_to_string(redirect_accept),
"RedirectUrl": redirect_url,
"To": to,
"From": from_,
"StatusCallback": status_callback,
"StatusCallbackMethod": status_callback_method,
"StatusCallbackEvent": serialize.map(
status_callback_event, lambda e: e
),
"Timeout": timeout,
"Record": serialize.boolean_to_string(record),
"Muted": serialize.boolean_to_string(muted),
"Beep": beep,
"StartConferenceOnEnter": serialize.boolean_to_string(
start_conference_on_enter
),
"EndConferenceOnExit": serialize.boolean_to_string(
end_conference_on_exit
),
"WaitUrl": wait_url,
"WaitMethod": wait_method,
"EarlyMedia": serialize.boolean_to_string(early_media),
"MaxParticipants": max_participants,
"ConferenceStatusCallback": conference_status_callback,
"ConferenceStatusCallbackMethod": conference_status_callback_method,
"ConferenceStatusCallbackEvent": serialize.map(
conference_status_callback_event, lambda e: e
),
"ConferenceRecord": conference_record,
"ConferenceTrim": conference_trim,
"RecordingChannels": recording_channels,
"RecordingStatusCallback": recording_status_callback,
"RecordingStatusCallbackMethod": recording_status_callback_method,
"ConferenceRecordingStatusCallback": conference_recording_status_callback,
"ConferenceRecordingStatusCallbackMethod": conference_recording_status_callback_method,
"Region": region,
"SipAuthUsername": sip_auth_username,
"SipAuthPassword": sip_auth_password,
"DequeueStatusCallbackEvent": serialize.map(
dequeue_status_callback_event, lambda e: e
),
"PostWorkActivitySid": post_work_activity_sid,
"SupervisorMode": supervisor_mode,
"Supervisor": supervisor,
"EndConferenceOnCustomerExit": serialize.boolean_to_string(
end_conference_on_customer_exit
),
"BeepOnCustomerEntrance": serialize.boolean_to_string(
beep_on_customer_entrance
),
"JitterBufferSize": jitter_buffer_size,
}
)
headers = values.of({})
if not (
if_match is values.unset or (isinstance(if_match, str) and not if_match)
):
headers["If-Match"] = if_match
headers["Content-Type"] = "application/x-www-form-urlencoded"
headers["Accept"] = "application/json"
payload = self._version.update(
method="POST", uri=self._uri, data=data, headers=headers
)
return ReservationInstance(
self._version,
payload,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=self._solution["sid"],
)
async def update_async(
self,
if_match: Union[str, object] = values.unset,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_activity_sid: Union[str, object] = values.unset,
instruction: Union[str, object] = values.unset,
dequeue_post_work_activity_sid: Union[str, object] = values.unset,
dequeue_from: Union[str, object] = values.unset,
dequeue_record: Union[str, object] = values.unset,
dequeue_timeout: Union[int, object] = values.unset,
dequeue_to: Union[str, object] = values.unset,
dequeue_status_callback_url: Union[str, object] = values.unset,
call_from: Union[str, object] = values.unset,
call_record: Union[str, object] = values.unset,
call_timeout: Union[int, object] = values.unset,
call_to: Union[str, object] = values.unset,
call_url: Union[str, object] = values.unset,
call_status_callback_url: Union[str, object] = values.unset,
call_accept: Union[bool, object] = values.unset,
redirect_call_sid: Union[str, object] = values.unset,
redirect_accept: Union[bool, object] = values.unset,
redirect_url: Union[str, object] = values.unset,
to: Union[str, object] = values.unset,
from_: Union[str, object] = values.unset,
status_callback: Union[str, object] = values.unset,
status_callback_method: Union[str, object] = values.unset,
status_callback_event: Union[
List["ReservationInstance.CallStatus"], object
] = values.unset,
timeout: Union[int, object] = values.unset,
record: Union[bool, object] = values.unset,
muted: Union[bool, object] = values.unset,
beep: Union[str, object] = values.unset,
start_conference_on_enter: Union[bool, object] = values.unset,
end_conference_on_exit: Union[bool, object] = values.unset,
wait_url: Union[str, object] = values.unset,
wait_method: Union[str, object] = values.unset,
early_media: Union[bool, object] = values.unset,
max_participants: Union[int, object] = values.unset,
conference_status_callback: Union[str, object] = values.unset,
conference_status_callback_method: Union[str, object] = values.unset,
conference_status_callback_event: Union[
List["ReservationInstance.ConferenceEvent"], object
] = values.unset,
conference_record: Union[str, object] = values.unset,
conference_trim: Union[str, object] = values.unset,
recording_channels: Union[str, object] = values.unset,
recording_status_callback: Union[str, object] = values.unset,
recording_status_callback_method: Union[str, object] = values.unset,
conference_recording_status_callback: Union[str, object] = values.unset,
conference_recording_status_callback_method: Union[str, object] = values.unset,
region: Union[str, object] = values.unset,
sip_auth_username: Union[str, object] = values.unset,
sip_auth_password: Union[str, object] = values.unset,
dequeue_status_callback_event: Union[List[str], object] = values.unset,
post_work_activity_sid: Union[str, object] = values.unset,
supervisor_mode: Union[
"ReservationInstance.SupervisorMode", object
] = values.unset,
supervisor: Union[str, object] = values.unset,
end_conference_on_customer_exit: Union[bool, object] = values.unset,
beep_on_customer_entrance: Union[bool, object] = values.unset,
jitter_buffer_size: Union[str, object] = values.unset,
) -> ReservationInstance:
"""
Asynchronous coroutine to update the ReservationInstance
:param if_match: The If-Match HTTP request header
:param reservation_status:
:param worker_activity_sid: The new worker activity SID if rejecting a reservation.
:param instruction: The assignment instruction for reservation.
:param dequeue_post_work_activity_sid: The SID of the Activity resource to start after executing a Dequeue instruction.
:param dequeue_from: The Caller ID of the call to the worker when executing a Dequeue instruction.
:param dequeue_record: Whether to record both legs of a call when executing a Dequeue instruction or which leg to record.
:param dequeue_timeout: Timeout for call when executing a Dequeue instruction.
:param dequeue_to: The Contact URI of the worker when executing a Dequeue instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param dequeue_status_callback_url: The Callback URL for completed call event when executing a Dequeue instruction.
:param call_from: The Caller ID of the outbound call when executing a Call instruction.
:param call_record: Whether to record both legs of a call when executing a Call instruction or which leg to record.
:param call_timeout: Timeout for call when executing a Call instruction.
:param call_to: The Contact URI of the worker when executing a Call instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param call_url: TwiML URI executed on answering the worker's leg as a result of the Call instruction.
:param call_status_callback_url: The URL to call for the completed call event when executing a Call instruction.
:param call_accept: Whether to accept a reservation when executing a Call instruction.
:param redirect_call_sid: The Call SID of the call parked in the queue when executing a Redirect instruction.
:param redirect_accept: Whether the reservation should be accepted when executing a Redirect instruction.
:param redirect_url: TwiML URI to redirect the call to when executing the Redirect instruction.
:param to: The Contact URI of the worker when executing a Conference instruction. Can be the URI of the Twilio Client, the SIP URI for Programmable SIP, or the [E.164](https://www.twilio.com/docs/glossary/what-e164) formatted phone number, depending on the destination.
:param from_: The Caller ID of the call to the worker when executing a Conference instruction.
:param status_callback: The URL we should call using the `status_callback_method` to send status information to your application.
:param status_callback_method: The HTTP method we should use to call `status_callback`. Can be: `POST` or `GET` and the default is `POST`.
:param status_callback_event: The call progress events that we will send to `status_callback`. Can be: `initiated`, `ringing`, `answered`, or `completed`.
:param timeout: Timeout for call when executing a Conference instruction.
:param record: Whether to record the participant and their conferences, including the time between conferences. The default is `false`.
:param muted: Whether the agent is muted in the conference. The default is `false`.
:param beep: Whether to play a notification beep when the participant joins or when to play a beep. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`.
:param start_conference_on_enter: Whether to start the conference when the participant joins, if it has not already started. The default is `true`. If `false` and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
:param end_conference_on_exit: Whether to end the conference when the agent leaves.
:param wait_url: The URL we should call using the `wait_method` for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic).
:param wait_method: The HTTP method we should use to call `wait_url`. Can be `GET` or `POST` and the default is `POST`. When using a static audio file, this should be `GET` so that we can cache the file.
:param early_media: Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. The default is `true`.
:param max_participants: The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`.
:param conference_status_callback: The URL we should call using the `conference_status_callback_method` when the conference events in `conference_status_callback_event` occur. Only the value set by the first participant to join the conference is used. Subsequent `conference_status_callback` values are ignored.
:param conference_status_callback_method: The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_status_callback_event: The conference status events that we will send to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `speaker`.
:param conference_record: Whether to record the conference the participant is joining or when to record the conference. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`.
:param conference_trim: How to trim the leading and trailing silence from your recorded conference audio files. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`.
:param recording_channels: The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`.
:param recording_status_callback: The URL that we should call using the `recording_status_callback_method` when the recording status changes.
:param recording_status_callback_method: The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param conference_recording_status_callback: The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available.
:param conference_recording_status_callback_method: The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`.
:param region: The [region](https://support.twilio.com/hc/en-us/articles/223132167-How-global-low-latency-routing-and-region-selection-work-for-conferences-and-Client-calls) where we should mix the recorded audio. Can be:`us1`, `us2`, `ie1`, `de1`, `sg1`, `br1`, `au1`, or `jp1`.
:param sip_auth_username: The SIP username used for authentication.
:param sip_auth_password: The SIP password for authentication.
:param dequeue_status_callback_event: The Call progress events sent via webhooks as a result of a Dequeue instruction.
:param post_work_activity_sid: The new worker activity SID after executing a Conference instruction.
:param supervisor_mode:
:param supervisor: The Supervisor SID/URI when executing the Supervise instruction.
:param end_conference_on_customer_exit: Whether to end the conference when the customer leaves.
:param beep_on_customer_entrance: Whether to play a notification beep when the customer joins.
:param jitter_buffer_size: The jitter buffer size for conference. Can be: `small`, `medium`, `large`, `off`.
:returns: The updated ReservationInstance
"""
data = values.of(
{
"ReservationStatus": reservation_status,
"WorkerActivitySid": worker_activity_sid,
"Instruction": instruction,
"DequeuePostWorkActivitySid": dequeue_post_work_activity_sid,
"DequeueFrom": dequeue_from,
"DequeueRecord": dequeue_record,
"DequeueTimeout": dequeue_timeout,
"DequeueTo": dequeue_to,
"DequeueStatusCallbackUrl": dequeue_status_callback_url,
"CallFrom": call_from,
"CallRecord": call_record,
"CallTimeout": call_timeout,
"CallTo": call_to,
"CallUrl": call_url,
"CallStatusCallbackUrl": call_status_callback_url,
"CallAccept": serialize.boolean_to_string(call_accept),
"RedirectCallSid": redirect_call_sid,
"RedirectAccept": serialize.boolean_to_string(redirect_accept),
"RedirectUrl": redirect_url,
"To": to,
"From": from_,
"StatusCallback": status_callback,
"StatusCallbackMethod": status_callback_method,
"StatusCallbackEvent": serialize.map(
status_callback_event, lambda e: e
),
"Timeout": timeout,
"Record": serialize.boolean_to_string(record),
"Muted": serialize.boolean_to_string(muted),
"Beep": beep,
"StartConferenceOnEnter": serialize.boolean_to_string(
start_conference_on_enter
),
"EndConferenceOnExit": serialize.boolean_to_string(
end_conference_on_exit
),
"WaitUrl": wait_url,
"WaitMethod": wait_method,
"EarlyMedia": serialize.boolean_to_string(early_media),
"MaxParticipants": max_participants,
"ConferenceStatusCallback": conference_status_callback,
"ConferenceStatusCallbackMethod": conference_status_callback_method,
"ConferenceStatusCallbackEvent": serialize.map(
conference_status_callback_event, lambda e: e
),
"ConferenceRecord": conference_record,
"ConferenceTrim": conference_trim,
"RecordingChannels": recording_channels,
"RecordingStatusCallback": recording_status_callback,
"RecordingStatusCallbackMethod": recording_status_callback_method,
"ConferenceRecordingStatusCallback": conference_recording_status_callback,
"ConferenceRecordingStatusCallbackMethod": conference_recording_status_callback_method,
"Region": region,
"SipAuthUsername": sip_auth_username,
"SipAuthPassword": sip_auth_password,
"DequeueStatusCallbackEvent": serialize.map(
dequeue_status_callback_event, lambda e: e
),
"PostWorkActivitySid": post_work_activity_sid,
"SupervisorMode": supervisor_mode,
"Supervisor": supervisor,
"EndConferenceOnCustomerExit": serialize.boolean_to_string(
end_conference_on_customer_exit
),
"BeepOnCustomerEntrance": serialize.boolean_to_string(
beep_on_customer_entrance
),
"JitterBufferSize": jitter_buffer_size,
}
)
headers = values.of({})
if not (
if_match is values.unset or (isinstance(if_match, str) and not if_match)
):
headers["If-Match"] = if_match
headers["Content-Type"] = "application/x-www-form-urlencoded"
headers["Accept"] = "application/json"
payload = await self._version.update_async(
method="POST", uri=self._uri, data=data, headers=headers
)
return ReservationInstance(
self._version,
payload,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=self._solution["sid"],
)
def __repr__(self) -> str:
"""
Provide a friendly representation
:returns: Machine friendly representation
"""
context = " ".join("{}={}".format(k, v) for k, v in self._solution.items())
return "<Twilio.Taskrouter.V1.ReservationContext {}>".format(context)
class ReservationPage(Page):
def get_instance(self, payload: Dict[str, Any]) -> ReservationInstance:
"""
Build an instance of ReservationInstance
:param payload: Payload response from the API
"""
return ReservationInstance(
self._version,
payload,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
)
def __repr__(self) -> str:
"""
Provide a friendly representation
:returns: Machine friendly representation
"""
return "<Twilio.Taskrouter.V1.ReservationPage>"
class ReservationList(ListResource):
def __init__(self, version: Version, workspace_sid: str, task_sid: str):
"""
Initialize the ReservationList
:param version: Version that contains the resource
:param workspace_sid: The SID of the Workspace with the TaskReservation resources to read.
:param task_sid: The SID of the reserved Task resource with the TaskReservation resources to read.
"""
super().__init__(version)
# Path Solution
self._solution = {
"workspace_sid": workspace_sid,
"task_sid": task_sid,
}
self._uri = "/Workspaces/{workspace_sid}/Tasks/{task_sid}/Reservations".format(
**self._solution
)
def stream(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
limit: Optional[int] = None,
page_size: Optional[int] = None,
) -> Iterator[ReservationInstance]:
"""
Streams ReservationInstance records from the API as a generator stream.
This operation lazily loads records as efficiently as possible until the limit
is reached.
The results are returned as a generator, so this operation is memory efficient.
:param "ReservationInstance.Status" reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param str worker_sid: The SID of the reserved Worker resource to read.
:param limit: Upper limit for the number of records to return. stream()
guarantees to never return more than limit. Default is no limit
:param page_size: Number of records to fetch per request, when not set will use
the default value of 50 records. If no page_size is defined
but a limit is defined, stream() will attempt to read the
limit with the most efficient page size, i.e. min(limit, 1000)
:returns: Generator that will yield up to limit results
"""
limits = self._version.read_limits(limit, page_size)
page = self.page(
reservation_status=reservation_status,
worker_sid=worker_sid,
page_size=limits["page_size"],
)
return self._version.stream(page, limits["limit"])
async def stream_async(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
limit: Optional[int] = None,
page_size: Optional[int] = None,
) -> AsyncIterator[ReservationInstance]:
"""
Asynchronously streams ReservationInstance records from the API as a generator stream.
This operation lazily loads records as efficiently as possible until the limit
is reached.
The results are returned as a generator, so this operation is memory efficient.
:param "ReservationInstance.Status" reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param str worker_sid: The SID of the reserved Worker resource to read.
:param limit: Upper limit for the number of records to return. stream()
guarantees to never return more than limit. Default is no limit
:param page_size: Number of records to fetch per request, when not set will use
the default value of 50 records. If no page_size is defined
but a limit is defined, stream() will attempt to read the
limit with the most efficient page size, i.e. min(limit, 1000)
:returns: Generator that will yield up to limit results
"""
limits = self._version.read_limits(limit, page_size)
page = await self.page_async(
reservation_status=reservation_status,
worker_sid=worker_sid,
page_size=limits["page_size"],
)
return self._version.stream_async(page, limits["limit"])
def list(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
limit: Optional[int] = None,
page_size: Optional[int] = None,
) -> List[ReservationInstance]:
"""
Lists ReservationInstance records from the API as a list.
Unlike stream(), this operation is eager and will load `limit` records into
memory before returning.
:param "ReservationInstance.Status" reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param str worker_sid: The SID of the reserved Worker resource to read.
:param limit: Upper limit for the number of records to return. list() guarantees
never to return more than limit. Default is no limit
:param page_size: Number of records to fetch per request, when not set will use
the default value of 50 records. If no page_size is defined
but a limit is defined, list() will attempt to read the limit
with the most efficient page size, i.e. min(limit, 1000)
:returns: list that will contain up to limit results
"""
return list(
self.stream(
reservation_status=reservation_status,
worker_sid=worker_sid,
limit=limit,
page_size=page_size,
)
)
async def list_async(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
limit: Optional[int] = None,
page_size: Optional[int] = None,
) -> List[ReservationInstance]:
"""
Asynchronously lists ReservationInstance records from the API as a list.
Unlike stream(), this operation is eager and will load `limit` records into
memory before returning.
:param "ReservationInstance.Status" reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param str worker_sid: The SID of the reserved Worker resource to read.
:param limit: Upper limit for the number of records to return. list() guarantees
never to return more than limit. Default is no limit
:param page_size: Number of records to fetch per request, when not set will use
the default value of 50 records. If no page_size is defined
but a limit is defined, list() will attempt to read the limit
with the most efficient page size, i.e. min(limit, 1000)
:returns: list that will contain up to limit results
"""
return [
record
async for record in await self.stream_async(
reservation_status=reservation_status,
worker_sid=worker_sid,
limit=limit,
page_size=page_size,
)
]
def page(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
page_token: Union[str, object] = values.unset,
page_number: Union[int, object] = values.unset,
page_size: Union[int, object] = values.unset,
) -> ReservationPage:
"""
Retrieve a single page of ReservationInstance records from the API.
Request is executed immediately
:param reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param worker_sid: The SID of the reserved Worker resource to read.
:param page_token: PageToken provided by the API
:param page_number: Page Number, this value is simply for client state
:param page_size: Number of records to return, defaults to 50
:returns: Page of ReservationInstance
"""
data = values.of(
{
"ReservationStatus": reservation_status,
"WorkerSid": worker_sid,
"PageToken": page_token,
"Page": page_number,
"PageSize": page_size,
}
)
headers = values.of({"Content-Type": "application/x-www-form-urlencoded"})
headers["Accept"] = "application/json"
response = self._version.page(
method="GET", uri=self._uri, params=data, headers=headers
)
return ReservationPage(self._version, response, self._solution)
async def page_async(
self,
reservation_status: Union["ReservationInstance.Status", object] = values.unset,
worker_sid: Union[str, object] = values.unset,
page_token: Union[str, object] = values.unset,
page_number: Union[int, object] = values.unset,
page_size: Union[int, object] = values.unset,
) -> ReservationPage:
"""
Asynchronously retrieve a single page of ReservationInstance records from the API.
Request is executed immediately
:param reservation_status: Returns the list of reservations for a task with a specified ReservationStatus. Can be: `pending`, `accepted`, `rejected`, or `timeout`.
:param worker_sid: The SID of the reserved Worker resource to read.
:param page_token: PageToken provided by the API
:param page_number: Page Number, this value is simply for client state
:param page_size: Number of records to return, defaults to 50
:returns: Page of ReservationInstance
"""
data = values.of(
{
"ReservationStatus": reservation_status,
"WorkerSid": worker_sid,
"PageToken": page_token,
"Page": page_number,
"PageSize": page_size,
}
)
headers = values.of({"Content-Type": "application/x-www-form-urlencoded"})
headers["Accept"] = "application/json"
response = await self._version.page_async(
method="GET", uri=self._uri, params=data, headers=headers
)
return ReservationPage(self._version, response, self._solution)
def get_page(self, target_url: str) -> ReservationPage:
"""
Retrieve a specific page of ReservationInstance records from the API.
Request is executed immediately
:param target_url: API-generated URL for the requested results page
:returns: Page of ReservationInstance
"""
response = self._version.domain.twilio.request("GET", target_url)
return ReservationPage(self._version, response, self._solution)
async def get_page_async(self, target_url: str) -> ReservationPage:
"""
Asynchronously retrieve a specific page of ReservationInstance records from the API.
Request is executed immediately
:param target_url: API-generated URL for the requested results page
:returns: Page of ReservationInstance
"""
response = await self._version.domain.twilio.request_async("GET", target_url)
return ReservationPage(self._version, response, self._solution)
def get(self, sid: str) -> ReservationContext:
"""
Constructs a ReservationContext
:param sid: The SID of the TaskReservation resource to update.
"""
return ReservationContext(
self._version,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=sid,
)
def __call__(self, sid: str) -> ReservationContext:
"""
Constructs a ReservationContext
:param sid: The SID of the TaskReservation resource to update.
"""
return ReservationContext(
self._version,
workspace_sid=self._solution["workspace_sid"],
task_sid=self._solution["task_sid"],
sid=sid,
)
def __repr__(self) -> str:
"""
Provide a friendly representation
:returns: Machine friendly representation
"""
return "<Twilio.Taskrouter.V1.ReservationList>"