integrations/voice/vonage/dist¶
Interfaces¶
ParseVonageWebhookInput¶
Extends¶
Properties¶
expectedApiKey?¶
Inherited from¶
ParseVonageWebhookOptions.expectedApiKey
rawBody?¶
Inherited from¶
ParseVonageWebhookOptions.rawBody
request¶
requireSignature?¶
Inherited from¶
ParseVonageWebhookOptions.requireSignature
signatureSecret?¶
Inherited from¶
ParseVonageWebhookOptions.signatureSecret
ParseVonageWebhookOptions¶
Extended by¶
Properties¶
expectedApiKey?¶
rawBody?¶
requireSignature?¶
signatureSecret?¶
VonageCallResource¶
Extends¶
Indexable¶
Properties¶
direction?¶
status?¶
uuid?¶
VonageCallTransferInput¶
Properties¶
action¶
destination¶
VonageCallTransferOperationInput¶
Properties¶
transfer?¶
update?¶
uuid¶
VonageJsonObject¶
Extended by¶
Indexable¶
VonageOutboundCallInput¶
Properties¶
advancedMachineDetection?¶
answerMethod?¶
answerUrl?¶
eventMethod?¶
eventUrl?¶
from?¶
ncco?¶
randomFromNumber?¶
to¶
VonageRawClient¶
Properties¶
voice?¶
optional voice?: {
createOutboundCall: Promise<VonageCallResource>;
getCall: Promise<VonageCallResource>;
transferCallWithNCCO?: Promise<VonageCallControlResult>;
transferCallWithURL: Promise<VonageCallControlResult>;
};
createOutboundCall()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Record\<string, unknown> |
Returns¶
Promise\<VonageCallResource>
getCall()¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
Returns¶
Promise\<VonageCallResource>
transferCallWithNCCO()?¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
ncco |
VonageJsonObject[] |
Returns¶
Promise\<VonageCallControlResult>
transferCallWithURL()¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
url |
string |
Returns¶
Promise\<VonageCallControlResult>
VonageVoiceClient¶
Methods¶
createOutboundCall()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
VonageOutboundCallInput |
Returns¶
Promise\<VonageCallResource>
fetchCall()¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
Returns¶
Promise\<VonageCallResource>
getRawClient()¶
Returns¶
Promise\<VonageRawClient>
transferCall()¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
input |
VonageCallTransferInput |
Returns¶
Promise\<VonageCallControlResult>
updateCall()¶
Parameters¶
| Parameter | Type |
|---|---|
uuid |
string |
input |
VonageCallTransferInput |
Returns¶
Promise\<VonageCallControlResult>
VonageVoiceClientOptions¶
Extended by¶
Properties¶
applicationId¶
defaultEventUrl?¶
jwt?¶
jwtOptions?¶
privateKey?¶
rawClient?¶
signatureSecret?¶
VonageVoiceIntegrationOptions¶
Extends¶
Properties¶
applicationId¶
Inherited from¶
VonageVoiceClientOptions.applicationId
defaultEventUrl?¶
Inherited from¶
VonageVoiceClientOptions.defaultEventUrl
expectedApiKey?¶
jwt?¶
Inherited from¶
jwtOptions?¶
Inherited from¶
VonageVoiceClientOptions.jwtOptions
privateKey?¶
Inherited from¶
VonageVoiceClientOptions.privateKey
rawClient?¶
Inherited from¶
VonageVoiceClientOptions.rawClient
requireSignature?¶
signatureSecret?¶
Inherited from¶
VonageVoiceClientOptions.signatureSecret
voiceClient?¶
VonageWebhook¶
Properties¶
conversationUuid?¶
from?¶
raw¶
status?¶
to?¶
type¶
uuid?¶
Type Aliases¶
VonageCallControlResult¶
VonageCallTransferDestination¶
type VonageCallTransferDestination =
| {
type: "url";
url: string[];
}
| {
ncco: VonageNccoAction[];
type: "ncco";
};
VonageCallUpdateInput¶
VonageEndpoint¶
type VonageEndpoint =
| {
number: string;
type: "phone";
}
| {
type: "sip";
uri: string;
}
| {
contentType?: string;
headers?: Record<string, string>;
type: "websocket";
uri: string;
}
| {
type: "app";
user: string;
};
VonageJsonPrimitive¶
VonageJsonValue¶
VonageNccoAction¶
type VonageNccoAction =
| {
action: "talk";
bargeIn?: boolean;
text: string;
voiceName?: string;
}
| {
action: "connect";
endpoint: VonageEndpoint[];
eventUrl?: string[];
from?: string;
}
| {
action: "stream";
bargeIn?: boolean;
streamUrl: string[];
}
| {
action: "input";
eventUrl: string[];
type?: string[];
};
Variables¶
createVonageIntegration¶
createVonageIntegrationOperationHandlers¶
vonageVoiceIntegration¶
const vonageVoiceIntegration: DefinedIntegration<{
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: "Parses Vonage answer, event, and fallback callbacks.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Vonage Voice SDK.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds NCCO websocket/talk actions for Cognidesk voice sessions.";
label: "NCCO voice media";
providerObjects: readonly [{
kind: "vonageNcco";
label: "Vonage NCCO";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Transfers active calls through Vonage's documented modify-call action.";
label: "Transfer active calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "voice.webhook-signature";
description: "Validates signed Vonage callbacks when configured by the SDK user.";
exposesSensitiveData: true;
extension: true;
label: "Validate Vonage webhooks";
providerObjects: readonly [{
kind: "vonageWebhook";
label: "Vonage Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Vonage Server SDK package";
url: "https://www.npmjs.com/package/@vonage/server-sdk";
}, {
label: "Vonage Voice API reference";
url: "https://developer.vonage.com/en/api/voice";
}, {
label: "Vonage Voice webhooks";
url: "https://developer.vonage.com/en/voice/voice-api/webhook-reference";
}, {
label: "Vonage NCCO reference";
url: "https://developer.vonage.com/en/voice/voice-api/ncco-reference";
}];
notes: readonly ["Implements normalized Vonage Voice call-control, NCCO, webhook, readiness, and raw SDK access with the official Vonage server SDK.", "Raw Vonage SDK access is exposed as an escape hatch; this package does not re-export the whole SDK as Cognidesk-owned API coverage.", "Broader Vonage platform products, Client SDK behavior, consent, retention, and telephony policy remain SDK-user/provider configuration."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Vonage Application ID and private key/JWT credentials used by the official SDK.";
id: "vonage-application";
label: "Vonage application credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Optional signature secret or JWT verification setup for signed Vonage callbacks.";
id: "vonage-webhook-signature";
label: "Vonage webhook signature secret";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.vonage";
limitations: readonly ["Live call readiness depends on the SDK user's Vonage application, numbers, webhook URLs, regions, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
dependencyCaveat: "The server SDK includes multiple Vonage product modules; reassess service-specific packages before tightening dependency budgets.";
sdkPackage: "@vonage/server-sdk";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "3.27.0";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
};
name: "Vonage Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "vonageCall";
providerOperation: "parseWebhook";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "vonageCall";
providerOperation: "createOutboundCall";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.transfer";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Transfer call";
providerObject: "vonageCall";
providerOperation: "transferCallWithURL";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-vonage";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, NCCO URLs, and conversation identifiers can contain customer data and are exchanged with Vonage.", "Vonage credentials stay server-side and are never issued to browsers by this package."];
provider: "vonage";
trustLevel: "official";
}, unknown, {
voice.call.answer: (input) => Promise<VonageWebhook>;
voice.call.start: (input) => Promise<VonageCallResource>;
voice.call.transfer: (input) => Promise<VonageCallControlResult>;
}>;
Functions¶
createVonageVoiceClient()¶
Parameters¶
| Parameter | Type |
|---|---|
options |
VonageVoiceClientOptions |
Returns¶
createVonageVoiceIntegration()¶
function createVonageVoiceIntegration(options): DefinedIntegration<{
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: "Parses Vonage answer, event, and fallback callbacks.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Vonage Voice SDK.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds NCCO websocket/talk actions for Cognidesk voice sessions.";
label: "NCCO voice media";
providerObjects: readonly [{
kind: "vonageNcco";
label: "Vonage NCCO";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Transfers active calls through Vonage's documented modify-call action.";
label: "Transfer active calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "voice.webhook-signature";
description: "Validates signed Vonage callbacks when configured by the SDK user.";
exposesSensitiveData: true;
extension: true;
label: "Validate Vonage webhooks";
providerObjects: readonly [{
kind: "vonageWebhook";
label: "Vonage Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Vonage Server SDK package";
url: "https://www.npmjs.com/package/@vonage/server-sdk";
}, {
label: "Vonage Voice API reference";
url: "https://developer.vonage.com/en/api/voice";
}, {
label: "Vonage Voice webhooks";
url: "https://developer.vonage.com/en/voice/voice-api/webhook-reference";
}, {
label: "Vonage NCCO reference";
url: "https://developer.vonage.com/en/voice/voice-api/ncco-reference";
}];
notes: readonly ["Implements normalized Vonage Voice call-control, NCCO, webhook, readiness, and raw SDK access with the official Vonage server SDK.", "Raw Vonage SDK access is exposed as an escape hatch; this package does not re-export the whole SDK as Cognidesk-owned API coverage.", "Broader Vonage platform products, Client SDK behavior, consent, retention, and telephony policy remain SDK-user/provider configuration."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Vonage Application ID and private key/JWT credentials used by the official SDK.";
id: "vonage-application";
label: "Vonage application credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Optional signature secret or JWT verification setup for signed Vonage callbacks.";
id: "vonage-webhook-signature";
label: "Vonage webhook signature secret";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.vonage";
limitations: readonly ["Live call readiness depends on the SDK user's Vonage application, numbers, webhook URLs, regions, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
dependencyCaveat: "The server SDK includes multiple Vonage product modules; reassess service-specific packages before tightening dependency budgets.";
sdkPackage: "@vonage/server-sdk";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "3.27.0";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
};
name: "Vonage Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "vonageCall";
providerOperation: "parseWebhook";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "vonageCall";
providerOperation: "createOutboundCall";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.transfer";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Transfer call";
providerObject: "vonageCall";
providerOperation: "transferCallWithURL";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-vonage";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, NCCO URLs, and conversation identifiers can contain customer data and are exchanged with Vonage.", "Vonage credentials stay server-side and are never issued to browsers by this package."];
provider: "vonage";
trustLevel: "official";
}, unknown, {
voice.call.answer: (input) => Promise<VonageWebhook>;
voice.call.start: (input) => Promise<VonageCallResource>;
voice.call.transfer: (input) => Promise<VonageCallControlResult>;
}>;
Parameters¶
| Parameter | Type |
|---|---|
options |
VonageVoiceIntegrationOptions |
Returns¶
DefinedIntegration\<{
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: "Parses Vonage answer, event, and fallback callbacks.";
exposesSensitiveData: true;
label: "Receive voice webhooks";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing"];
capability: "send";
description: "Creates outbound calls through the Vonage Voice SDK.";
exposesSensitiveData: true;
label: "Create outbound calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["customer-facing", "internal-support"];
capability: "media";
description: "Builds NCCO websocket/talk actions for Cognidesk voice sessions.";
label: "NCCO voice media";
providerObjects: readonly [{
kind: "vonageNcco";
label: "Vonage NCCO";
}];
requiresCredential: false;
}, {
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
description: "Transfers active calls through Vonage's documented modify-call action.";
label: "Transfer active calls";
providerObjects: readonly [{
kind: "vonageCall";
label: "Vonage Call";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support"];
capability: "voice.webhook-signature";
description: "Validates signed Vonage callbacks when configured by the SDK user.";
exposesSensitiveData: true;
extension: true;
label: "Validate Vonage webhooks";
providerObjects: readonly [{
kind: "vonageWebhook";
label: "Vonage Webhook";
}];
requiresCredential: true;
}];
category: "voice";
channelAudiences: readonly ["customer-facing", "mixed"];
coverage: {
evidence: readonly [{
label: "Vonage Server SDK package";
url: "https://www.npmjs.com/package/@vonage/server-sdk";
}, {
label: "Vonage Voice API reference";
url: "https://developer.vonage.com/en/api/voice";
}, {
label: "Vonage Voice webhooks";
url: "https://developer.vonage.com/en/voice/voice-api/webhook-reference";
}, {
label: "Vonage NCCO reference";
url: "https://developer.vonage.com/en/voice/voice-api/ncco-reference";
}];
notes: readonly ["Implements normalized Vonage Voice call-control, NCCO, webhook, readiness, and raw SDK access with the official Vonage server SDK.", "Raw Vonage SDK access is exposed as an escape hatch; this package does not re-export the whole SDK as Cognidesk-owned API coverage.", "Broader Vonage platform products, Client SDK behavior, consent, retention, and telephony policy remain SDK-user/provider configuration."];
scope: "provider-api-subset";
};
credentialRequirements: readonly [{
description: "Vonage Application ID and private key/JWT credentials used by the official SDK.";
id: "vonage-application";
label: "Vonage application credentials";
metadata: {
scopeKind: "provider-permission";
};
required: true;
}, {
description: "Optional signature secret or JWT verification setup for signed Vonage callbacks.";
id: "vonage-webhook-signature";
label: "Vonage webhook signature secret";
metadata: {
scopeKind: "provider-permission";
};
required: false;
}];
directions: readonly ["inbound-only", "outbound-only", "bidirectional"];
id: "voice.vonage";
limitations: readonly ["Live call readiness depends on the SDK user's Vonage application, numbers, webhook URLs, regions, and account permissions."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
implementation: {
dependencyCaveat: "The server SDK includes multiple Vonage product modules; reassess service-specific packages before tightening dependency budgets.";
sdkPackage: "@vonage/server-sdk";
strategy: "official-sdk";
verifiedAt: "2026-06-21";
verifiedVersion: "3.27.0";
};
rawClient: {
coverage: "upstream-sdk";
export: "getRawClient";
};
};
name: "Vonage Voice";
operations: readonly [{
alias: "voice.call.answer";
audiences: readonly ["customer-facing"];
capability: "receive";
exposesSensitiveData: true;
label: "Receive voice webhook";
providerObject: "vonageCall";
providerOperation: "parseWebhook";
}, {
alias: "voice.call.start";
audiences: readonly ["customer-facing"];
capability: "send";
exposesSensitiveData: true;
externallyVisible: true;
label: "Create outbound call";
providerObject: "vonageCall";
providerOperation: "createOutboundCall";
requiresApproval: true;
sideEffect: true;
}, {
alias: "voice.call.transfer";
audiences: readonly ["internal-support"];
capability: "transfer";
changesWorkflow: true;
label: "Transfer call";
providerObject: "vonageCall";
providerOperation: "transferCallWithURL";
sideEffect: true;
}];
packageName: "@cognidesk/integration-voice-vonage";
privacyNotes: readonly ["Phone numbers, call metadata, webhook parameters, NCCO URLs, and conversation identifiers can contain customer data and are exchanged with Vonage.", "Vonage credentials stay server-side and are never issued to browsers by this package."];
provider: "vonage";
trustLevel: "official";
}, unknown, {
voice.call.answer: (input) => Promise\<VonageWebhook>;
voice.call.start: (input) => Promise\<VonageCallResource>;
voice.call.transfer: (input) => Promise\<VonageCallControlResult>;
}>
createVonageVoiceOperationHandlers()¶
function createVonageVoiceOperationHandlers(options): {
voice.call.answer: (input) => Promise<VonageWebhook>;
voice.call.start: (input) => Promise<VonageCallResource>;
voice.call.transfer: (input) => Promise<VonageCallControlResult>;
};
Parameters¶
| Parameter | Type |
|---|---|
options |
VonageVoiceIntegrationOptions |
Returns¶
{
voice.call.answer: (input) => Promise<VonageWebhook>;
voice.call.start: (input) => Promise<VonageCallResource>;
voice.call.transfer: (input) => Promise<VonageCallControlResult>;
}
| Name | Type |
|---|---|
voice.call.answer() |
(input) => Promise\<VonageWebhook> |
voice.call.start() |
(input) => Promise\<VonageCallResource> |
voice.call.transfer() |
(input) => Promise\<VonageCallControlResult> |
createVonageWebSocketNcco()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
{ contentType?: string; headers?: Record\<string, string>; websocketUrl: string; } |
input.contentType? |
string |
input.headers? |
Record\<string, string> |
input.websocketUrl |
string |
Returns¶
parseVonageWebhook()¶
Parameters¶
| Parameter | Type |
|---|---|
request |
Request |
options? |
ParseVonageWebhookOptions |
Returns¶
Promise\<VonageWebhook>
verifyVonageWebhookJwt()¶
Parameters¶
| Parameter | Type |
|---|---|
token |
string |
signatureSecret |
string |
expectedApiKey? |
string |
Returns¶
verifyVonageWebhookPayload()¶
Parameters¶
| Parameter | Type |
|---|---|
rawBody |
string |
claims |
VonageJsonObject |
Returns¶
boolean
vonageVoiceCredentialStatuses()¶
function vonageVoiceCredentialStatuses(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 |
{ applicationId?: string; jwt?: string; privateKey?: string; signatureSecret?: string; } |
input.applicationId? |
string |
input.jwt? |
string |
input.privateKey? |
string |
input.signatureSecret? |
string |
Returns¶
{
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[]
References¶
vonageVoiceProviderManifest¶
Re-exports vonageVoiceProviderManifest