integrations/voice/twilio/dist¶
Interfaces¶
ParseTwilioVoiceWebhookInput¶
Extends¶
Properties¶
authToken?¶
Inherited from¶
ParseTwilioVoiceWebhookOptions.authToken
publicUrl?¶
Inherited from¶
ParseTwilioVoiceWebhookOptions.publicUrl
request¶
requireSignature?¶
Inherited from¶
ParseTwilioVoiceWebhookOptions.requireSignature
ParseTwilioVoiceWebhookOptions¶
Extended by¶
Properties¶
authToken?¶
publicUrl?¶
requireSignature?¶
TwilioAccountContextResource¶
Methods¶
fetch()¶
Returns¶
Promise\<TwilioAccountResource>
TwilioAccountResource¶
Indexable¶
Properties¶
friendly_name?¶
friendlyName?¶
sid¶
status?¶
TwilioCallableVoiceCallsResource()¶
Parameters¶
| Parameter | Type |
|---|---|
sid |
string |
Returns¶
Methods¶
create()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
unknown |
Returns¶
Promise\<TwilioCallResource>
get()?¶
Parameters¶
| Parameter | Type |
|---|---|
sid |
string |
Returns¶
TwilioCallContextResource¶
Methods¶
fetch()¶
Returns¶
Promise\<TwilioCallResource>
update()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
{ } |
Returns¶
Promise\<TwilioCallResource>
TwilioCallEndInput¶
Properties¶
status?¶
statusCallback?¶
statusCallbackMethod?¶
TwilioCallRedirectInput¶
Properties¶
fallbackMethod?¶
fallbackUrl?¶
method?¶
statusCallback?¶
statusCallbackMethod?¶
twiml?¶
url?¶
TwilioCallResource¶
Indexable¶
Properties¶
account_sid?¶
accountSid?¶
direction?¶
from?¶
sid¶
status?¶
to?¶
TwilioCallUpdateInput¶
Properties¶
fallbackMethod?¶
fallbackUrl?¶
method?¶
status?¶
statusCallback?¶
statusCallbackMethod?¶
timeLimitSeconds?¶
twiml?¶
url?¶
TwilioGettableVoiceCallsResource¶
Methods¶
create()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
unknown |
Returns¶
Promise\<TwilioCallResource>
get()¶
Parameters¶
| Parameter | Type |
|---|---|
sid |
string |
Returns¶
TwilioMediaStreamTwiMLOptions¶
Properties¶
customParameters?¶
mode?¶
name?¶
statusCallback?¶
track?¶
websocketUrl¶
TwilioOutboundCallInput¶
Properties¶
applicationSid?¶
from¶
machineDetection?¶
metadata?¶
method?¶
sendDigits?¶
statusCallback?¶
statusCallbackEvent?¶
statusCallbackMethod?¶
timeoutSeconds?¶
to¶
twiml?¶
url?¶
TwilioVoiceCallsResource()¶
Parameters¶
| Parameter | Type |
|---|---|
sid |
string |
Returns¶
Methods¶
create()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
unknown |
Returns¶
Promise\<TwilioCallResource>
get()¶
Parameters¶
| Parameter | Type |
|---|---|
sid |
string |
Returns¶
TwilioVoiceClient¶
Methods¶
createOutboundCall()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
TwilioOutboundCallInput |
Returns¶
Promise\<TwilioCallResource>
endCall()¶
Parameters¶
| Parameter | Type |
|---|---|
callSid |
string |
input? |
TwilioCallEndInput |
Returns¶
Promise\<TwilioCallResource>
fetchAccount()¶
Returns¶
Promise\<TwilioAccountResource>
fetchCall()¶
Parameters¶
| Parameter | Type |
|---|---|
callSid |
string |
Returns¶
Promise\<TwilioCallResource>
getRawClient()¶
Returns¶
Promise\<TwilioVoiceRawClient>
getSdkClient()¶
Returns¶
Promise\<TwilioVoiceRawClient>
Deprecated¶
Use getRawClient.
redirectCall()¶
Parameters¶
| Parameter | Type |
|---|---|
callSid |
string |
input |
TwilioCallRedirectInput |
Returns¶
Promise\<TwilioCallResource>
updateCall()¶
Parameters¶
| Parameter | Type |
|---|---|
callSid |
string |
input |
TwilioCallUpdateInput |
Returns¶
Promise\<TwilioCallResource>
TwilioVoiceClientOptions¶
Extended by¶
Properties¶
accountSid¶
apiKeySecret?¶
apiKeySid?¶
authToken?¶
rawClient?¶
sdkClient?¶
Deprecated¶
Use rawClient.
TwilioVoiceIntegrationOptions¶
Extends¶
Properties¶
accountSid¶
Inherited from¶
TwilioVoiceClientOptions.accountSid
apiKeySecret?¶
Inherited from¶
TwilioVoiceClientOptions.apiKeySecret
apiKeySid?¶
Inherited from¶
TwilioVoiceClientOptions.apiKeySid
authToken?¶
Inherited from¶
TwilioVoiceClientOptions.authToken
publicUrl?¶
rawClient?¶
Inherited from¶
TwilioVoiceClientOptions.rawClient
requireSignature?¶
sdkClient?¶
Deprecated¶
Use rawClient.
Inherited from¶
TwilioVoiceClientOptions.sdkClient
voiceClient?¶
webhookAuthToken?¶
TwilioVoiceRawClient¶
Properties¶
api¶
accounts()¶
Parameters¶
| Parameter | Type |
|---|---|
accountSid |
string |
Returns¶
calls¶
TwilioVoiceWebhook¶
Properties¶
accountSid?¶
callSid?¶
callStatus?¶
direction?¶
from?¶
raw¶
to?¶
Type Aliases¶
TwilioCallStatus¶
type TwilioCallStatus =
| "queued"
| "initiated"
| "ringing"
| "in-progress"
| "completed"
| "busy"
| "failed"
| "no-answer"
| "canceled";
TwilioCallStatusCallbackEvent¶
TwilioCallUpdateStatus¶
TwilioVoiceSdkCallCreateOptions¶
TwilioVoiceSdkCallUpdateOptions¶
TwilioVoiceSdkClient¶
Variables¶
createTwilioIntegration¶
createTwilioIntegrationOperationHandlers¶
twilioVoiceIntegration¶
const twilioVoiceIntegration: {
bindingReport: OperationBindingReport;
client: TwilioVoiceClient;
getRawClient: () => Promise<TwilioVoiceRawClient>;
getSdkClient: () => Promise<TwilioVoiceRawClient>;
manifest: {
capabilities: {
audiences?: ("customer-facing" | "mixed" | "internal-support")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension?: boolean;
label?: string;
metadata?: Record<string, unknown>;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
category: string;
channelAudiences: ("customer-facing" | "mixed" | "internal-support")[];
coverage: {
evidence: {
label: string;
url?: string;
}[];
notes: string[];
scope: | "provider-api-subset"
| "support-workflow-subset"
| "connector-required"
| "local-protocol"
| "full-provider-api";
};
credentialRequirements: {
description?: string;
id: string;
label?: string;
metadata?: Record<string, unknown>;
required: boolean;
scopes: string[];
}[];
directions: (
| "inbound-only"
| "outbound-only"
| "bidirectional"
| "receive-only"
| "send-only")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "official" | "community" | "unknown" | "partner";
url?: string;
}[];
metadata?: Record<string, unknown>;
name: string;
operations: {
alias: string;
audience?: "customer-facing" | "mixed" | "internal-support";
audiences?: ("customer-facing" | "mixed" | "internal-support")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension: boolean;
externallyVisible?: boolean;
inputSchema?: unknown;
inputSchemaName?: string;
inputSchemaRef?: string;
label?: string;
metadata?: Record<string, unknown>;
outputSchema?: unknown;
outputSchemaName?: string;
outputSchemaRef?: string;
providerObject?: string;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
providerOperation?: string;
requiredPolicyIds?: string[];
requiresApproval?: boolean;
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
packageName: string;
privacyNotes: string[];
provider: string;
trustLevel: "official" | "community" | "verified" | "experimental";
} & {
capabilities: readonly [{
audiences: readonly ["customer-facing"];
capability: "receive";
description: "Accepts and parses Twilio Voice webhooks for SDK-user-owned Cognidesk voice handling.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Twilio helper library.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds TwiML for Cognidesk-owned voice websocket media streams while preserving Twilio track constraints.";
label: "Media Stream TwiML";
providerObjects: readonly [{
kind: "twilioMediaStream";
label: "Twilio Media Stream";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Redirects or ends active Twilio calls through the Call resource.";
label: "Redirect or end calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "twilio.webhook-signature";
description: "Validates X-Twilio-Signature for form-encoded Twilio Voice webhooks.";
exposesSensitiveData: true;
extension: true;
label: "Validate Twilio webhooks";
providerObjects: readonly [{
kind: "twilioWebhook";
label: "Twilio Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Twilio Node helper library";
url: "https://www.npmjs.com/package/twilio";
}, {
label: "Twilio Programmable Voice API";
url: "https://www.twilio.com/docs/voice/api";
}, {
label: "Twilio Call Resource";
url: "https://www.twilio.com/docs/voice/api/call-resource";
}, {
label: "Twilio webhook security";
url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security";
}];
notes: readonly ["Implements normalized call-control, TwiML media stream, webhook, readiness, and raw Twilio helper-client access with the official Twilio Node helper library.", "Twilio Voice and Twilio SMS are separate Cognidesk category packages even though they use the same upstream helper library.", "Conferences, queues, recordings, transcription lifecycle, SIP trunks, Voice Insights, and ConversationRelay remain available only through raw Twilio client access or future normalized operations."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Server-side Twilio Account SID used by the helper library.";
id: "twilio-account";
label: "Twilio Account SID";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Twilio Auth Token or API key credentials used for Voice REST calls.";
id: "twilio-rest-api-credentials";
label: "Twilio REST API credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Primary Twilio Auth Token used to validate X-Twilio-Signature webhook requests.";
id: "twilio-webhook-auth-token";
label: "Twilio webhook Auth Token";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.twilio";
limitations: readonly ["Live call readiness depends on the SDK user's Twilio account, voice-capable numbers, regions, webhooks, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
sdkPackage: "twilio";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "6.0.2";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
sdkClient: {
coverage: "deprecated-raw-client-alias";
export: "getSdkClient";
};
};
name: "Twilio Programmable Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "twilioCall";
providerOperation: "twilio.validateRequest";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "twilioCall";
providerOperation: "calls.create";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.redirect";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Redirect call";
providerObject: "twilioCall";
providerOperation: "calls(sid).update";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-twilio";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, and Media Stream audio metadata are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package."];
provider: "twilio";
trustLevel: "official";
};
metadata?: Record<string, unknown>;
operationAliases: ("voice.call.answer" | "voice.call.start" | "voice.call.redirect")[];
operations: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
};
getOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
requireOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
run: Promise<Awaited<ReturnType<{
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias]>>>;
};
Type Declaration¶
| Name | Type |
|---|---|
bindingReport |
OperationBindingReport |
client |
TwilioVoiceClient |
getRawClient() |
() => Promise\<TwilioVoiceRawClient> |
getSdkClient() |
() => Promise\<TwilioVoiceRawClient> |
manifest |
{ capabilities: { audiences?: ("customer-facing" | "mixed" | "internal-support")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; label?: string; metadata?: Record\<string, unknown>; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; requiresCredential?: boolean; sideEffect?: boolean; }[]; category: string; channelAudiences: ("customer-facing" | "mixed" | "internal-support")[]; coverage: { evidence: { label: string; url?: string; }[]; notes: string[]; scope: | "provider-api-subset" | "support-workflow-subset" | "connector-required" | "local-protocol" | "full-provider-api"; }; credentialRequirements: { description?: string; id: string; label?: string; metadata?: Record\<string, unknown>; required: boolean; scopes: string[]; }[]; directions: ( | "inbound-only" | "outbound-only" | "bidirectional" | "receive-only" | "send-only")[]; id: string; limitations: string[]; maintainers: { name: string; type: "official" | "community" | "unknown" | "partner"; url?: string; }[]; metadata?: Record\<string, unknown>; name: string; operations: { alias: string; audience?: "customer-facing" | "mixed" | "internal-support"; audiences?: ("customer-facing" | "mixed" | "internal-support")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[]; packageName: string; privacyNotes: string[]; provider: string; trustLevel: "official" | "community" | "verified" | "experimental"; } & { capabilities: readonly [{ audiences: readonly ["customer-facing"]; capability: "receive"; description: "Accepts and parses Twilio Voice webhooks for SDK-user-owned Cognidesk voice handling."; exposesSensitiveData: true; label: "Receive voice webhooks"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing"]; capability: "send"; description: "Creates outbound calls through the Twilio helper library."; exposesSensitiveData: true; label: "Create outbound calls"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["customer-facing", "internal-support"]; capability: "media"; description: "Builds TwiML for Cognidesk-owned voice websocket media streams while preserving Twilio track constraints."; label: "Media Stream TwiML"; providerObjects: readonly [{ kind: "twilioMediaStream"; label: "Twilio Media Stream"; }]; requiresCredential: false; }, { audiences: readonly ["internal-support"]; capability: "transfer"; changesWorkflow: true; description: "Redirects or ends active Twilio calls through the Call resource."; label: "Redirect or end calls"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support"]; capability: "twilio.webhook-signature"; description: "Validates X-Twilio-Signature for form-encoded Twilio Voice webhooks."; exposesSensitiveData: true; extension: true; label: "Validate Twilio webhooks"; providerObjects: readonly [{ kind: "twilioWebhook"; label: "Twilio Webhook"; }]; requiresCredential: true; }]; category: "voice"; channelAudiences: readonly ["customer-facing", "mixed"]; coverage: { evidence: readonly [{ label: "Twilio Node helper library"; url: "https://www.npmjs.com/package/twilio"; }, { label: "Twilio Programmable Voice API"; url: "https://www.twilio.com/docs/voice/api"; }, { label: "Twilio Call Resource"; url: "https://www.twilio.com/docs/voice/api/call-resource"; }, { label: "Twilio webhook security"; url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security"; }]; notes: readonly ["Implements normalized call-control, TwiML media stream, webhook, readiness, and raw Twilio helper-client access with the official Twilio Node helper library.", "Twilio Voice and Twilio SMS are separate Cognidesk category packages even though they use the same upstream helper library.", "Conferences, queues, recordings, transcription lifecycle, SIP trunks, Voice Insights, and ConversationRelay remain available only through raw Twilio client access or future normalized operations."]; scope: "provider-api-subset"; }; credentialRequirements: readonly [{ description: "Server-side Twilio Account SID used by the helper library."; id: "twilio-account"; label: "Twilio Account SID"; metadata: { scopeKind: "provider-permission"; }; required: true; }, { description: "Twilio Auth Token or API key credentials used for Voice REST calls."; id: "twilio-rest-api-credentials"; label: "Twilio REST API credentials"; metadata: { scopeKind: "provider-permission"; }; required: true; }, { description: "Primary Twilio Auth Token used to validate X-Twilio-Signature webhook requests."; id: "twilio-webhook-auth-token"; label: "Twilio webhook Auth Token"; metadata: { scopeKind: "provider-permission"; }; required: false; }]; directions: readonly ["inbound-only", "outbound-only", "bidirectional"]; id: "voice.twilio"; limitations: readonly ["Live call readiness depends on the SDK user's Twilio account, voice-capable numbers, regions, webhooks, and account permissions."]; maintainers: readonly [{ name: "Cognidesk"; type: "official"; }]; metadata: { implementation: { sdkPackage: "twilio"; strategy: "official-sdk"; verifiedAt: "2026-06-21"; verifiedVersion: "6.0.2"; }; rawClient: { coverage: "upstream-sdk"; export: "getRawClient"; }; sdkClient: { coverage: "deprecated-raw-client-alias"; export: "getSdkClient"; }; }; name: "Twilio Programmable Voice"; operations: readonly [{ alias: "voice.call.answer"; audiences: readonly ["customer-facing"]; capability: "receive"; exposesSensitiveData: true; label: "Receive voice webhook"; providerObject: "twilioCall"; providerOperation: "twilio.validateRequest"; }, { alias: "voice.call.start"; audiences: readonly ["customer-facing"]; capability: "send"; exposesSensitiveData: true; externallyVisible: true; label: "Create outbound call"; providerObject: "twilioCall"; providerOperation: "calls.create"; requiresApproval: true; sideEffect: true; }, { alias: "voice.call.redirect"; audiences: readonly ["internal-support"]; capability: "transfer"; changesWorkflow: true; label: "Redirect call"; providerObject: "twilioCall"; providerOperation: "calls(sid).update"; sideEffect: true; }]; packageName: "@cognidesk/integration-voice-twilio"; privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, and Media Stream audio metadata are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package."]; provider: "twilio"; trustLevel: "official"; } |
metadata? |
Record\<string, unknown> |
operationAliases |
("voice.call.answer" | "voice.call.start" | "voice.call.redirect")[] |
operations |
{ voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; } |
operations.voice.call.answer() |
(input) => Promise\<TwilioVoiceWebhook> |
operations.voice.call.redirect() |
(input) => Promise\<TwilioCallResource> |
operations.voice.call.start() |
(input) => Promise\<TwilioCallResource> |
getOperationHandler() |
(alias) => { voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias] |
requireOperationHandler() |
(alias) => { voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias] |
run() |
( alias, input, context?) => Promise\<Awaited\<ReturnType\<{ voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias]>>> |
Functions¶
createTwilioMediaStreamTwiML()¶
Parameters¶
| Parameter | Type |
|---|---|
options |
TwilioMediaStreamTwiMLOptions |
Returns¶
string
createTwilioVoiceClient()¶
Parameters¶
| Parameter | Type |
|---|---|
options |
TwilioVoiceClientOptions |
Returns¶
createTwilioVoiceIntegration()¶
function createTwilioVoiceIntegration(options): {
bindingReport: OperationBindingReport;
client: TwilioVoiceClient;
getRawClient: () => Promise<TwilioVoiceRawClient>;
getSdkClient: () => Promise<TwilioVoiceRawClient>;
manifest: {
capabilities: {
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension?: boolean;
label?: string;
metadata?: Record<string, unknown>;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
category: string;
channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
coverage: {
evidence: {
label: string;
url?: string;
}[];
notes: string[];
scope: | "support-workflow-subset"
| "provider-api-subset"
| "connector-required"
| "local-protocol"
| "full-provider-api";
};
credentialRequirements: {
description?: string;
id: string;
label?: string;
metadata?: Record<string, unknown>;
required: boolean;
scopes: string[];
}[];
directions: (
| "receive-only"
| "send-only"
| "inbound-only"
| "outbound-only"
| "bidirectional")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "community" | "official" | "unknown" | "partner";
url?: string;
}[];
metadata?: Record<string, unknown>;
name: string;
operations: {
alias: string;
audience?: "customer-facing" | "internal-support" | "mixed";
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension: boolean;
externallyVisible?: boolean;
inputSchema?: unknown;
inputSchemaName?: string;
inputSchemaRef?: string;
label?: string;
metadata?: Record<string, unknown>;
outputSchema?: unknown;
outputSchemaName?: string;
outputSchemaRef?: string;
providerObject?: string;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
providerOperation?: string;
requiredPolicyIds?: string[];
requiresApproval?: boolean;
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
packageName: string;
privacyNotes: string[];
provider: string;
trustLevel: "community" | "official" | "verified" | "experimental";
} & {
capabilities: readonly [{
audiences: readonly ["customer-facing"];
capability: "receive";
description: "Accepts and parses Twilio Voice webhooks for SDK-user-owned Cognidesk voice handling.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Twilio helper library.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds TwiML for Cognidesk-owned voice websocket media streams while preserving Twilio track constraints.";
label: "Media Stream TwiML";
providerObjects: readonly [{
kind: "twilioMediaStream";
label: "Twilio Media Stream";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Redirects or ends active Twilio calls through the Call resource.";
label: "Redirect or end calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "twilio.webhook-signature";
description: "Validates X-Twilio-Signature for form-encoded Twilio Voice webhooks.";
exposesSensitiveData: true;
extension: true;
label: "Validate Twilio webhooks";
providerObjects: readonly [{
kind: "twilioWebhook";
label: "Twilio Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Twilio Node helper library";
url: "https://www.npmjs.com/package/twilio";
}, {
label: "Twilio Programmable Voice API";
url: "https://www.twilio.com/docs/voice/api";
}, {
label: "Twilio Call Resource";
url: "https://www.twilio.com/docs/voice/api/call-resource";
}, {
label: "Twilio webhook security";
url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security";
}];
notes: readonly ["Implements normalized call-control, TwiML media stream, webhook, readiness, and raw Twilio helper-client access with the official Twilio Node helper library.", "Twilio Voice and Twilio SMS are separate Cognidesk category packages even though they use the same upstream helper library.", "Conferences, queues, recordings, transcription lifecycle, SIP trunks, Voice Insights, and ConversationRelay remain available only through raw Twilio client access or future normalized operations."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Server-side Twilio Account SID used by the helper library.";
id: "twilio-account";
label: "Twilio Account SID";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Twilio Auth Token or API key credentials used for Voice REST calls.";
id: "twilio-rest-api-credentials";
label: "Twilio REST API credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Primary Twilio Auth Token used to validate X-Twilio-Signature webhook requests.";
id: "twilio-webhook-auth-token";
label: "Twilio webhook Auth Token";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.twilio";
limitations: readonly ["Live call readiness depends on the SDK user's Twilio account, voice-capable numbers, regions, webhooks, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
sdkPackage: "twilio";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "6.0.2";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
sdkClient: {
coverage: "deprecated-raw-client-alias";
export: "getSdkClient";
};
};
name: "Twilio Programmable Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "twilioCall";
providerOperation: "twilio.validateRequest";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "twilioCall";
providerOperation: "calls.create";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.redirect";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Redirect call";
providerObject: "twilioCall";
providerOperation: "calls(sid).update";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-twilio";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, and Media Stream audio metadata are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package."];
provider: "twilio";
trustLevel: "official";
};
metadata?: Record<string, unknown>;
operationAliases: ("voice.call.start" | "voice.call.answer" | "voice.call.redirect")[];
operations: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
};
getOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
requireOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
run: Promise<Awaited<ReturnType<{
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias]>>>;
};
Parameters¶
| Parameter | Type |
|---|---|
options |
TwilioVoiceIntegrationOptions |
Returns¶
{
bindingReport: OperationBindingReport;
client: TwilioVoiceClient;
getRawClient: () => Promise<TwilioVoiceRawClient>;
getSdkClient: () => Promise<TwilioVoiceRawClient>;
manifest: {
capabilities: {
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension?: boolean;
label?: string;
metadata?: Record<string, unknown>;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
category: string;
channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
coverage: {
evidence: {
label: string;
url?: string;
}[];
notes: string[];
scope: | "support-workflow-subset"
| "provider-api-subset"
| "connector-required"
| "local-protocol"
| "full-provider-api";
};
credentialRequirements: {
description?: string;
id: string;
label?: string;
metadata?: Record<string, unknown>;
required: boolean;
scopes: string[];
}[];
directions: (
| "receive-only"
| "send-only"
| "inbound-only"
| "outbound-only"
| "bidirectional")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "community" | "official" | "unknown" | "partner";
url?: string;
}[];
metadata?: Record<string, unknown>;
name: string;
operations: {
alias: string;
audience?: "customer-facing" | "internal-support" | "mixed";
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension: boolean;
externallyVisible?: boolean;
inputSchema?: unknown;
inputSchemaName?: string;
inputSchemaRef?: string;
label?: string;
metadata?: Record<string, unknown>;
outputSchema?: unknown;
outputSchemaName?: string;
outputSchemaRef?: string;
providerObject?: string;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
providerOperation?: string;
requiredPolicyIds?: string[];
requiresApproval?: boolean;
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
packageName: string;
privacyNotes: string[];
provider: string;
trustLevel: "community" | "official" | "verified" | "experimental";
} & {
capabilities: readonly [{
audiences: readonly ["customer-facing"];
capability: "receive";
description: "Accepts and parses Twilio Voice webhooks for SDK-user-owned Cognidesk voice handling.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Twilio helper library.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds TwiML for Cognidesk-owned voice websocket media streams while preserving Twilio track constraints.";
label: "Media Stream TwiML";
providerObjects: readonly [{
kind: "twilioMediaStream";
label: "Twilio Media Stream";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Redirects or ends active Twilio calls through the Call resource.";
label: "Redirect or end calls";
providerObjects: readonly [{
kind: "twilioCall";
label: "Twilio Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "twilio.webhook-signature";
description: "Validates X-Twilio-Signature for form-encoded Twilio Voice webhooks.";
exposesSensitiveData: true;
extension: true;
label: "Validate Twilio webhooks";
providerObjects: readonly [{
kind: "twilioWebhook";
label: "Twilio Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Twilio Node helper library";
url: "https://www.npmjs.com/package/twilio";
}, {
label: "Twilio Programmable Voice API";
url: "https://www.twilio.com/docs/voice/api";
}, {
label: "Twilio Call Resource";
url: "https://www.twilio.com/docs/voice/api/call-resource";
}, {
label: "Twilio webhook security";
url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security";
}];
notes: readonly ["Implements normalized call-control, TwiML media stream, webhook, readiness, and raw Twilio helper-client access with the official Twilio Node helper library.", "Twilio Voice and Twilio SMS are separate Cognidesk category packages even though they use the same upstream helper library.", "Conferences, queues, recordings, transcription lifecycle, SIP trunks, Voice Insights, and ConversationRelay remain available only through raw Twilio client access or future normalized operations."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Server-side Twilio Account SID used by the helper library.";
id: "twilio-account";
label: "Twilio Account SID";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Twilio Auth Token or API key credentials used for Voice REST calls.";
id: "twilio-rest-api-credentials";
label: "Twilio REST API credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Primary Twilio Auth Token used to validate X-Twilio-Signature webhook requests.";
id: "twilio-webhook-auth-token";
label: "Twilio webhook Auth Token";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.twilio";
limitations: readonly ["Live call readiness depends on the SDK user's Twilio account, voice-capable numbers, regions, webhooks, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
sdkPackage: "twilio";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "6.0.2";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
sdkClient: {
coverage: "deprecated-raw-client-alias";
export: "getSdkClient";
};
};
name: "Twilio Programmable Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "twilioCall";
providerOperation: "twilio.validateRequest";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "twilioCall";
providerOperation: "calls.create";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.redirect";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Redirect call";
providerObject: "twilioCall";
providerOperation: "calls(sid).update";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-twilio";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, and Media Stream audio metadata are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package."];
provider: "twilio";
trustLevel: "official";
};
metadata?: Record<string, unknown>;
operationAliases: ("voice.call.start" | "voice.call.answer" | "voice.call.redirect")[];
operations: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
};
getOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
requireOperationHandler: {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias];
run: Promise<Awaited<ReturnType<{
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}[Alias]>>>;
}
| Name | Type |
|---|---|
bindingReport |
OperationBindingReport |
client |
TwilioVoiceClient |
getRawClient() |
() => Promise\<TwilioVoiceRawClient> |
getSdkClient() |
() => Promise\<TwilioVoiceRawClient> |
manifest |
{ capabilities: { audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; label?: string; metadata?: Record\<string, unknown>; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; requiresCredential?: boolean; sideEffect?: boolean; }[]; category: string; channelAudiences: ("customer-facing" | "internal-support" | "mixed")[]; coverage: { evidence: { label: string; url?: string; }[]; notes: string[]; scope: | "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api"; }; credentialRequirements: { description?: string; id: string; label?: string; metadata?: Record\<string, unknown>; required: boolean; scopes: string[]; }[]; directions: ( | "receive-only" | "send-only" | "inbound-only" | "outbound-only" | "bidirectional")[]; id: string; limitations: string[]; maintainers: { name: string; type: "community" | "official" | "unknown" | "partner"; url?: string; }[]; metadata?: Record\<string, unknown>; name: string; operations: { alias: string; audience?: "customer-facing" | "internal-support" | "mixed"; audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[]; packageName: string; privacyNotes: string[]; provider: string; trustLevel: "community" | "official" | "verified" | "experimental"; } & { capabilities: readonly [{ audiences: readonly ["customer-facing"]; capability: "receive"; description: "Accepts and parses Twilio Voice webhooks for SDK-user-owned Cognidesk voice handling."; exposesSensitiveData: true; label: "Receive voice webhooks"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing"]; capability: "send"; description: "Creates outbound calls through the Twilio helper library."; exposesSensitiveData: true; label: "Create outbound calls"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["customer-facing", "internal-support"]; capability: "media"; description: "Builds TwiML for Cognidesk-owned voice websocket media streams while preserving Twilio track constraints."; label: "Media Stream TwiML"; providerObjects: readonly [{ kind: "twilioMediaStream"; label: "Twilio Media Stream"; }]; requiresCredential: false; }, { audiences: readonly ["internal-support"]; capability: "transfer"; changesWorkflow: true; description: "Redirects or ends active Twilio calls through the Call resource."; label: "Redirect or end calls"; providerObjects: readonly [{ kind: "twilioCall"; label: "Twilio Call"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support"]; capability: "twilio.webhook-signature"; description: "Validates X-Twilio-Signature for form-encoded Twilio Voice webhooks."; exposesSensitiveData: true; extension: true; label: "Validate Twilio webhooks"; providerObjects: readonly [{ kind: "twilioWebhook"; label: "Twilio Webhook"; }]; requiresCredential: true; }]; category: "voice"; channelAudiences: readonly ["customer-facing", "mixed"]; coverage: { evidence: readonly [{ label: "Twilio Node helper library"; url: "https://www.npmjs.com/package/twilio"; }, { label: "Twilio Programmable Voice API"; url: "https://www.twilio.com/docs/voice/api"; }, { label: "Twilio Call Resource"; url: "https://www.twilio.com/docs/voice/api/call-resource"; }, { label: "Twilio webhook security"; url: "https://www.twilio.com/docs/usage/webhooks/webhooks-security"; }]; notes: readonly ["Implements normalized call-control, TwiML media stream, webhook, readiness, and raw Twilio helper-client access with the official Twilio Node helper library.", "Twilio Voice and Twilio SMS are separate Cognidesk category packages even though they use the same upstream helper library.", "Conferences, queues, recordings, transcription lifecycle, SIP trunks, Voice Insights, and ConversationRelay remain available only through raw Twilio client access or future normalized operations."]; scope: "provider-api-subset"; }; credentialRequirements: readonly [{ description: "Server-side Twilio Account SID used by the helper library."; id: "twilio-account"; label: "Twilio Account SID"; metadata: { scopeKind: "provider-permission"; }; required: true; }, { description: "Twilio Auth Token or API key credentials used for Voice REST calls."; id: "twilio-rest-api-credentials"; label: "Twilio REST API credentials"; metadata: { scopeKind: "provider-permission"; }; required: true; }, { description: "Primary Twilio Auth Token used to validate X-Twilio-Signature webhook requests."; id: "twilio-webhook-auth-token"; label: "Twilio webhook Auth Token"; metadata: { scopeKind: "provider-permission"; }; required: false; }]; directions: readonly ["inbound-only", "outbound-only", "bidirectional"]; id: "voice.twilio"; limitations: readonly ["Live call readiness depends on the SDK user's Twilio account, voice-capable numbers, regions, webhooks, and account permissions."]; maintainers: readonly [{ name: "Cognidesk"; type: "official"; }]; metadata: { implementation: { sdkPackage: "twilio"; strategy: "official-sdk"; verifiedAt: "2026-06-21"; verifiedVersion: "6.0.2"; }; rawClient: { coverage: "upstream-sdk"; export: "getRawClient"; }; sdkClient: { coverage: "deprecated-raw-client-alias"; export: "getSdkClient"; }; }; name: "Twilio Programmable Voice"; operations: readonly [{ alias: "voice.call.answer"; audiences: readonly ["customer-facing"]; capability: "receive"; exposesSensitiveData: true; label: "Receive voice webhook"; providerObject: "twilioCall"; providerOperation: "twilio.validateRequest"; }, { alias: "voice.call.start"; audiences: readonly ["customer-facing"]; capability: "send"; exposesSensitiveData: true; externallyVisible: true; label: "Create outbound call"; providerObject: "twilioCall"; providerOperation: "calls.create"; requiresApproval: true; sideEffect: true; }, { alias: "voice.call.redirect"; audiences: readonly ["internal-support"]; capability: "transfer"; changesWorkflow: true; label: "Redirect call"; providerObject: "twilioCall"; providerOperation: "calls(sid).update"; sideEffect: true; }]; packageName: "@cognidesk/integration-voice-twilio"; privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, and Media Stream audio metadata are exchanged with Twilio.", "Twilio credentials stay server-side and are never issued to browsers by this package."]; provider: "twilio"; trustLevel: "official"; } |
metadata? |
Record\<string, unknown> |
operationAliases |
("voice.call.start" | "voice.call.answer" | "voice.call.redirect")[] |
operations |
{ voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; } |
operations.voice.call.answer() |
(input) => Promise\<TwilioVoiceWebhook> |
operations.voice.call.redirect() |
(input) => Promise\<TwilioCallResource> |
operations.voice.call.start() |
(input) => Promise\<TwilioCallResource> |
getOperationHandler() |
(alias) => { voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias] |
requireOperationHandler() |
(alias) => { voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias] |
run() |
( alias, input, context?) => Promise\<Awaited\<ReturnType\<{ voice.call.answer: (input) => Promise\<TwilioVoiceWebhook>; voice.call.redirect: (input) => Promise\<TwilioCallResource>; voice.call.start: (input) => Promise\<TwilioCallResource>; }[Alias]>>> |
createTwilioVoiceOperationHandlers()¶
function createTwilioVoiceOperationHandlers(options): {
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
};
Parameters¶
| Parameter | Type |
|---|---|
options |
TwilioVoiceIntegrationOptions |
Returns¶
{
voice.call.answer: (input) => Promise<TwilioVoiceWebhook>;
voice.call.redirect: (input) => Promise<TwilioCallResource>;
voice.call.start: (input) => Promise<TwilioCallResource>;
}
| Name | Type |
|---|---|
voice.call.answer() |
(input) => Promise\<TwilioVoiceWebhook> |
voice.call.redirect() |
(input) => Promise\<TwilioCallResource> |
voice.call.start() |
(input) => Promise\<TwilioCallResource> |
parseTwilioVoiceWebhook()¶
Parameters¶
| Parameter | Type |
|---|---|
request |
Request |
options? |
ParseTwilioVoiceWebhookOptions |
Returns¶
Promise\<TwilioVoiceWebhook>
twilioVoiceCredentialStatuses()¶
function twilioVoiceCredentialStatuses(input): {
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[];
Parameters¶
| Parameter | Type |
|---|---|
input |
{ accountSid?: string; apiKeySecret?: string; apiKeySid?: string; authToken?: string; webhookAuthToken?: string; } |
input.accountSid? |
string |
input.apiKeySecret? |
string |
input.apiKeySid? |
string |
input.authToken? |
string |
input.webhookAuthToken? |
string |
Returns¶
{
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[]
validateTwilioRequestSignature()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
{ authToken: string; params: Record\<string, string>; signature: string; url: string; } |
input.authToken |
string |
input.params |
Record\<string, string> |
input.signature |
string |
input.url |
string |
Returns¶
boolean
References¶
twilioVoiceProviderManifest¶
Re-exports twilioVoiceProviderManifest