twilio
Version:
A Twilio helper library
486 lines (485 loc) • 29.4 kB
TypeScript
/// <reference types="node" />
import { inspect, InspectOptions } from "util";
import Page, { TwilioResponsePayload } from "../../../../../base/Page";
import Response from "../../../../../http/response";
import V2010 from "../../../V2010";
/**
* The status of the participant\'s call in a session. Can be: `queued`, `connecting`, `ringing`, `connected`, `complete`, or `failed`.
*/
export type ParticipantStatus = "queued" | "connecting" | "ringing" | "connected" | "complete" | "failed";
/**
* Options to pass to update a ParticipantInstance
*/
export interface ParticipantContextUpdateOptions {
/** Whether the participant should be muted. Can be `true` or `false`. `true` will mute the participant, and `false` will un-mute them. Anything value other than `true` or `false` is interpreted as `false`. */
muted?: boolean;
/** Whether the participant should be on hold. Can be: `true` or `false`. `true` puts the participant on hold, and `false` lets them rejoin the conference. */
hold?: boolean;
/** The URL we call using the `hold_method` for music that plays when the participant is on hold. The URL may return an MP3 file, a WAV file, or a TwiML document that contains `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` verbs. */
holdUrl?: string;
/** The HTTP method we should use to call `hold_url`. Can be: `GET` or `POST` and the default is `GET`. */
holdMethod?: string;
/** The URL we call using the `announce_method` for an announcement to the participant. The URL may return an MP3 file, a WAV file, or a TwiML document that contains `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` verbs. */
announceUrl?: string;
/** The HTTP method we should use to call `announce_url`. Can be: `GET` or `POST` and defaults to `POST`. */
announceMethod?: string;
/** The URL we call using the `wait_method` for the music to play while participants are waiting for the conference to start. The URL may return an MP3 file, a WAV file, or a TwiML document that contains `<Play>`, `<Say>`, `<Pause>`, or `<Redirect>` verbs. The default value is the URL of our standard hold music. [Learn more about hold music](https://www.twilio.com/labs/twimlets/holdmusic). */
waitUrl?: string;
/** 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. */
waitMethod?: string;
/** Whether to play a notification beep to the conference when the participant exits. Can be: `true` or `false`. */
beepOnExit?: boolean;
/** Whether to end the conference when the participant leaves. Can be: `true` or `false` and defaults to `false`. */
endConferenceOnExit?: boolean;
/** Whether the participant is coaching another call. Can be: `true` or `false`. If not present, defaults to `false` unless `call_sid_to_coach` is defined. If `true`, `call_sid_to_coach` must be defined. */
coaching?: boolean;
/** The SID of the participant who is being `coached`. The participant being coached is the only participant who can hear the participant who is `coaching`. */
callSidToCoach?: string;
}
/**
* Options to pass to create a ParticipantInstance
*/
export interface ParticipantListInstanceCreateOptions {
/** The phone number, Client identifier, or username portion of SIP address that made this call. Phone numbers are in [E.164](https://www.twilio.com/docs/glossary/what-e164) format (e.g., +16175551212). Client identifiers are formatted `client:name`. If using a phone number, it must be a Twilio number or a Verified [outgoing caller id](https://www.twilio.com/docs/voice/api/outgoing-caller-ids) for your account. If the `to` parameter is a phone number, `from` must also be a phone number. If `to` is sip address, this value of `from` should be a username portion to be used to populate the P-Asserted-Identity header that is passed to the SIP endpoint. */
from: string;
/** The phone number, SIP address, or Client identifier that received this call. Phone numbers are in [E.164](https://www.twilio.com/docs/glossary/what-e164) format (e.g., +16175551212). SIP addresses are formatted as `sip:name@company.com`. Client identifiers are formatted `client:name`. [Custom parameters](https://www.twilio.com/docs/voice/api/conference-participant-resource#custom-parameters) may also be specified. */
to: string;
/** The URL we should call using the `status_callback_method` to send status information to your application. */
statusCallback?: string;
/** The HTTP method we should use to call `status_callback`. Can be: `GET` and `POST` and defaults to `POST`. */
statusCallbackMethod?: string;
/** The conference state changes that should generate a call to `status_callback`. Can be: `initiated`, `ringing`, `answered`, and `completed`. Separate multiple values with a space. The default value is `completed`. */
statusCallbackEvent?: Array<string>;
/** A label for this participant. If one is supplied, it may subsequently be used to fetch, update or delete the participant. */
label?: string;
/** The number of seconds that we should allow the phone to ring before assuming there is no answer. Can be an integer between `5` and `600`, inclusive. The default value is `60`. We always add a 5-second timeout buffer to outgoing calls, so value of 10 would result in an actual timeout that was closer to 15 seconds. */
timeout?: number;
/** Whether to record the participant and their conferences, including the time between conferences. Can be `true` or `false` and the default is `false`. */
record?: boolean;
/** Whether the agent is muted in the conference. Can be `true` or `false` and the default is `false`. */
muted?: boolean;
/** Whether to play a notification beep to the conference when the participant joins. Can be: `true`, `false`, `onEnter`, or `onExit`. The default value is `true`. */
beep?: string;
/** Whether to start the conference when the participant joins, if it has not already started. Can be: `true` or `false` and 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. */
startConferenceOnEnter?: boolean;
/** Whether to end the conference when the participant leaves. Can be: `true` or `false` and defaults to `false`. */
endConferenceOnExit?: boolean;
/** 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). */
waitUrl?: string;
/** 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. */
waitMethod?: string;
/** Whether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. Can be: `true` or `false` and defaults to `true`. */
earlyMedia?: boolean;
/** The maximum number of participants in the conference. Can be a positive integer from `2` to `250`. The default value is `250`. */
maxParticipants?: number;
/** Whether to record the conference the participant is joining. Can be: `true`, `false`, `record-from-start`, and `do-not-record`. The default value is `false`. */
conferenceRecord?: string;
/** Whether to trim leading and trailing silence from the conference recording. Can be: `trim-silence` or `do-not-trim` and defaults to `trim-silence`. */
conferenceTrim?: string;
/** 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. */
conferenceStatusCallback?: string;
/** The HTTP method we should use to call `conference_status_callback`. Can be: `GET` or `POST` and defaults to `POST`. */
conferenceStatusCallbackMethod?: string;
/** The conference state changes that should generate a call to `conference_status_callback`. Can be: `start`, `end`, `join`, `leave`, `mute`, `hold`, `modify`, `speaker`, and `announcement`. Separate multiple values with a space. Defaults to `start end`. */
conferenceStatusCallbackEvent?: Array<string>;
/** The recording channels for the final recording. Can be: `mono` or `dual` and the default is `mono`. */
recordingChannels?: string;
/** The URL that we should call using the `recording_status_callback_method` when the recording status changes. */
recordingStatusCallback?: string;
/** The HTTP method we should use when we call `recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`. */
recordingStatusCallbackMethod?: string;
/** The SIP username used for authentication. */
sipAuthUsername?: string;
/** The SIP password for authentication. */
sipAuthPassword?: string;
/** 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`. */
region?: string;
/** The URL we should call using the `conference_recording_status_callback_method` when the conference recording is available. */
conferenceRecordingStatusCallback?: string;
/** The HTTP method we should use to call `conference_recording_status_callback`. Can be: `GET` or `POST` and defaults to `POST`. */
conferenceRecordingStatusCallbackMethod?: string;
/** The recording state changes that should generate a call to `recording_status_callback`. Can be: `started`, `in-progress`, `paused`, `resumed`, `stopped`, `completed`, `failed`, and `absent`. Separate multiple values with a space, ex: `\\\'in-progress completed failed\\\'`. */
recordingStatusCallbackEvent?: Array<string>;
/** The conference recording state changes that generate a call to `conference_recording_status_callback`. Can be: `in-progress`, `completed`, `failed`, and `absent`. Separate multiple values with a space, ex: `\\\'in-progress completed failed\\\'` */
conferenceRecordingStatusCallbackEvent?: Array<string>;
/** Whether the participant is coaching another call. Can be: `true` or `false`. If not present, defaults to `false` unless `call_sid_to_coach` is defined. If `true`, `call_sid_to_coach` must be defined. */
coaching?: boolean;
/** The SID of the participant who is being `coached`. The participant being coached is the only participant who can hear the participant who is `coaching`. */
callSidToCoach?: string;
/** Jitter buffer size for the connecting participant. Twilio will use this setting to apply Jitter Buffer before participant\\\'s audio is mixed into the conference. Can be: `off`, `small`, `medium`, and `large`. Default to `large`. */
jitterBufferSize?: string;
/** The SID of a BYOC (Bring Your Own Carrier) trunk to route this call with. Note that `byoc` is only meaningful when `to` is a phone number; it will otherwise be ignored. (Beta) */
byoc?: string;
/** The phone number, Client identifier, or username portion of SIP address that made this call. Phone numbers are in [E.164](https://www.twilio.com/docs/glossary/what-e164) format (e.g., +16175551212). Client identifiers are formatted `client:name`. If using a phone number, it must be a Twilio number or a Verified [outgoing caller id](https://www.twilio.com/docs/voice/api/outgoing-caller-ids) for your account. If the `to` parameter is a phone number, `callerId` must also be a phone number. If `to` is sip address, this value of `callerId` should be a username portion to be used to populate the From header that is passed to the SIP endpoint. */
callerId?: string;
/** The Reason for the outgoing call. Use it to specify the purpose of the call that is presented on the called party\\\'s phone. (Branded Calls Beta) */
callReason?: string;
/** The audio track to record for the call. Can be: `inbound`, `outbound` or `both`. The default is `both`. `inbound` records the audio that is received by Twilio. `outbound` records the audio that is sent from Twilio. `both` records the audio that is received and sent by Twilio. */
recordingTrack?: string;
/** The maximum duration of the call in seconds. Constraints depend on account and configuration. */
timeLimit?: number;
/** Whether to detect if a human, answering machine, or fax has picked up the call. Can be: `Enable` or `DetectMessageEnd`. Use `Enable` if you would like us to return `AnsweredBy` as soon as the called party is identified. Use `DetectMessageEnd`, if you would like to leave a message on an answering machine. For more information, see [Answering Machine Detection](https://www.twilio.com/docs/voice/answering-machine-detection). */
machineDetection?: string;
/** The number of seconds that we should attempt to detect an answering machine before timing out and sending a voice request with `AnsweredBy` of `unknown`. The default timeout is 30 seconds. */
machineDetectionTimeout?: number;
/** The number of milliseconds that is used as the measuring stick for the length of the speech activity, where durations lower than this value will be interpreted as a human and longer than this value as a machine. Possible Values: 1000-6000. Default: 2400. */
machineDetectionSpeechThreshold?: number;
/** The number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Possible Values: 500-5000. Default: 1200. */
machineDetectionSpeechEndThreshold?: number;
/** The number of milliseconds of initial silence after which an `unknown` AnsweredBy result will be returned. Possible Values: 2000-10000. Default: 5000. */
machineDetectionSilenceTimeout?: number;
/** The URL that we should call using the `amd_status_callback_method` to notify customer application whether the call was answered by human, machine or fax. */
amdStatusCallback?: string;
/** The HTTP method we should use when calling the `amd_status_callback` URL. Can be: `GET` or `POST` and the default is `POST`. */
amdStatusCallbackMethod?: string;
/** Whether to trim any leading and trailing silence from the participant recording. Can be: `trim-silence` or `do-not-trim` and the default is `trim-silence`. */
trim?: string;
/** A token string needed to invoke a forwarded call. A call_token is generated when an incoming call is received on a Twilio number. Pass an incoming call\\\'s call_token value to a forwarded call via the call_token parameter when creating a new call. A forwarded call should bear the same CallerID of the original incoming call. */
callToken?: string;
}
/**
* Options to pass to each
*/
export interface ParticipantListInstanceEachOptions {
/** Whether to return only participants that are muted. Can be: `true` or `false`. */
muted?: boolean;
/** Whether to return only participants that are on hold. Can be: `true` or `false`. */
hold?: boolean;
/** Whether to return only participants who are coaching another call. Can be: `true` or `false`. */
coaching?: boolean;
/** How many resources to return in each list page. The default is 50, and the maximum is 1000. */
pageSize?: number;
/** Function to process each record. If this and a positional callback are passed, this one will be used */
callback?: (item: ParticipantInstance, done: (err?: Error) => void) => void;
/** Function to be called upon completion of streaming */
done?: Function;
/** Upper limit for the number of records to return. each() guarantees never to return more than limit. Default is no limit */
limit?: number;
}
/**
* Options to pass to list
*/
export interface ParticipantListInstanceOptions {
/** Whether to return only participants that are muted. Can be: `true` or `false`. */
muted?: boolean;
/** Whether to return only participants that are on hold. Can be: `true` or `false`. */
hold?: boolean;
/** Whether to return only participants who are coaching another call. Can be: `true` or `false`. */
coaching?: boolean;
/** How many resources to return in each list page. The default is 50, and the maximum is 1000. */
pageSize?: number;
/** Upper limit for the number of records to return. list() guarantees never to return more than limit. Default is no limit */
limit?: number;
}
/**
* Options to pass to page
*/
export interface ParticipantListInstancePageOptions {
/** Whether to return only participants that are muted. Can be: `true` or `false`. */
muted?: boolean;
/** Whether to return only participants that are on hold. Can be: `true` or `false`. */
hold?: boolean;
/** Whether to return only participants who are coaching another call. Can be: `true` or `false`. */
coaching?: boolean;
/** How many resources to return in each list page. The default is 50, and the maximum is 1000. */
pageSize?: number;
/** Page Number, this value is simply for client state */
pageNumber?: number;
/** PageToken provided by the API */
pageToken?: string;
}
export interface ParticipantContext {
/**
* Remove a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed boolean
*/
remove(callback?: (error: Error | null, item?: boolean) => any): Promise<boolean>;
/**
* Fetch a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
fetch(callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Update a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
update(callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Update a ParticipantInstance
*
* @param params - Parameter for request
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
update(params: ParticipantContextUpdateOptions, callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Provide a user-friendly representation
*/
toJSON(): any;
[inspect.custom](_depth: any, options: InspectOptions): any;
}
export interface ParticipantContextSolution {
accountSid: string;
conferenceSid: string;
callSid: string;
}
export declare class ParticipantContextImpl implements ParticipantContext {
protected _version: V2010;
protected _solution: ParticipantContextSolution;
protected _uri: string;
constructor(_version: V2010, accountSid: string, conferenceSid: string, callSid: string);
remove(callback?: (error: Error | null, item?: boolean) => any): Promise<boolean>;
fetch(callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
update(params?: ParticipantContextUpdateOptions | ((error: Error | null, item?: ParticipantInstance) => any), callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON(): ParticipantContextSolution;
[inspect.custom](_depth: any, options: InspectOptions): string;
}
interface ParticipantPayload extends TwilioResponsePayload {
participants: ParticipantResource[];
}
interface ParticipantResource {
account_sid: string;
call_sid: string;
label: string;
call_sid_to_coach: string;
coaching: boolean;
conference_sid: string;
date_created: Date;
date_updated: Date;
end_conference_on_exit: boolean;
muted: boolean;
hold: boolean;
start_conference_on_enter: boolean;
status: ParticipantStatus;
queue_time: string;
uri: string;
}
export declare class ParticipantInstance {
protected _version: V2010;
protected _solution: ParticipantContextSolution;
protected _context?: ParticipantContext;
constructor(_version: V2010, payload: ParticipantResource, accountSid: string, conferenceSid: string, callSid?: string);
/**
* The SID of the [Account](https://www.twilio.com/docs/iam/api/account) that created the Participant resource.
*/
accountSid: string;
/**
* The SID of the [Call](https://www.twilio.com/docs/voice/api/call-resource) the Participant resource is associated with.
*/
callSid: string;
/**
* The user-specified label of this participant, if one was given when the participant was created. This may be used to fetch, update or delete the participant.
*/
label: string;
/**
* The SID of the participant who is being `coached`. The participant being coached is the only participant who can hear the participant who is `coaching`.
*/
callSidToCoach: string;
/**
* Whether the participant is coaching another call. Can be: `true` or `false`. If not present, defaults to `false` unless `call_sid_to_coach` is defined. If `true`, `call_sid_to_coach` must be defined.
*/
coaching: boolean;
/**
* The SID of the conference the participant is in.
*/
conferenceSid: string;
/**
* The date and time in GMT that the resource was created specified in [RFC 2822](https://www.ietf.org/rfc/rfc2822.txt) format.
*/
dateCreated: Date;
/**
* The date and time in GMT that the resource was last updated specified in [RFC 2822](https://www.ietf.org/rfc/rfc2822.txt) format.
*/
dateUpdated: Date;
/**
* Whether the conference ends when the participant leaves. Can be: `true` or `false` and the default is `false`. If `true`, the conference ends and all other participants drop out when the participant leaves.
*/
endConferenceOnExit: boolean;
/**
* Whether the participant is muted. Can be `true` or `false`.
*/
muted: boolean;
/**
* Whether the participant is on hold. Can be `true` or `false`.
*/
hold: boolean;
/**
* Whether the conference starts when the participant joins the conference, if it has not already started. Can be: `true` or `false` and 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.
*/
startConferenceOnEnter: boolean;
status: ParticipantStatus;
/**
* The wait time in milliseconds before participant\'s call is placed. Only available in the response to a create participant request.
*/
queueTime: string;
/**
* The URI of the resource, relative to `https://api.twilio.com`.
*/
uri: string;
private get _proxy();
/**
* Remove a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed boolean
*/
remove(callback?: (error: Error | null, item?: boolean) => any): Promise<boolean>;
/**
* Fetch a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
fetch(callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Update a ParticipantInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
update(callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Update a ParticipantInstance
*
* @param params - Parameter for request
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
update(params: ParticipantContextUpdateOptions, callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON(): {
accountSid: string;
callSid: string;
label: string;
callSidToCoach: string;
coaching: boolean;
conferenceSid: string;
dateCreated: Date;
dateUpdated: Date;
endConferenceOnExit: boolean;
muted: boolean;
hold: boolean;
startConferenceOnEnter: boolean;
status: ParticipantStatus;
queueTime: string;
uri: string;
};
[inspect.custom](_depth: any, options: InspectOptions): string;
}
export interface ParticipantSolution {
accountSid: string;
conferenceSid: string;
}
export interface ParticipantListInstance {
_version: V2010;
_solution: ParticipantSolution;
_uri: string;
(callSid: string): ParticipantContext;
get(callSid: string): ParticipantContext;
/**
* Create a ParticipantInstance
*
* @param params - Parameter for request
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ParticipantInstance
*/
create(params: ParticipantListInstanceCreateOptions, callback?: (error: Error | null, item?: ParticipantInstance) => any): Promise<ParticipantInstance>;
/**
* Streams ParticipantInstance records from the API.
*
* This operation lazily loads records as efficiently as possible until the limit
* is reached.
*
* The results are passed into the callback function, so this operation is memory
* efficient.
*
* If a function is passed as the first argument, it will be used as the callback
* function.
*
* @param { ParticipantListInstanceEachOptions } [params] - Options for request
* @param { function } [callback] - Function to process each record
*/
each(callback?: (item: ParticipantInstance, done: (err?: Error) => void) => void): void;
each(params: ParticipantListInstanceEachOptions, callback?: (item: ParticipantInstance, done: (err?: Error) => void) => void): void;
/**
* Retrieve a single target page of ParticipantInstance records from the API.
*
* The request is executed immediately.
*
* @param { string } [targetUrl] - API-generated URL for the requested results page
* @param { function } [callback] - Callback to handle list of records
*/
getPage(targetUrl: string, callback?: (error: Error | null, items: ParticipantPage) => any): Promise<ParticipantPage>;
/**
* Lists ParticipantInstance records from the API as a list.
*
* If a function is passed as the first argument, it will be used as the callback
* function.
*
* @param { ParticipantListInstanceOptions } [params] - Options for request
* @param { function } [callback] - Callback to handle list of records
*/
list(callback?: (error: Error | null, items: ParticipantInstance[]) => any): Promise<ParticipantInstance[]>;
list(params: ParticipantListInstanceOptions, callback?: (error: Error | null, items: ParticipantInstance[]) => any): Promise<ParticipantInstance[]>;
/**
* Retrieve a single page of ParticipantInstance records from the API.
*
* The request is executed immediately.
*
* If a function is passed as the first argument, it will be used as the callback
* function.
*
* @param { ParticipantListInstancePageOptions } [params] - Options for request
* @param { function } [callback] - Callback to handle list of records
*/
page(callback?: (error: Error | null, items: ParticipantPage) => any): Promise<ParticipantPage>;
page(params: ParticipantListInstancePageOptions, callback?: (error: Error | null, items: ParticipantPage) => any): Promise<ParticipantPage>;
/**
* Provide a user-friendly representation
*/
toJSON(): any;
[inspect.custom](_depth: any, options: InspectOptions): any;
}
export declare function ParticipantListInstance(version: V2010, accountSid: string, conferenceSid: string): ParticipantListInstance;
export declare class ParticipantPage extends Page<V2010, ParticipantPayload, ParticipantResource, ParticipantInstance> {
/**
* Initialize the ParticipantPage
*
* @param version - Version of the resource
* @param response - Response from the API
* @param solution - Path solution
*/
constructor(version: V2010, response: Response<string>, solution: ParticipantSolution);
/**
* Build an instance of ParticipantInstance
*
* @param payload - Payload response from the API
*/
getInstance(payload: ParticipantResource): ParticipantInstance;
[inspect.custom](depth: any, options: InspectOptions): string;
}
export {};