livekit-server-sdk 2.9.4 → 2.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SipClient.cjs +49 -90
- package/dist/SipClient.cjs.map +1 -1
- package/dist/SipClient.d.cts +31 -1
- package/dist/SipClient.d.ts +31 -0
- package/dist/SipClient.d.ts.map +1 -1
- package/dist/SipClient.js +49 -90
- package/dist/SipClient.js.map +1 -1
- package/package.json +5 -5
- package/src/SipClient.ts +78 -98
package/dist/SipClient.cjs
CHANGED
|
@@ -88,33 +88,22 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
88
88
|
* @param opts - CreateSipTrunkOptions
|
|
89
89
|
*/
|
|
90
90
|
async createSipInboundTrunk(name, numbers, opts) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
let authUsername = "";
|
|
94
|
-
let authPassword = "";
|
|
95
|
-
let metadata = "";
|
|
96
|
-
let headers = {};
|
|
97
|
-
let headersToAttributes = {};
|
|
98
|
-
if (opts !== void 0) {
|
|
99
|
-
allowedAddresses = opts.allowed_addresses;
|
|
100
|
-
allowedNumbers = opts.allowed_numbers;
|
|
101
|
-
authUsername = opts.auth_username || "";
|
|
102
|
-
authPassword = opts.auth_password || "";
|
|
103
|
-
metadata = opts.metadata || "";
|
|
104
|
-
headers = opts.headers || {};
|
|
105
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
91
|
+
if (opts === void 0) {
|
|
92
|
+
opts = {};
|
|
106
93
|
}
|
|
107
94
|
const req = new import_protocol.CreateSIPInboundTrunkRequest({
|
|
108
95
|
trunk: new import_protocol.SIPInboundTrunkInfo({
|
|
109
96
|
name,
|
|
110
97
|
numbers,
|
|
111
|
-
metadata,
|
|
112
|
-
allowedAddresses,
|
|
113
|
-
allowedNumbers,
|
|
114
|
-
authUsername,
|
|
115
|
-
authPassword,
|
|
116
|
-
headers,
|
|
117
|
-
headersToAttributes
|
|
98
|
+
metadata: opts == null ? void 0 : opts.metadata,
|
|
99
|
+
allowedAddresses: opts.allowedAddresses ?? opts.allowed_addresses,
|
|
100
|
+
allowedNumbers: opts.allowedNumbers ?? opts.allowed_numbers,
|
|
101
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
102
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
103
|
+
headers: opts.headers,
|
|
104
|
+
headersToAttributes: opts.headersToAttributes,
|
|
105
|
+
includeHeaders: opts.includeHeaders,
|
|
106
|
+
krispEnabled: opts.krispEnabled
|
|
118
107
|
})
|
|
119
108
|
}).toJson();
|
|
120
109
|
const data = await this.rpc.request(
|
|
@@ -132,31 +121,23 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
132
121
|
* @param opts - CreateSipTrunkOptions
|
|
133
122
|
*/
|
|
134
123
|
async createSipOutboundTrunk(name, address, numbers, opts) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
let headers = {};
|
|
140
|
-
let headersToAttributes = {};
|
|
141
|
-
if (opts !== void 0) {
|
|
142
|
-
authUsername = opts.auth_username || "";
|
|
143
|
-
authPassword = opts.auth_password || "";
|
|
144
|
-
transport = opts.transport || import_protocol.SIPTransport.SIP_TRANSPORT_AUTO;
|
|
145
|
-
metadata = opts.metadata || "";
|
|
146
|
-
headers = opts.headers || {};
|
|
147
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
124
|
+
if (opts === void 0) {
|
|
125
|
+
opts = {
|
|
126
|
+
transport: import_protocol.SIPTransport.SIP_TRANSPORT_AUTO
|
|
127
|
+
};
|
|
148
128
|
}
|
|
149
129
|
const req = new import_protocol.CreateSIPOutboundTrunkRequest({
|
|
150
130
|
trunk: new import_protocol.SIPOutboundTrunkInfo({
|
|
151
131
|
name,
|
|
152
132
|
address,
|
|
153
133
|
numbers,
|
|
154
|
-
metadata,
|
|
155
|
-
transport,
|
|
156
|
-
authUsername,
|
|
157
|
-
authPassword,
|
|
158
|
-
headers,
|
|
159
|
-
headersToAttributes
|
|
134
|
+
metadata: opts.metadata,
|
|
135
|
+
transport: opts.transport,
|
|
136
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
137
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
138
|
+
headers: opts.headers,
|
|
139
|
+
headersToAttributes: opts.headersToAttributes,
|
|
140
|
+
includeHeaders: opts.includeHeaders
|
|
160
141
|
})
|
|
161
142
|
}).toJson();
|
|
162
143
|
const data = await this.rpc.request(
|
|
@@ -217,17 +198,10 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
217
198
|
* @param opts - CreateSipDispatchRuleOptions
|
|
218
199
|
*/
|
|
219
200
|
async createSipDispatchRule(rule, opts) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
let name = "";
|
|
223
|
-
let metadata = "";
|
|
224
|
-
let ruleProto = void 0;
|
|
225
|
-
if (opts !== void 0) {
|
|
226
|
-
trunkIds = opts.trunkIds;
|
|
227
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
228
|
-
name = opts.name || "";
|
|
229
|
-
metadata = opts.metadata || "";
|
|
201
|
+
if (opts === void 0) {
|
|
202
|
+
opts = {};
|
|
230
203
|
}
|
|
204
|
+
let ruleProto = void 0;
|
|
231
205
|
if (rule.type == "direct") {
|
|
232
206
|
ruleProto = new import_protocol.SIPDispatchRule({
|
|
233
207
|
rule: {
|
|
@@ -251,10 +225,13 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
251
225
|
}
|
|
252
226
|
const req = new import_protocol.CreateSIPDispatchRuleRequest({
|
|
253
227
|
rule: ruleProto,
|
|
254
|
-
trunkIds,
|
|
255
|
-
hidePhoneNumber,
|
|
256
|
-
name,
|
|
257
|
-
metadata
|
|
228
|
+
trunkIds: opts.trunkIds,
|
|
229
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
230
|
+
name: opts.name,
|
|
231
|
+
metadata: opts.metadata,
|
|
232
|
+
attributes: opts.attributes,
|
|
233
|
+
roomPreset: opts.roomPreset,
|
|
234
|
+
roomConfig: opts.roomConfig
|
|
258
235
|
}).toJson();
|
|
259
236
|
const data = await this.rpc.request(
|
|
260
237
|
svc,
|
|
@@ -293,42 +270,24 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
293
270
|
* @param opts - CreateSipParticipantOptions
|
|
294
271
|
*/
|
|
295
272
|
async createSipParticipant(sipTrunkId, number, roomName, opts) {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
let participantMetadata = "";
|
|
299
|
-
let dtmf = "";
|
|
300
|
-
let playRingtone = false;
|
|
301
|
-
let playDialtone = false;
|
|
302
|
-
let hidePhoneNumber = false;
|
|
303
|
-
let ringingTimeout = void 0;
|
|
304
|
-
let maxCallDuration = void 0;
|
|
305
|
-
let enableKrisp = void 0;
|
|
306
|
-
if (opts !== void 0) {
|
|
307
|
-
participantIdentity = opts.participantIdentity || "";
|
|
308
|
-
participantName = opts.participantName || "";
|
|
309
|
-
participantMetadata = opts.participantMetadata || "";
|
|
310
|
-
dtmf = opts.dtmf || "";
|
|
311
|
-
playRingtone = opts.playRingtone || false;
|
|
312
|
-
playDialtone = opts.playDialtone || playRingtone;
|
|
313
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
314
|
-
ringingTimeout = opts.ringingTimeout || void 0;
|
|
315
|
-
maxCallDuration = opts.maxCallDuration || void 0;
|
|
316
|
-
enableKrisp = opts.enableKrisp || void 0;
|
|
273
|
+
if (opts === void 0) {
|
|
274
|
+
opts = {};
|
|
317
275
|
}
|
|
318
276
|
const req = new import_protocol.CreateSIPParticipantRequest({
|
|
319
277
|
sipTrunkId,
|
|
320
278
|
sipCallTo: number,
|
|
321
279
|
roomName,
|
|
322
|
-
participantIdentity,
|
|
323
|
-
participantName,
|
|
324
|
-
participantMetadata,
|
|
325
|
-
dtmf,
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
hidePhoneNumber,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
280
|
+
participantIdentity: opts.participantIdentity || "sip-participant",
|
|
281
|
+
participantName: opts.participantName,
|
|
282
|
+
participantMetadata: opts.participantMetadata,
|
|
283
|
+
dtmf: opts.dtmf,
|
|
284
|
+
playDialtone: opts.playDialtone ?? opts.playRingtone,
|
|
285
|
+
headers: opts.headers,
|
|
286
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
287
|
+
includeHeaders: opts.includeHeaders,
|
|
288
|
+
ringingTimeout: opts.ringingTimeout ? new import_protobuf.Duration({ seconds: BigInt(opts.ringingTimeout) }) : void 0,
|
|
289
|
+
maxCallDuration: opts.maxCallDuration ? new import_protobuf.Duration({ seconds: BigInt(opts.maxCallDuration) }) : void 0,
|
|
290
|
+
enableKrisp: opts.enableKrisp
|
|
332
291
|
}).toJson();
|
|
333
292
|
const data = await this.rpc.request(
|
|
334
293
|
svc,
|
|
@@ -344,15 +303,15 @@ class SipClient extends import_ServiceBase.ServiceBase {
|
|
|
344
303
|
* @param transferTo - SIP URL to transfer the participant to
|
|
345
304
|
*/
|
|
346
305
|
async transferSipParticipant(roomName, participantIdentity, transferTo, opts) {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
playDialtone = opts.playDialtone || false;
|
|
306
|
+
if (opts === void 0) {
|
|
307
|
+
opts = {};
|
|
350
308
|
}
|
|
351
309
|
const req = new import_protocol.TransferSIPParticipantRequest({
|
|
352
310
|
participantIdentity,
|
|
353
311
|
roomName,
|
|
354
312
|
transferTo,
|
|
355
|
-
playDialtone
|
|
313
|
+
playDialtone: opts.playDialtone,
|
|
314
|
+
headers: opts.headers
|
|
356
315
|
}).toJson();
|
|
357
316
|
await this.rpc.request(
|
|
358
317
|
svc,
|
package/dist/SipClient.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SipClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { Duration } from '@bufbuild/protobuf';\nimport {\n CreateSIPDispatchRuleRequest,\n CreateSIPInboundTrunkRequest,\n CreateSIPOutboundTrunkRequest,\n CreateSIPParticipantRequest,\n CreateSIPTrunkRequest,\n DeleteSIPDispatchRuleRequest,\n DeleteSIPTrunkRequest,\n ListSIPDispatchRuleRequest,\n ListSIPDispatchRuleResponse,\n ListSIPInboundTrunkRequest,\n ListSIPInboundTrunkResponse,\n ListSIPOutboundTrunkRequest,\n ListSIPOutboundTrunkResponse,\n ListSIPTrunkRequest,\n ListSIPTrunkResponse,\n SIPDispatchRule,\n SIPDispatchRuleDirect,\n SIPDispatchRuleIndividual,\n SIPDispatchRuleInfo,\n SIPInboundTrunkInfo,\n SIPOutboundTrunkInfo,\n SIPParticipantInfo,\n SIPTransport,\n SIPTrunkInfo,\n TransferSIPParticipantRequest,\n} from '@livekit/protocol';\nimport { ServiceBase } from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'SIP';\n\n/**\n * @deprecated use CreateSipInboundTrunkOptions or CreateSipOutboundTrunkOptions\n */\nexport interface CreateSipTrunkOptions {\n name?: string;\n metadata?: string;\n inbound_addresses?: string[];\n inbound_numbers?: string[];\n inbound_username?: string;\n inbound_password?: string;\n outbound_address?: string;\n outbound_username?: string;\n outbound_password?: string;\n}\nexport interface CreateSipInboundTrunkOptions {\n metadata?: string;\n allowed_addresses?: string[];\n allowed_numbers?: string[];\n auth_username?: string;\n auth_password?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n}\nexport interface CreateSipOutboundTrunkOptions {\n metadata?: string;\n transport: SIPTransport;\n auth_username?: string;\n auth_password?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n}\n\nexport interface SipDispatchRuleDirect {\n type: 'direct';\n roomName: string;\n pin?: string;\n}\n\nexport interface SipDispatchRuleIndividual {\n type: 'individual';\n roomPrefix: string;\n pin?: string;\n}\n\nexport interface CreateSipDispatchRuleOptions {\n name?: string;\n metadata?: string;\n trunkIds?: string[];\n hidePhoneNumber?: boolean;\n}\n\nexport interface CreateSipParticipantOptions {\n participantIdentity?: string;\n participantName?: string;\n participantMetadata?: string;\n dtmf?: string;\n /** @deprecated - use `playDialtone` instead */\n playRingtone?: boolean; // Deprecated, use playDialtone instead\n playDialtone?: boolean;\n hidePhoneNumber?: boolean;\n ringingTimeout?: number; // Duration in seconds\n maxCallDuration?: number; // Duration in seconds\n enableKrisp?: boolean;\n}\n\nexport interface TransferSipParticipantOptions {\n playDialtone?: boolean;\n}\n\n/**\n * Client to access Egress APIs\n */\nexport class SipClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param number - phone number of the trunk\n * @param opts - CreateSipTrunkOptions\n * @deprecated use `createSipInboundTrunk` or `createSipOutboundTrunk`\n */\n async createSipTrunk(number: string, opts?: CreateSipTrunkOptions): Promise<SIPTrunkInfo> {\n let inboundAddresses: string[] | undefined;\n let inboundNumbers: string[] | undefined;\n let inboundUsername: string = '';\n let inboundPassword: string = '';\n let outboundAddress: string = '';\n let outboundUsername: string = '';\n let outboundPassword: string = '';\n let name: string = '';\n let metadata: string = '';\n\n if (opts !== undefined) {\n inboundAddresses = opts.inbound_addresses;\n inboundNumbers = opts.inbound_numbers;\n inboundUsername = opts.inbound_username || '';\n inboundPassword = opts.inbound_password || '';\n outboundAddress = opts.outbound_address || '';\n outboundUsername = opts.outbound_username || '';\n outboundPassword = opts.outbound_password || '';\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n\n const req = new CreateSIPTrunkRequest({\n name: name,\n metadata: metadata,\n inboundAddresses: inboundAddresses,\n inboundNumbers: inboundNumbers,\n inboundUsername: inboundUsername,\n inboundPassword: inboundPassword,\n outboundNumber: number,\n outboundAddress: outboundAddress,\n outboundUsername: outboundUsername,\n outboundPassword: outboundPassword,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipInboundTrunk(\n name: string,\n numbers: string[],\n opts?: CreateSipInboundTrunkOptions,\n ): Promise<SIPInboundTrunkInfo> {\n let allowedAddresses: string[] | undefined;\n let allowedNumbers: string[] | undefined;\n let authUsername: string = '';\n let authPassword: string = '';\n let metadata: string = '';\n let headers: { [key: string]: string } = {};\n let headersToAttributes: { [key: string]: string } = {};\n\n if (opts !== undefined) {\n allowedAddresses = opts.allowed_addresses;\n allowedNumbers = opts.allowed_numbers;\n authUsername = opts.auth_username || '';\n authPassword = opts.auth_password || '';\n metadata = opts.metadata || '';\n headers = opts.headers || {};\n headersToAttributes = opts.headersToAttributes || {};\n }\n\n const req = new CreateSIPInboundTrunkRequest({\n trunk: new SIPInboundTrunkInfo({\n name: name,\n numbers: numbers,\n metadata: metadata,\n allowedAddresses: allowedAddresses,\n allowedNumbers: allowedNumbers,\n authUsername: authUsername,\n authPassword: authPassword,\n headers: headers,\n headersToAttributes: headersToAttributes,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPInboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPInboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param address - hostname and port of the SIP server to dial\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipOutboundTrunk(\n name: string,\n address: string,\n numbers: string[],\n opts?: CreateSipOutboundTrunkOptions,\n ): Promise<SIPOutboundTrunkInfo> {\n let authUsername: string = '';\n let authPassword: string = '';\n let transport: SIPTransport = SIPTransport.SIP_TRANSPORT_AUTO;\n let metadata: string = '';\n let headers: { [key: string]: string } = {};\n let headersToAttributes: { [key: string]: string } = {};\n\n if (opts !== undefined) {\n authUsername = opts.auth_username || '';\n authPassword = opts.auth_password || '';\n transport = opts.transport || SIPTransport.SIP_TRANSPORT_AUTO;\n metadata = opts.metadata || '';\n headers = opts.headers || {};\n headersToAttributes = opts.headersToAttributes || {};\n }\n\n const req = new CreateSIPOutboundTrunkRequest({\n trunk: new SIPOutboundTrunkInfo({\n name: name,\n address: address,\n numbers: numbers,\n metadata: metadata,\n transport: transport,\n authUsername: authUsername,\n authPassword: authPassword,\n headers: headers,\n headersToAttributes: headersToAttributes,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPOutboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPOutboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listSipInboundTrunk` or `listSipOutboundTrunk`\n */\n async listSipTrunk(): Promise<Array<SIPTrunkInfo>> {\n const req: Partial<ListSIPTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPTrunk',\n new ListSIPTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipInboundTrunk(): Promise<Array<SIPInboundTrunkInfo>> {\n const req: Partial<ListSIPInboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPInboundTrunk',\n new ListSIPInboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPInboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipOutboundTrunk(): Promise<Array<SIPOutboundTrunkInfo>> {\n const req: Partial<ListSIPOutboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPOutboundTrunk',\n new ListSIPOutboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPOutboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipTrunkId - sip trunk to delete\n */\n async deleteSipTrunk(sipTrunkId: string): Promise<SIPTrunkInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPTrunk',\n new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param rule - sip dispatch rule\n * @param opts - CreateSipDispatchRuleOptions\n */\n async createSipDispatchRule(\n rule: SipDispatchRuleDirect | SipDispatchRuleIndividual,\n opts?: CreateSipDispatchRuleOptions,\n ): Promise<SIPDispatchRuleInfo> {\n let trunkIds: string[] | undefined;\n let hidePhoneNumber: boolean = false;\n let name: string = '';\n let metadata: string = '';\n let ruleProto: SIPDispatchRule | undefined = undefined;\n\n if (opts !== undefined) {\n trunkIds = opts.trunkIds;\n hidePhoneNumber = opts.hidePhoneNumber || false;\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n if (rule.type == 'direct') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleDirect',\n value: new SIPDispatchRuleDirect({\n roomName: rule.roomName,\n pin: rule.pin || '',\n }),\n },\n });\n } else if (rule.type == 'individual') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleIndividual',\n value: new SIPDispatchRuleIndividual({\n roomPrefix: rule.roomPrefix,\n pin: rule.pin || '',\n }),\n },\n });\n }\n\n const req = new CreateSIPDispatchRuleRequest({\n rule: ruleProto,\n trunkIds: trunkIds,\n hidePhoneNumber: hidePhoneNumber,\n name: name,\n metadata: metadata,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPDispatchRule',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n async listSipDispatchRule(): Promise<Array<SIPDispatchRuleInfo>> {\n const req: Partial<ListSIPDispatchRuleRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPDispatchRule',\n new ListSIPDispatchRuleRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipDispatchRuleId - sip trunk to delete\n */\n async deleteSipDispatchRule(sipDispatchRuleId: string): Promise<SIPDispatchRuleInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPDispatchRule',\n new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param sipTrunkId - sip trunk to use for the call\n * @param number - number to dial\n * @param roomName - room to attach the call to\n * @param opts - CreateSipParticipantOptions\n */\n async createSipParticipant(\n sipTrunkId: string,\n number: string,\n roomName: string,\n opts?: CreateSipParticipantOptions,\n ): Promise<SIPParticipantInfo> {\n let participantIdentity: string = '';\n let participantName: string = '';\n let participantMetadata: string = '';\n let dtmf: string = '';\n let playRingtone: boolean = false;\n let playDialtone: boolean = false;\n let hidePhoneNumber: boolean = false;\n let ringingTimeout: number | undefined = undefined;\n let maxCallDuration: number | undefined = undefined;\n let enableKrisp: boolean | undefined = undefined;\n\n if (opts !== undefined) {\n participantIdentity = opts.participantIdentity || '';\n participantName = opts.participantName || '';\n participantMetadata = opts.participantMetadata || '';\n dtmf = opts.dtmf || '';\n playRingtone = opts.playRingtone || false;\n playDialtone = opts.playDialtone || playRingtone; // Enable PlayDialtone if either PlayDialtone or playRingtone is set\n hidePhoneNumber = opts.hidePhoneNumber || false;\n ringingTimeout = opts.ringingTimeout || undefined;\n maxCallDuration = opts.maxCallDuration || undefined;\n enableKrisp = opts.enableKrisp || undefined;\n }\n\n const req = new CreateSIPParticipantRequest({\n sipTrunkId: sipTrunkId,\n sipCallTo: number,\n roomName: roomName,\n participantIdentity: participantIdentity,\n participantName: participantName,\n participantMetadata: participantMetadata,\n dtmf: dtmf,\n playRingtone: playDialtone,\n playDialtone: playDialtone,\n hidePhoneNumber: hidePhoneNumber,\n ringingTimeout: ringingTimeout\n ? new Duration({ seconds: BigInt(ringingTimeout) })\n : undefined,\n maxCallDuration: maxCallDuration\n ? new Duration({ seconds: BigInt(maxCallDuration) })\n : undefined,\n enableKrisp: enableKrisp,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPParticipant',\n req,\n await this.authHeader({}, { call: true }),\n );\n return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param roomName - room the SIP participant to transfer is connectd to\n * @param participantIdentity - identity of the SIP participant to transfer\n * @param transferTo - SIP URL to transfer the participant to\n */\n async transferSipParticipant(\n roomName: string,\n participantIdentity: string,\n transferTo: string,\n opts?: TransferSipParticipantOptions,\n ): Promise<void> {\n let playDialtone: boolean = false;\n\n if (opts !== undefined) {\n playDialtone = opts.playDialtone || false;\n }\n\n const req = new TransferSIPParticipantRequest({\n participantIdentity: participantIdentity,\n roomName: roomName,\n transferTo: transferTo,\n playDialtone: playDialtone,\n }).toJson();\n\n await this.rpc.request(\n svc,\n 'TransferSIPParticipant',\n req,\n await this.authHeader({ roomAdmin: true, room: roomName }, { call: true }),\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/SipClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { Duration } from '@bufbuild/protobuf';\nimport type { RoomConfiguration, SIPHeaderOptions } from '@livekit/protocol';\nimport {\n CreateSIPDispatchRuleRequest,\n CreateSIPInboundTrunkRequest,\n CreateSIPOutboundTrunkRequest,\n CreateSIPParticipantRequest,\n CreateSIPTrunkRequest,\n DeleteSIPDispatchRuleRequest,\n DeleteSIPTrunkRequest,\n ListSIPDispatchRuleRequest,\n ListSIPDispatchRuleResponse,\n ListSIPInboundTrunkRequest,\n ListSIPInboundTrunkResponse,\n ListSIPOutboundTrunkRequest,\n ListSIPOutboundTrunkResponse,\n ListSIPTrunkRequest,\n ListSIPTrunkResponse,\n SIPDispatchRule,\n SIPDispatchRuleDirect,\n SIPDispatchRuleIndividual,\n SIPDispatchRuleInfo,\n SIPInboundTrunkInfo,\n SIPOutboundTrunkInfo,\n SIPParticipantInfo,\n SIPTransport,\n SIPTrunkInfo,\n TransferSIPParticipantRequest,\n} from '@livekit/protocol';\nimport { ServiceBase } from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'SIP';\n\n/**\n * @deprecated use CreateSipInboundTrunkOptions or CreateSipOutboundTrunkOptions\n */\nexport interface CreateSipTrunkOptions {\n name?: string;\n metadata?: string;\n inbound_addresses?: string[];\n inbound_numbers?: string[];\n inbound_username?: string;\n inbound_password?: string;\n outbound_address?: string;\n outbound_username?: string;\n outbound_password?: string;\n}\nexport interface CreateSipInboundTrunkOptions {\n metadata?: string;\n /** @deprecated - use `allowedAddresses` instead */\n allowed_addresses?: string[];\n allowedAddresses?: string[];\n /** @deprecated - use `allowedNumbers` instead */\n allowed_numbers?: string[];\n allowedNumbers?: string[];\n /** @deprecated - use `authUsername` instead */\n auth_username?: string;\n authUsername?: string;\n /** @deprecated - use `authPassword` instead */\n auth_password?: string;\n authPassword?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n krispEnabled?: boolean;\n}\nexport interface CreateSipOutboundTrunkOptions {\n metadata?: string;\n transport: SIPTransport;\n /** @deprecated - use `authUsername` instead */\n auth_username?: string;\n authUsername?: string;\n /** @deprecated - use `authPassword` instead */\n auth_password?: string;\n authPassword?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n}\n\nexport interface SipDispatchRuleDirect {\n type: 'direct';\n roomName: string;\n pin?: string;\n}\n\nexport interface SipDispatchRuleIndividual {\n type: 'individual';\n roomPrefix: string;\n pin?: string;\n}\n\nexport interface CreateSipDispatchRuleOptions {\n name?: string;\n metadata?: string;\n trunkIds?: string[];\n hidePhoneNumber?: boolean;\n attributes?: { [key: string]: string };\n roomPreset?: string;\n roomConfig?: RoomConfiguration;\n}\n\nexport interface CreateSipParticipantOptions {\n participantIdentity?: string;\n participantName?: string;\n participantMetadata?: string;\n participantAttributes?: { [key: string]: string };\n dtmf?: string;\n /** @deprecated - use `playDialtone` instead */\n playRingtone?: boolean; // Deprecated, use playDialtone instead\n playDialtone?: boolean;\n // These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.\n headers?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n hidePhoneNumber?: boolean;\n ringingTimeout?: number; // Duration in seconds\n maxCallDuration?: number; // Duration in seconds\n enableKrisp?: boolean;\n}\n\nexport interface TransferSipParticipantOptions {\n playDialtone?: boolean;\n headers?: { [key: string]: string };\n}\n\n/**\n * Client to access Egress APIs\n */\nexport class SipClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param number - phone number of the trunk\n * @param opts - CreateSipTrunkOptions\n * @deprecated use `createSipInboundTrunk` or `createSipOutboundTrunk`\n */\n async createSipTrunk(number: string, opts?: CreateSipTrunkOptions): Promise<SIPTrunkInfo> {\n let inboundAddresses: string[] | undefined;\n let inboundNumbers: string[] | undefined;\n let inboundUsername: string = '';\n let inboundPassword: string = '';\n let outboundAddress: string = '';\n let outboundUsername: string = '';\n let outboundPassword: string = '';\n let name: string = '';\n let metadata: string = '';\n\n if (opts !== undefined) {\n inboundAddresses = opts.inbound_addresses;\n inboundNumbers = opts.inbound_numbers;\n inboundUsername = opts.inbound_username || '';\n inboundPassword = opts.inbound_password || '';\n outboundAddress = opts.outbound_address || '';\n outboundUsername = opts.outbound_username || '';\n outboundPassword = opts.outbound_password || '';\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n\n const req = new CreateSIPTrunkRequest({\n name: name,\n metadata: metadata,\n inboundAddresses: inboundAddresses,\n inboundNumbers: inboundNumbers,\n inboundUsername: inboundUsername,\n inboundPassword: inboundPassword,\n outboundNumber: number,\n outboundAddress: outboundAddress,\n outboundUsername: outboundUsername,\n outboundPassword: outboundPassword,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipInboundTrunk(\n name: string,\n numbers: string[],\n opts?: CreateSipInboundTrunkOptions,\n ): Promise<SIPInboundTrunkInfo> {\n if (opts === undefined) {\n opts = {};\n }\n const req = new CreateSIPInboundTrunkRequest({\n trunk: new SIPInboundTrunkInfo({\n name: name,\n numbers: numbers,\n metadata: opts?.metadata,\n allowedAddresses: opts.allowedAddresses ?? opts.allowed_addresses,\n allowedNumbers: opts.allowedNumbers ?? opts.allowed_numbers,\n authUsername: opts.authUsername ?? opts.auth_username,\n authPassword: opts.authPassword ?? opts.auth_password,\n headers: opts.headers,\n headersToAttributes: opts.headersToAttributes,\n includeHeaders: opts.includeHeaders,\n krispEnabled: opts.krispEnabled,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPInboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPInboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param address - hostname and port of the SIP server to dial\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipOutboundTrunk(\n name: string,\n address: string,\n numbers: string[],\n opts?: CreateSipOutboundTrunkOptions,\n ): Promise<SIPOutboundTrunkInfo> {\n if (opts === undefined) {\n opts = {\n transport: SIPTransport.SIP_TRANSPORT_AUTO,\n };\n }\n\n const req = new CreateSIPOutboundTrunkRequest({\n trunk: new SIPOutboundTrunkInfo({\n name: name,\n address: address,\n numbers: numbers,\n metadata: opts.metadata,\n transport: opts.transport,\n authUsername: opts.authUsername ?? opts.auth_username,\n authPassword: opts.authPassword ?? opts.auth_password,\n headers: opts.headers,\n headersToAttributes: opts.headersToAttributes,\n includeHeaders: opts.includeHeaders,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPOutboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPOutboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listSipInboundTrunk` or `listSipOutboundTrunk`\n */\n async listSipTrunk(): Promise<Array<SIPTrunkInfo>> {\n const req: Partial<ListSIPTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPTrunk',\n new ListSIPTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipInboundTrunk(): Promise<Array<SIPInboundTrunkInfo>> {\n const req: Partial<ListSIPInboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPInboundTrunk',\n new ListSIPInboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPInboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipOutboundTrunk(): Promise<Array<SIPOutboundTrunkInfo>> {\n const req: Partial<ListSIPOutboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPOutboundTrunk',\n new ListSIPOutboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPOutboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipTrunkId - sip trunk to delete\n */\n async deleteSipTrunk(sipTrunkId: string): Promise<SIPTrunkInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPTrunk',\n new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param rule - sip dispatch rule\n * @param opts - CreateSipDispatchRuleOptions\n */\n async createSipDispatchRule(\n rule: SipDispatchRuleDirect | SipDispatchRuleIndividual,\n opts?: CreateSipDispatchRuleOptions,\n ): Promise<SIPDispatchRuleInfo> {\n if (opts === undefined) {\n opts = {};\n }\n let ruleProto: SIPDispatchRule | undefined = undefined;\n if (rule.type == 'direct') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleDirect',\n value: new SIPDispatchRuleDirect({\n roomName: rule.roomName,\n pin: rule.pin || '',\n }),\n },\n });\n } else if (rule.type == 'individual') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleIndividual',\n value: new SIPDispatchRuleIndividual({\n roomPrefix: rule.roomPrefix,\n pin: rule.pin || '',\n }),\n },\n });\n }\n\n const req = new CreateSIPDispatchRuleRequest({\n rule: ruleProto,\n trunkIds: opts.trunkIds,\n hidePhoneNumber: opts.hidePhoneNumber,\n name: opts.name,\n metadata: opts.metadata,\n attributes: opts.attributes,\n roomPreset: opts.roomPreset,\n roomConfig: opts.roomConfig,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPDispatchRule',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n async listSipDispatchRule(): Promise<Array<SIPDispatchRuleInfo>> {\n const req: Partial<ListSIPDispatchRuleRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPDispatchRule',\n new ListSIPDispatchRuleRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipDispatchRuleId - sip trunk to delete\n */\n async deleteSipDispatchRule(sipDispatchRuleId: string): Promise<SIPDispatchRuleInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPDispatchRule',\n new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param sipTrunkId - sip trunk to use for the call\n * @param number - number to dial\n * @param roomName - room to attach the call to\n * @param opts - CreateSipParticipantOptions\n */\n async createSipParticipant(\n sipTrunkId: string,\n number: string,\n roomName: string,\n opts?: CreateSipParticipantOptions,\n ): Promise<SIPParticipantInfo> {\n if (opts === undefined) {\n opts = {};\n }\n\n const req = new CreateSIPParticipantRequest({\n sipTrunkId: sipTrunkId,\n sipCallTo: number,\n roomName: roomName,\n participantIdentity: opts.participantIdentity || 'sip-participant',\n participantName: opts.participantName,\n participantMetadata: opts.participantMetadata,\n dtmf: opts.dtmf,\n playDialtone: opts.playDialtone ?? opts.playRingtone,\n headers: opts.headers,\n hidePhoneNumber: opts.hidePhoneNumber,\n includeHeaders: opts.includeHeaders,\n ringingTimeout: opts.ringingTimeout\n ? new Duration({ seconds: BigInt(opts.ringingTimeout) })\n : undefined,\n maxCallDuration: opts.maxCallDuration\n ? new Duration({ seconds: BigInt(opts.maxCallDuration) })\n : undefined,\n enableKrisp: opts.enableKrisp,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPParticipant',\n req,\n await this.authHeader({}, { call: true }),\n );\n return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param roomName - room the SIP participant to transfer is connectd to\n * @param participantIdentity - identity of the SIP participant to transfer\n * @param transferTo - SIP URL to transfer the participant to\n */\n async transferSipParticipant(\n roomName: string,\n participantIdentity: string,\n transferTo: string,\n opts?: TransferSipParticipantOptions,\n ): Promise<void> {\n if (opts === undefined) {\n opts = {};\n }\n\n const req = new TransferSIPParticipantRequest({\n participantIdentity: participantIdentity,\n roomName: roomName,\n transferTo: transferTo,\n playDialtone: opts.playDialtone,\n headers: opts.headers,\n }).toJson();\n\n await this.rpc.request(\n svc,\n 'TransferSIPParticipant',\n req,\n await this.authHeader({ roomAdmin: true, room: roomName }, { call: true }),\n );\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/SipClient.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SIPTransport, SIPTrunkInfo, SIPInboundTrunkInfo, SIPOutboundTrunkInfo, SIPDispatchRuleInfo, SIPParticipantInfo } from '@livekit/protocol';
|
|
1
|
+
import { SIPHeaderOptions, SIPTransport, RoomConfiguration, SIPTrunkInfo, SIPInboundTrunkInfo, SIPOutboundTrunkInfo, SIPDispatchRuleInfo, SIPParticipantInfo } from '@livekit/protocol';
|
|
2
2
|
import { ServiceBase } from './ServiceBase.cjs';
|
|
3
3
|
import './grants.cjs';
|
|
4
4
|
import 'jose';
|
|
@@ -19,28 +19,43 @@ interface CreateSipTrunkOptions {
|
|
|
19
19
|
}
|
|
20
20
|
interface CreateSipInboundTrunkOptions {
|
|
21
21
|
metadata?: string;
|
|
22
|
+
/** @deprecated - use `allowedAddresses` instead */
|
|
22
23
|
allowed_addresses?: string[];
|
|
24
|
+
allowedAddresses?: string[];
|
|
25
|
+
/** @deprecated - use `allowedNumbers` instead */
|
|
23
26
|
allowed_numbers?: string[];
|
|
27
|
+
allowedNumbers?: string[];
|
|
28
|
+
/** @deprecated - use `authUsername` instead */
|
|
24
29
|
auth_username?: string;
|
|
30
|
+
authUsername?: string;
|
|
31
|
+
/** @deprecated - use `authPassword` instead */
|
|
25
32
|
auth_password?: string;
|
|
33
|
+
authPassword?: string;
|
|
26
34
|
headers?: {
|
|
27
35
|
[key: string]: string;
|
|
28
36
|
};
|
|
29
37
|
headersToAttributes?: {
|
|
30
38
|
[key: string]: string;
|
|
31
39
|
};
|
|
40
|
+
includeHeaders?: SIPHeaderOptions;
|
|
41
|
+
krispEnabled?: boolean;
|
|
32
42
|
}
|
|
33
43
|
interface CreateSipOutboundTrunkOptions {
|
|
34
44
|
metadata?: string;
|
|
35
45
|
transport: SIPTransport;
|
|
46
|
+
/** @deprecated - use `authUsername` instead */
|
|
36
47
|
auth_username?: string;
|
|
48
|
+
authUsername?: string;
|
|
49
|
+
/** @deprecated - use `authPassword` instead */
|
|
37
50
|
auth_password?: string;
|
|
51
|
+
authPassword?: string;
|
|
38
52
|
headers?: {
|
|
39
53
|
[key: string]: string;
|
|
40
54
|
};
|
|
41
55
|
headersToAttributes?: {
|
|
42
56
|
[key: string]: string;
|
|
43
57
|
};
|
|
58
|
+
includeHeaders?: SIPHeaderOptions;
|
|
44
59
|
}
|
|
45
60
|
interface SipDispatchRuleDirect {
|
|
46
61
|
type: 'direct';
|
|
@@ -57,15 +72,27 @@ interface CreateSipDispatchRuleOptions {
|
|
|
57
72
|
metadata?: string;
|
|
58
73
|
trunkIds?: string[];
|
|
59
74
|
hidePhoneNumber?: boolean;
|
|
75
|
+
attributes?: {
|
|
76
|
+
[key: string]: string;
|
|
77
|
+
};
|
|
78
|
+
roomPreset?: string;
|
|
79
|
+
roomConfig?: RoomConfiguration;
|
|
60
80
|
}
|
|
61
81
|
interface CreateSipParticipantOptions {
|
|
62
82
|
participantIdentity?: string;
|
|
63
83
|
participantName?: string;
|
|
64
84
|
participantMetadata?: string;
|
|
85
|
+
participantAttributes?: {
|
|
86
|
+
[key: string]: string;
|
|
87
|
+
};
|
|
65
88
|
dtmf?: string;
|
|
66
89
|
/** @deprecated - use `playDialtone` instead */
|
|
67
90
|
playRingtone?: boolean;
|
|
68
91
|
playDialtone?: boolean;
|
|
92
|
+
headers?: {
|
|
93
|
+
[key: string]: string;
|
|
94
|
+
};
|
|
95
|
+
includeHeaders?: SIPHeaderOptions;
|
|
69
96
|
hidePhoneNumber?: boolean;
|
|
70
97
|
ringingTimeout?: number;
|
|
71
98
|
maxCallDuration?: number;
|
|
@@ -73,6 +100,9 @@ interface CreateSipParticipantOptions {
|
|
|
73
100
|
}
|
|
74
101
|
interface TransferSipParticipantOptions {
|
|
75
102
|
playDialtone?: boolean;
|
|
103
|
+
headers?: {
|
|
104
|
+
[key: string]: string;
|
|
105
|
+
};
|
|
76
106
|
}
|
|
77
107
|
/**
|
|
78
108
|
* Client to access Egress APIs
|
package/dist/SipClient.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RoomConfiguration, SIPHeaderOptions } from '@livekit/protocol';
|
|
1
2
|
import { SIPDispatchRuleInfo, SIPInboundTrunkInfo, SIPOutboundTrunkInfo, SIPParticipantInfo, SIPTransport, SIPTrunkInfo } from '@livekit/protocol';
|
|
2
3
|
import { ServiceBase } from './ServiceBase.js';
|
|
3
4
|
/**
|
|
@@ -16,28 +17,43 @@ export interface CreateSipTrunkOptions {
|
|
|
16
17
|
}
|
|
17
18
|
export interface CreateSipInboundTrunkOptions {
|
|
18
19
|
metadata?: string;
|
|
20
|
+
/** @deprecated - use `allowedAddresses` instead */
|
|
19
21
|
allowed_addresses?: string[];
|
|
22
|
+
allowedAddresses?: string[];
|
|
23
|
+
/** @deprecated - use `allowedNumbers` instead */
|
|
20
24
|
allowed_numbers?: string[];
|
|
25
|
+
allowedNumbers?: string[];
|
|
26
|
+
/** @deprecated - use `authUsername` instead */
|
|
21
27
|
auth_username?: string;
|
|
28
|
+
authUsername?: string;
|
|
29
|
+
/** @deprecated - use `authPassword` instead */
|
|
22
30
|
auth_password?: string;
|
|
31
|
+
authPassword?: string;
|
|
23
32
|
headers?: {
|
|
24
33
|
[key: string]: string;
|
|
25
34
|
};
|
|
26
35
|
headersToAttributes?: {
|
|
27
36
|
[key: string]: string;
|
|
28
37
|
};
|
|
38
|
+
includeHeaders?: SIPHeaderOptions;
|
|
39
|
+
krispEnabled?: boolean;
|
|
29
40
|
}
|
|
30
41
|
export interface CreateSipOutboundTrunkOptions {
|
|
31
42
|
metadata?: string;
|
|
32
43
|
transport: SIPTransport;
|
|
44
|
+
/** @deprecated - use `authUsername` instead */
|
|
33
45
|
auth_username?: string;
|
|
46
|
+
authUsername?: string;
|
|
47
|
+
/** @deprecated - use `authPassword` instead */
|
|
34
48
|
auth_password?: string;
|
|
49
|
+
authPassword?: string;
|
|
35
50
|
headers?: {
|
|
36
51
|
[key: string]: string;
|
|
37
52
|
};
|
|
38
53
|
headersToAttributes?: {
|
|
39
54
|
[key: string]: string;
|
|
40
55
|
};
|
|
56
|
+
includeHeaders?: SIPHeaderOptions;
|
|
41
57
|
}
|
|
42
58
|
export interface SipDispatchRuleDirect {
|
|
43
59
|
type: 'direct';
|
|
@@ -54,15 +70,27 @@ export interface CreateSipDispatchRuleOptions {
|
|
|
54
70
|
metadata?: string;
|
|
55
71
|
trunkIds?: string[];
|
|
56
72
|
hidePhoneNumber?: boolean;
|
|
73
|
+
attributes?: {
|
|
74
|
+
[key: string]: string;
|
|
75
|
+
};
|
|
76
|
+
roomPreset?: string;
|
|
77
|
+
roomConfig?: RoomConfiguration;
|
|
57
78
|
}
|
|
58
79
|
export interface CreateSipParticipantOptions {
|
|
59
80
|
participantIdentity?: string;
|
|
60
81
|
participantName?: string;
|
|
61
82
|
participantMetadata?: string;
|
|
83
|
+
participantAttributes?: {
|
|
84
|
+
[key: string]: string;
|
|
85
|
+
};
|
|
62
86
|
dtmf?: string;
|
|
63
87
|
/** @deprecated - use `playDialtone` instead */
|
|
64
88
|
playRingtone?: boolean;
|
|
65
89
|
playDialtone?: boolean;
|
|
90
|
+
headers?: {
|
|
91
|
+
[key: string]: string;
|
|
92
|
+
};
|
|
93
|
+
includeHeaders?: SIPHeaderOptions;
|
|
66
94
|
hidePhoneNumber?: boolean;
|
|
67
95
|
ringingTimeout?: number;
|
|
68
96
|
maxCallDuration?: number;
|
|
@@ -70,6 +98,9 @@ export interface CreateSipParticipantOptions {
|
|
|
70
98
|
}
|
|
71
99
|
export interface TransferSipParticipantOptions {
|
|
72
100
|
playDialtone?: boolean;
|
|
101
|
+
headers?: {
|
|
102
|
+
[key: string]: string;
|
|
103
|
+
};
|
|
73
104
|
}
|
|
74
105
|
/**
|
|
75
106
|
* Client to access Egress APIs
|
package/dist/SipClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SipClient.d.ts","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAmBL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SipClient.d.ts","sourceRoot":"","sources":["../src/SipClient.ts"],"names":[],"mappings":"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"}
|
package/dist/SipClient.js
CHANGED
|
@@ -91,33 +91,22 @@ class SipClient extends ServiceBase {
|
|
|
91
91
|
* @param opts - CreateSipTrunkOptions
|
|
92
92
|
*/
|
|
93
93
|
async createSipInboundTrunk(name, numbers, opts) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
let authUsername = "";
|
|
97
|
-
let authPassword = "";
|
|
98
|
-
let metadata = "";
|
|
99
|
-
let headers = {};
|
|
100
|
-
let headersToAttributes = {};
|
|
101
|
-
if (opts !== void 0) {
|
|
102
|
-
allowedAddresses = opts.allowed_addresses;
|
|
103
|
-
allowedNumbers = opts.allowed_numbers;
|
|
104
|
-
authUsername = opts.auth_username || "";
|
|
105
|
-
authPassword = opts.auth_password || "";
|
|
106
|
-
metadata = opts.metadata || "";
|
|
107
|
-
headers = opts.headers || {};
|
|
108
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
94
|
+
if (opts === void 0) {
|
|
95
|
+
opts = {};
|
|
109
96
|
}
|
|
110
97
|
const req = new CreateSIPInboundTrunkRequest({
|
|
111
98
|
trunk: new SIPInboundTrunkInfo({
|
|
112
99
|
name,
|
|
113
100
|
numbers,
|
|
114
|
-
metadata,
|
|
115
|
-
allowedAddresses,
|
|
116
|
-
allowedNumbers,
|
|
117
|
-
authUsername,
|
|
118
|
-
authPassword,
|
|
119
|
-
headers,
|
|
120
|
-
headersToAttributes
|
|
101
|
+
metadata: opts == null ? void 0 : opts.metadata,
|
|
102
|
+
allowedAddresses: opts.allowedAddresses ?? opts.allowed_addresses,
|
|
103
|
+
allowedNumbers: opts.allowedNumbers ?? opts.allowed_numbers,
|
|
104
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
105
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
106
|
+
headers: opts.headers,
|
|
107
|
+
headersToAttributes: opts.headersToAttributes,
|
|
108
|
+
includeHeaders: opts.includeHeaders,
|
|
109
|
+
krispEnabled: opts.krispEnabled
|
|
121
110
|
})
|
|
122
111
|
}).toJson();
|
|
123
112
|
const data = await this.rpc.request(
|
|
@@ -135,31 +124,23 @@ class SipClient extends ServiceBase {
|
|
|
135
124
|
* @param opts - CreateSipTrunkOptions
|
|
136
125
|
*/
|
|
137
126
|
async createSipOutboundTrunk(name, address, numbers, opts) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
let headers = {};
|
|
143
|
-
let headersToAttributes = {};
|
|
144
|
-
if (opts !== void 0) {
|
|
145
|
-
authUsername = opts.auth_username || "";
|
|
146
|
-
authPassword = opts.auth_password || "";
|
|
147
|
-
transport = opts.transport || SIPTransport.SIP_TRANSPORT_AUTO;
|
|
148
|
-
metadata = opts.metadata || "";
|
|
149
|
-
headers = opts.headers || {};
|
|
150
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
127
|
+
if (opts === void 0) {
|
|
128
|
+
opts = {
|
|
129
|
+
transport: SIPTransport.SIP_TRANSPORT_AUTO
|
|
130
|
+
};
|
|
151
131
|
}
|
|
152
132
|
const req = new CreateSIPOutboundTrunkRequest({
|
|
153
133
|
trunk: new SIPOutboundTrunkInfo({
|
|
154
134
|
name,
|
|
155
135
|
address,
|
|
156
136
|
numbers,
|
|
157
|
-
metadata,
|
|
158
|
-
transport,
|
|
159
|
-
authUsername,
|
|
160
|
-
authPassword,
|
|
161
|
-
headers,
|
|
162
|
-
headersToAttributes
|
|
137
|
+
metadata: opts.metadata,
|
|
138
|
+
transport: opts.transport,
|
|
139
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
140
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
141
|
+
headers: opts.headers,
|
|
142
|
+
headersToAttributes: opts.headersToAttributes,
|
|
143
|
+
includeHeaders: opts.includeHeaders
|
|
163
144
|
})
|
|
164
145
|
}).toJson();
|
|
165
146
|
const data = await this.rpc.request(
|
|
@@ -220,17 +201,10 @@ class SipClient extends ServiceBase {
|
|
|
220
201
|
* @param opts - CreateSipDispatchRuleOptions
|
|
221
202
|
*/
|
|
222
203
|
async createSipDispatchRule(rule, opts) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
let name = "";
|
|
226
|
-
let metadata = "";
|
|
227
|
-
let ruleProto = void 0;
|
|
228
|
-
if (opts !== void 0) {
|
|
229
|
-
trunkIds = opts.trunkIds;
|
|
230
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
231
|
-
name = opts.name || "";
|
|
232
|
-
metadata = opts.metadata || "";
|
|
204
|
+
if (opts === void 0) {
|
|
205
|
+
opts = {};
|
|
233
206
|
}
|
|
207
|
+
let ruleProto = void 0;
|
|
234
208
|
if (rule.type == "direct") {
|
|
235
209
|
ruleProto = new SIPDispatchRule({
|
|
236
210
|
rule: {
|
|
@@ -254,10 +228,13 @@ class SipClient extends ServiceBase {
|
|
|
254
228
|
}
|
|
255
229
|
const req = new CreateSIPDispatchRuleRequest({
|
|
256
230
|
rule: ruleProto,
|
|
257
|
-
trunkIds,
|
|
258
|
-
hidePhoneNumber,
|
|
259
|
-
name,
|
|
260
|
-
metadata
|
|
231
|
+
trunkIds: opts.trunkIds,
|
|
232
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
233
|
+
name: opts.name,
|
|
234
|
+
metadata: opts.metadata,
|
|
235
|
+
attributes: opts.attributes,
|
|
236
|
+
roomPreset: opts.roomPreset,
|
|
237
|
+
roomConfig: opts.roomConfig
|
|
261
238
|
}).toJson();
|
|
262
239
|
const data = await this.rpc.request(
|
|
263
240
|
svc,
|
|
@@ -296,42 +273,24 @@ class SipClient extends ServiceBase {
|
|
|
296
273
|
* @param opts - CreateSipParticipantOptions
|
|
297
274
|
*/
|
|
298
275
|
async createSipParticipant(sipTrunkId, number, roomName, opts) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
let participantMetadata = "";
|
|
302
|
-
let dtmf = "";
|
|
303
|
-
let playRingtone = false;
|
|
304
|
-
let playDialtone = false;
|
|
305
|
-
let hidePhoneNumber = false;
|
|
306
|
-
let ringingTimeout = void 0;
|
|
307
|
-
let maxCallDuration = void 0;
|
|
308
|
-
let enableKrisp = void 0;
|
|
309
|
-
if (opts !== void 0) {
|
|
310
|
-
participantIdentity = opts.participantIdentity || "";
|
|
311
|
-
participantName = opts.participantName || "";
|
|
312
|
-
participantMetadata = opts.participantMetadata || "";
|
|
313
|
-
dtmf = opts.dtmf || "";
|
|
314
|
-
playRingtone = opts.playRingtone || false;
|
|
315
|
-
playDialtone = opts.playDialtone || playRingtone;
|
|
316
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
317
|
-
ringingTimeout = opts.ringingTimeout || void 0;
|
|
318
|
-
maxCallDuration = opts.maxCallDuration || void 0;
|
|
319
|
-
enableKrisp = opts.enableKrisp || void 0;
|
|
276
|
+
if (opts === void 0) {
|
|
277
|
+
opts = {};
|
|
320
278
|
}
|
|
321
279
|
const req = new CreateSIPParticipantRequest({
|
|
322
280
|
sipTrunkId,
|
|
323
281
|
sipCallTo: number,
|
|
324
282
|
roomName,
|
|
325
|
-
participantIdentity,
|
|
326
|
-
participantName,
|
|
327
|
-
participantMetadata,
|
|
328
|
-
dtmf,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
hidePhoneNumber,
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
283
|
+
participantIdentity: opts.participantIdentity || "sip-participant",
|
|
284
|
+
participantName: opts.participantName,
|
|
285
|
+
participantMetadata: opts.participantMetadata,
|
|
286
|
+
dtmf: opts.dtmf,
|
|
287
|
+
playDialtone: opts.playDialtone ?? opts.playRingtone,
|
|
288
|
+
headers: opts.headers,
|
|
289
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
290
|
+
includeHeaders: opts.includeHeaders,
|
|
291
|
+
ringingTimeout: opts.ringingTimeout ? new Duration({ seconds: BigInt(opts.ringingTimeout) }) : void 0,
|
|
292
|
+
maxCallDuration: opts.maxCallDuration ? new Duration({ seconds: BigInt(opts.maxCallDuration) }) : void 0,
|
|
293
|
+
enableKrisp: opts.enableKrisp
|
|
335
294
|
}).toJson();
|
|
336
295
|
const data = await this.rpc.request(
|
|
337
296
|
svc,
|
|
@@ -347,15 +306,15 @@ class SipClient extends ServiceBase {
|
|
|
347
306
|
* @param transferTo - SIP URL to transfer the participant to
|
|
348
307
|
*/
|
|
349
308
|
async transferSipParticipant(roomName, participantIdentity, transferTo, opts) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
playDialtone = opts.playDialtone || false;
|
|
309
|
+
if (opts === void 0) {
|
|
310
|
+
opts = {};
|
|
353
311
|
}
|
|
354
312
|
const req = new TransferSIPParticipantRequest({
|
|
355
313
|
participantIdentity,
|
|
356
314
|
roomName,
|
|
357
315
|
transferTo,
|
|
358
|
-
playDialtone
|
|
316
|
+
playDialtone: opts.playDialtone,
|
|
317
|
+
headers: opts.headers
|
|
359
318
|
}).toJson();
|
|
360
319
|
await this.rpc.request(
|
|
361
320
|
svc,
|
package/dist/SipClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SipClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { Duration } from '@bufbuild/protobuf';\nimport {\n CreateSIPDispatchRuleRequest,\n CreateSIPInboundTrunkRequest,\n CreateSIPOutboundTrunkRequest,\n CreateSIPParticipantRequest,\n CreateSIPTrunkRequest,\n DeleteSIPDispatchRuleRequest,\n DeleteSIPTrunkRequest,\n ListSIPDispatchRuleRequest,\n ListSIPDispatchRuleResponse,\n ListSIPInboundTrunkRequest,\n ListSIPInboundTrunkResponse,\n ListSIPOutboundTrunkRequest,\n ListSIPOutboundTrunkResponse,\n ListSIPTrunkRequest,\n ListSIPTrunkResponse,\n SIPDispatchRule,\n SIPDispatchRuleDirect,\n SIPDispatchRuleIndividual,\n SIPDispatchRuleInfo,\n SIPInboundTrunkInfo,\n SIPOutboundTrunkInfo,\n SIPParticipantInfo,\n SIPTransport,\n SIPTrunkInfo,\n TransferSIPParticipantRequest,\n} from '@livekit/protocol';\nimport { ServiceBase } from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'SIP';\n\n/**\n * @deprecated use CreateSipInboundTrunkOptions or CreateSipOutboundTrunkOptions\n */\nexport interface CreateSipTrunkOptions {\n name?: string;\n metadata?: string;\n inbound_addresses?: string[];\n inbound_numbers?: string[];\n inbound_username?: string;\n inbound_password?: string;\n outbound_address?: string;\n outbound_username?: string;\n outbound_password?: string;\n}\nexport interface CreateSipInboundTrunkOptions {\n metadata?: string;\n allowed_addresses?: string[];\n allowed_numbers?: string[];\n auth_username?: string;\n auth_password?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n}\nexport interface CreateSipOutboundTrunkOptions {\n metadata?: string;\n transport: SIPTransport;\n auth_username?: string;\n auth_password?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n}\n\nexport interface SipDispatchRuleDirect {\n type: 'direct';\n roomName: string;\n pin?: string;\n}\n\nexport interface SipDispatchRuleIndividual {\n type: 'individual';\n roomPrefix: string;\n pin?: string;\n}\n\nexport interface CreateSipDispatchRuleOptions {\n name?: string;\n metadata?: string;\n trunkIds?: string[];\n hidePhoneNumber?: boolean;\n}\n\nexport interface CreateSipParticipantOptions {\n participantIdentity?: string;\n participantName?: string;\n participantMetadata?: string;\n dtmf?: string;\n /** @deprecated - use `playDialtone` instead */\n playRingtone?: boolean; // Deprecated, use playDialtone instead\n playDialtone?: boolean;\n hidePhoneNumber?: boolean;\n ringingTimeout?: number; // Duration in seconds\n maxCallDuration?: number; // Duration in seconds\n enableKrisp?: boolean;\n}\n\nexport interface TransferSipParticipantOptions {\n playDialtone?: boolean;\n}\n\n/**\n * Client to access Egress APIs\n */\nexport class SipClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param number - phone number of the trunk\n * @param opts - CreateSipTrunkOptions\n * @deprecated use `createSipInboundTrunk` or `createSipOutboundTrunk`\n */\n async createSipTrunk(number: string, opts?: CreateSipTrunkOptions): Promise<SIPTrunkInfo> {\n let inboundAddresses: string[] | undefined;\n let inboundNumbers: string[] | undefined;\n let inboundUsername: string = '';\n let inboundPassword: string = '';\n let outboundAddress: string = '';\n let outboundUsername: string = '';\n let outboundPassword: string = '';\n let name: string = '';\n let metadata: string = '';\n\n if (opts !== undefined) {\n inboundAddresses = opts.inbound_addresses;\n inboundNumbers = opts.inbound_numbers;\n inboundUsername = opts.inbound_username || '';\n inboundPassword = opts.inbound_password || '';\n outboundAddress = opts.outbound_address || '';\n outboundUsername = opts.outbound_username || '';\n outboundPassword = opts.outbound_password || '';\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n\n const req = new CreateSIPTrunkRequest({\n name: name,\n metadata: metadata,\n inboundAddresses: inboundAddresses,\n inboundNumbers: inboundNumbers,\n inboundUsername: inboundUsername,\n inboundPassword: inboundPassword,\n outboundNumber: number,\n outboundAddress: outboundAddress,\n outboundUsername: outboundUsername,\n outboundPassword: outboundPassword,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipInboundTrunk(\n name: string,\n numbers: string[],\n opts?: CreateSipInboundTrunkOptions,\n ): Promise<SIPInboundTrunkInfo> {\n let allowedAddresses: string[] | undefined;\n let allowedNumbers: string[] | undefined;\n let authUsername: string = '';\n let authPassword: string = '';\n let metadata: string = '';\n let headers: { [key: string]: string } = {};\n let headersToAttributes: { [key: string]: string } = {};\n\n if (opts !== undefined) {\n allowedAddresses = opts.allowed_addresses;\n allowedNumbers = opts.allowed_numbers;\n authUsername = opts.auth_username || '';\n authPassword = opts.auth_password || '';\n metadata = opts.metadata || '';\n headers = opts.headers || {};\n headersToAttributes = opts.headersToAttributes || {};\n }\n\n const req = new CreateSIPInboundTrunkRequest({\n trunk: new SIPInboundTrunkInfo({\n name: name,\n numbers: numbers,\n metadata: metadata,\n allowedAddresses: allowedAddresses,\n allowedNumbers: allowedNumbers,\n authUsername: authUsername,\n authPassword: authPassword,\n headers: headers,\n headersToAttributes: headersToAttributes,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPInboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPInboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param address - hostname and port of the SIP server to dial\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipOutboundTrunk(\n name: string,\n address: string,\n numbers: string[],\n opts?: CreateSipOutboundTrunkOptions,\n ): Promise<SIPOutboundTrunkInfo> {\n let authUsername: string = '';\n let authPassword: string = '';\n let transport: SIPTransport = SIPTransport.SIP_TRANSPORT_AUTO;\n let metadata: string = '';\n let headers: { [key: string]: string } = {};\n let headersToAttributes: { [key: string]: string } = {};\n\n if (opts !== undefined) {\n authUsername = opts.auth_username || '';\n authPassword = opts.auth_password || '';\n transport = opts.transport || SIPTransport.SIP_TRANSPORT_AUTO;\n metadata = opts.metadata || '';\n headers = opts.headers || {};\n headersToAttributes = opts.headersToAttributes || {};\n }\n\n const req = new CreateSIPOutboundTrunkRequest({\n trunk: new SIPOutboundTrunkInfo({\n name: name,\n address: address,\n numbers: numbers,\n metadata: metadata,\n transport: transport,\n authUsername: authUsername,\n authPassword: authPassword,\n headers: headers,\n headersToAttributes: headersToAttributes,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPOutboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPOutboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listSipInboundTrunk` or `listSipOutboundTrunk`\n */\n async listSipTrunk(): Promise<Array<SIPTrunkInfo>> {\n const req: Partial<ListSIPTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPTrunk',\n new ListSIPTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipInboundTrunk(): Promise<Array<SIPInboundTrunkInfo>> {\n const req: Partial<ListSIPInboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPInboundTrunk',\n new ListSIPInboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPInboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipOutboundTrunk(): Promise<Array<SIPOutboundTrunkInfo>> {\n const req: Partial<ListSIPOutboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPOutboundTrunk',\n new ListSIPOutboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPOutboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipTrunkId - sip trunk to delete\n */\n async deleteSipTrunk(sipTrunkId: string): Promise<SIPTrunkInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPTrunk',\n new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param rule - sip dispatch rule\n * @param opts - CreateSipDispatchRuleOptions\n */\n async createSipDispatchRule(\n rule: SipDispatchRuleDirect | SipDispatchRuleIndividual,\n opts?: CreateSipDispatchRuleOptions,\n ): Promise<SIPDispatchRuleInfo> {\n let trunkIds: string[] | undefined;\n let hidePhoneNumber: boolean = false;\n let name: string = '';\n let metadata: string = '';\n let ruleProto: SIPDispatchRule | undefined = undefined;\n\n if (opts !== undefined) {\n trunkIds = opts.trunkIds;\n hidePhoneNumber = opts.hidePhoneNumber || false;\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n if (rule.type == 'direct') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleDirect',\n value: new SIPDispatchRuleDirect({\n roomName: rule.roomName,\n pin: rule.pin || '',\n }),\n },\n });\n } else if (rule.type == 'individual') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleIndividual',\n value: new SIPDispatchRuleIndividual({\n roomPrefix: rule.roomPrefix,\n pin: rule.pin || '',\n }),\n },\n });\n }\n\n const req = new CreateSIPDispatchRuleRequest({\n rule: ruleProto,\n trunkIds: trunkIds,\n hidePhoneNumber: hidePhoneNumber,\n name: name,\n metadata: metadata,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPDispatchRule',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n async listSipDispatchRule(): Promise<Array<SIPDispatchRuleInfo>> {\n const req: Partial<ListSIPDispatchRuleRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPDispatchRule',\n new ListSIPDispatchRuleRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipDispatchRuleId - sip trunk to delete\n */\n async deleteSipDispatchRule(sipDispatchRuleId: string): Promise<SIPDispatchRuleInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPDispatchRule',\n new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param sipTrunkId - sip trunk to use for the call\n * @param number - number to dial\n * @param roomName - room to attach the call to\n * @param opts - CreateSipParticipantOptions\n */\n async createSipParticipant(\n sipTrunkId: string,\n number: string,\n roomName: string,\n opts?: CreateSipParticipantOptions,\n ): Promise<SIPParticipantInfo> {\n let participantIdentity: string = '';\n let participantName: string = '';\n let participantMetadata: string = '';\n let dtmf: string = '';\n let playRingtone: boolean = false;\n let playDialtone: boolean = false;\n let hidePhoneNumber: boolean = false;\n let ringingTimeout: number | undefined = undefined;\n let maxCallDuration: number | undefined = undefined;\n let enableKrisp: boolean | undefined = undefined;\n\n if (opts !== undefined) {\n participantIdentity = opts.participantIdentity || '';\n participantName = opts.participantName || '';\n participantMetadata = opts.participantMetadata || '';\n dtmf = opts.dtmf || '';\n playRingtone = opts.playRingtone || false;\n playDialtone = opts.playDialtone || playRingtone; // Enable PlayDialtone if either PlayDialtone or playRingtone is set\n hidePhoneNumber = opts.hidePhoneNumber || false;\n ringingTimeout = opts.ringingTimeout || undefined;\n maxCallDuration = opts.maxCallDuration || undefined;\n enableKrisp = opts.enableKrisp || undefined;\n }\n\n const req = new CreateSIPParticipantRequest({\n sipTrunkId: sipTrunkId,\n sipCallTo: number,\n roomName: roomName,\n participantIdentity: participantIdentity,\n participantName: participantName,\n participantMetadata: participantMetadata,\n dtmf: dtmf,\n playRingtone: playDialtone,\n playDialtone: playDialtone,\n hidePhoneNumber: hidePhoneNumber,\n ringingTimeout: ringingTimeout\n ? new Duration({ seconds: BigInt(ringingTimeout) })\n : undefined,\n maxCallDuration: maxCallDuration\n ? new Duration({ seconds: BigInt(maxCallDuration) })\n : undefined,\n enableKrisp: enableKrisp,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPParticipant',\n req,\n await this.authHeader({}, { call: true }),\n );\n return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param roomName - room the SIP participant to transfer is connectd to\n * @param participantIdentity - identity of the SIP participant to transfer\n * @param transferTo - SIP URL to transfer the participant to\n */\n async transferSipParticipant(\n roomName: string,\n participantIdentity: string,\n transferTo: string,\n opts?: TransferSipParticipantOptions,\n ): Promise<void> {\n let playDialtone: boolean = false;\n\n if (opts !== undefined) {\n playDialtone = opts.playDialtone || false;\n }\n\n const req = new TransferSIPParticipantRequest({\n participantIdentity: participantIdentity,\n roomName: roomName,\n transferTo: transferTo,\n playDialtone: playDialtone,\n }).toJson();\n\n await this.rpc.request(\n svc,\n 'TransferSIPParticipant',\n req,\n await this.authHeader({ roomAdmin: true, room: roomName }, { call: true }),\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/SipClient.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { Duration } from '@bufbuild/protobuf';\nimport type { RoomConfiguration, SIPHeaderOptions } from '@livekit/protocol';\nimport {\n CreateSIPDispatchRuleRequest,\n CreateSIPInboundTrunkRequest,\n CreateSIPOutboundTrunkRequest,\n CreateSIPParticipantRequest,\n CreateSIPTrunkRequest,\n DeleteSIPDispatchRuleRequest,\n DeleteSIPTrunkRequest,\n ListSIPDispatchRuleRequest,\n ListSIPDispatchRuleResponse,\n ListSIPInboundTrunkRequest,\n ListSIPInboundTrunkResponse,\n ListSIPOutboundTrunkRequest,\n ListSIPOutboundTrunkResponse,\n ListSIPTrunkRequest,\n ListSIPTrunkResponse,\n SIPDispatchRule,\n SIPDispatchRuleDirect,\n SIPDispatchRuleIndividual,\n SIPDispatchRuleInfo,\n SIPInboundTrunkInfo,\n SIPOutboundTrunkInfo,\n SIPParticipantInfo,\n SIPTransport,\n SIPTrunkInfo,\n TransferSIPParticipantRequest,\n} from '@livekit/protocol';\nimport { ServiceBase } from './ServiceBase.js';\nimport type { Rpc } from './TwirpRPC.js';\nimport { TwirpRpc, livekitPackage } from './TwirpRPC.js';\n\nconst svc = 'SIP';\n\n/**\n * @deprecated use CreateSipInboundTrunkOptions or CreateSipOutboundTrunkOptions\n */\nexport interface CreateSipTrunkOptions {\n name?: string;\n metadata?: string;\n inbound_addresses?: string[];\n inbound_numbers?: string[];\n inbound_username?: string;\n inbound_password?: string;\n outbound_address?: string;\n outbound_username?: string;\n outbound_password?: string;\n}\nexport interface CreateSipInboundTrunkOptions {\n metadata?: string;\n /** @deprecated - use `allowedAddresses` instead */\n allowed_addresses?: string[];\n allowedAddresses?: string[];\n /** @deprecated - use `allowedNumbers` instead */\n allowed_numbers?: string[];\n allowedNumbers?: string[];\n /** @deprecated - use `authUsername` instead */\n auth_username?: string;\n authUsername?: string;\n /** @deprecated - use `authPassword` instead */\n auth_password?: string;\n authPassword?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n krispEnabled?: boolean;\n}\nexport interface CreateSipOutboundTrunkOptions {\n metadata?: string;\n transport: SIPTransport;\n /** @deprecated - use `authUsername` instead */\n auth_username?: string;\n authUsername?: string;\n /** @deprecated - use `authPassword` instead */\n auth_password?: string;\n authPassword?: string;\n headers?: { [key: string]: string };\n headersToAttributes?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n}\n\nexport interface SipDispatchRuleDirect {\n type: 'direct';\n roomName: string;\n pin?: string;\n}\n\nexport interface SipDispatchRuleIndividual {\n type: 'individual';\n roomPrefix: string;\n pin?: string;\n}\n\nexport interface CreateSipDispatchRuleOptions {\n name?: string;\n metadata?: string;\n trunkIds?: string[];\n hidePhoneNumber?: boolean;\n attributes?: { [key: string]: string };\n roomPreset?: string;\n roomConfig?: RoomConfiguration;\n}\n\nexport interface CreateSipParticipantOptions {\n participantIdentity?: string;\n participantName?: string;\n participantMetadata?: string;\n participantAttributes?: { [key: string]: string };\n dtmf?: string;\n /** @deprecated - use `playDialtone` instead */\n playRingtone?: boolean; // Deprecated, use playDialtone instead\n playDialtone?: boolean;\n // These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.\n headers?: { [key: string]: string };\n // Map SIP response headers from INVITE to sip.h.* participant attributes automatically.\n includeHeaders?: SIPHeaderOptions;\n hidePhoneNumber?: boolean;\n ringingTimeout?: number; // Duration in seconds\n maxCallDuration?: number; // Duration in seconds\n enableKrisp?: boolean;\n}\n\nexport interface TransferSipParticipantOptions {\n playDialtone?: boolean;\n headers?: { [key: string]: string };\n}\n\n/**\n * Client to access Egress APIs\n */\nexport class SipClient extends ServiceBase {\n private readonly rpc: Rpc;\n\n /**\n * @param host - hostname including protocol. i.e. 'https://<project>.livekit.cloud'\n * @param apiKey - API Key, can be set in env var LIVEKIT_API_KEY\n * @param secret - API Secret, can be set in env var LIVEKIT_API_SECRET\n */\n constructor(host: string, apiKey?: string, secret?: string) {\n super(apiKey, secret);\n this.rpc = new TwirpRpc(host, livekitPackage);\n }\n\n /**\n * @param number - phone number of the trunk\n * @param opts - CreateSipTrunkOptions\n * @deprecated use `createSipInboundTrunk` or `createSipOutboundTrunk`\n */\n async createSipTrunk(number: string, opts?: CreateSipTrunkOptions): Promise<SIPTrunkInfo> {\n let inboundAddresses: string[] | undefined;\n let inboundNumbers: string[] | undefined;\n let inboundUsername: string = '';\n let inboundPassword: string = '';\n let outboundAddress: string = '';\n let outboundUsername: string = '';\n let outboundPassword: string = '';\n let name: string = '';\n let metadata: string = '';\n\n if (opts !== undefined) {\n inboundAddresses = opts.inbound_addresses;\n inboundNumbers = opts.inbound_numbers;\n inboundUsername = opts.inbound_username || '';\n inboundPassword = opts.inbound_password || '';\n outboundAddress = opts.outbound_address || '';\n outboundUsername = opts.outbound_username || '';\n outboundPassword = opts.outbound_password || '';\n name = opts.name || '';\n metadata = opts.metadata || '';\n }\n\n const req = new CreateSIPTrunkRequest({\n name: name,\n metadata: metadata,\n inboundAddresses: inboundAddresses,\n inboundNumbers: inboundNumbers,\n inboundUsername: inboundUsername,\n inboundPassword: inboundPassword,\n outboundNumber: number,\n outboundAddress: outboundAddress,\n outboundUsername: outboundUsername,\n outboundPassword: outboundPassword,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipInboundTrunk(\n name: string,\n numbers: string[],\n opts?: CreateSipInboundTrunkOptions,\n ): Promise<SIPInboundTrunkInfo> {\n if (opts === undefined) {\n opts = {};\n }\n const req = new CreateSIPInboundTrunkRequest({\n trunk: new SIPInboundTrunkInfo({\n name: name,\n numbers: numbers,\n metadata: opts?.metadata,\n allowedAddresses: opts.allowedAddresses ?? opts.allowed_addresses,\n allowedNumbers: opts.allowedNumbers ?? opts.allowed_numbers,\n authUsername: opts.authUsername ?? opts.auth_username,\n authPassword: opts.authPassword ?? opts.auth_password,\n headers: opts.headers,\n headersToAttributes: opts.headersToAttributes,\n includeHeaders: opts.includeHeaders,\n krispEnabled: opts.krispEnabled,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPInboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPInboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param name - human-readable name of the trunk\n * @param address - hostname and port of the SIP server to dial\n * @param numbers - phone numbers of the trunk\n * @param opts - CreateSipTrunkOptions\n */\n async createSipOutboundTrunk(\n name: string,\n address: string,\n numbers: string[],\n opts?: CreateSipOutboundTrunkOptions,\n ): Promise<SIPOutboundTrunkInfo> {\n if (opts === undefined) {\n opts = {\n transport: SIPTransport.SIP_TRANSPORT_AUTO,\n };\n }\n\n const req = new CreateSIPOutboundTrunkRequest({\n trunk: new SIPOutboundTrunkInfo({\n name: name,\n address: address,\n numbers: numbers,\n metadata: opts.metadata,\n transport: opts.transport,\n authUsername: opts.authUsername ?? opts.auth_username,\n authPassword: opts.authPassword ?? opts.auth_password,\n headers: opts.headers,\n headersToAttributes: opts.headersToAttributes,\n includeHeaders: opts.includeHeaders,\n }),\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPOutboundTrunk',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPOutboundTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @deprecated use `listSipInboundTrunk` or `listSipOutboundTrunk`\n */\n async listSipTrunk(): Promise<Array<SIPTrunkInfo>> {\n const req: Partial<ListSIPTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPTrunk',\n new ListSIPTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipInboundTrunk(): Promise<Array<SIPInboundTrunkInfo>> {\n const req: Partial<ListSIPInboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPInboundTrunk',\n new ListSIPInboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPInboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n async listSipOutboundTrunk(): Promise<Array<SIPOutboundTrunkInfo>> {\n const req: Partial<ListSIPOutboundTrunkRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPOutboundTrunk',\n new ListSIPOutboundTrunkRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPOutboundTrunkResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipTrunkId - sip trunk to delete\n */\n async deleteSipTrunk(sipTrunkId: string): Promise<SIPTrunkInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPTrunk',\n new DeleteSIPTrunkRequest({ sipTrunkId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPTrunkInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param rule - sip dispatch rule\n * @param opts - CreateSipDispatchRuleOptions\n */\n async createSipDispatchRule(\n rule: SipDispatchRuleDirect | SipDispatchRuleIndividual,\n opts?: CreateSipDispatchRuleOptions,\n ): Promise<SIPDispatchRuleInfo> {\n if (opts === undefined) {\n opts = {};\n }\n let ruleProto: SIPDispatchRule | undefined = undefined;\n if (rule.type == 'direct') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleDirect',\n value: new SIPDispatchRuleDirect({\n roomName: rule.roomName,\n pin: rule.pin || '',\n }),\n },\n });\n } else if (rule.type == 'individual') {\n ruleProto = new SIPDispatchRule({\n rule: {\n case: 'dispatchRuleIndividual',\n value: new SIPDispatchRuleIndividual({\n roomPrefix: rule.roomPrefix,\n pin: rule.pin || '',\n }),\n },\n });\n }\n\n const req = new CreateSIPDispatchRuleRequest({\n rule: ruleProto,\n trunkIds: opts.trunkIds,\n hidePhoneNumber: opts.hidePhoneNumber,\n name: opts.name,\n metadata: opts.metadata,\n attributes: opts.attributes,\n roomPreset: opts.roomPreset,\n roomConfig: opts.roomConfig,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPDispatchRule',\n req,\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n async listSipDispatchRule(): Promise<Array<SIPDispatchRuleInfo>> {\n const req: Partial<ListSIPDispatchRuleRequest> = {};\n const data = await this.rpc.request(\n svc,\n 'ListSIPDispatchRule',\n new ListSIPDispatchRuleRequest(req).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return ListSIPDispatchRuleResponse.fromJson(data, { ignoreUnknownFields: true }).items ?? [];\n }\n\n /**\n * @param sipDispatchRuleId - sip trunk to delete\n */\n async deleteSipDispatchRule(sipDispatchRuleId: string): Promise<SIPDispatchRuleInfo> {\n const data = await this.rpc.request(\n svc,\n 'DeleteSIPDispatchRule',\n new DeleteSIPDispatchRuleRequest({ sipDispatchRuleId }).toJson(),\n await this.authHeader({}, { admin: true }),\n );\n return SIPDispatchRuleInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param sipTrunkId - sip trunk to use for the call\n * @param number - number to dial\n * @param roomName - room to attach the call to\n * @param opts - CreateSipParticipantOptions\n */\n async createSipParticipant(\n sipTrunkId: string,\n number: string,\n roomName: string,\n opts?: CreateSipParticipantOptions,\n ): Promise<SIPParticipantInfo> {\n if (opts === undefined) {\n opts = {};\n }\n\n const req = new CreateSIPParticipantRequest({\n sipTrunkId: sipTrunkId,\n sipCallTo: number,\n roomName: roomName,\n participantIdentity: opts.participantIdentity || 'sip-participant',\n participantName: opts.participantName,\n participantMetadata: opts.participantMetadata,\n dtmf: opts.dtmf,\n playDialtone: opts.playDialtone ?? opts.playRingtone,\n headers: opts.headers,\n hidePhoneNumber: opts.hidePhoneNumber,\n includeHeaders: opts.includeHeaders,\n ringingTimeout: opts.ringingTimeout\n ? new Duration({ seconds: BigInt(opts.ringingTimeout) })\n : undefined,\n maxCallDuration: opts.maxCallDuration\n ? new Duration({ seconds: BigInt(opts.maxCallDuration) })\n : undefined,\n enableKrisp: opts.enableKrisp,\n }).toJson();\n\n const data = await this.rpc.request(\n svc,\n 'CreateSIPParticipant',\n req,\n await this.authHeader({}, { call: true }),\n );\n return SIPParticipantInfo.fromJson(data, { ignoreUnknownFields: true });\n }\n\n /**\n * @param roomName - room the SIP participant to transfer is connectd to\n * @param participantIdentity - identity of the SIP participant to transfer\n * @param transferTo - SIP URL to transfer the participant to\n */\n async transferSipParticipant(\n roomName: string,\n participantIdentity: string,\n transferTo: string,\n opts?: TransferSipParticipantOptions,\n ): Promise<void> {\n if (opts === undefined) {\n opts = {};\n }\n\n const req = new TransferSIPParticipantRequest({\n participantIdentity: participantIdentity,\n roomName: roomName,\n transferTo: transferTo,\n playDialtone: opts.playDialtone,\n headers: opts.headers,\n }).toJson();\n\n await this.rpc.request(\n svc,\n 'TransferSIPParticipant',\n req,\n await this.authHeader({ roomAdmin: true, room: roomName }, { call: true }),\n );\n }\n}\n"],"mappings":"AAGA,SAAS,gBAAgB;AAEzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,mBAAmB;AAE5B,SAAS,UAAU,sBAAsB;AAEzC,MAAM,MAAM;AAoGL,MAAM,kBAAkB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzC,YAAY,MAAc,QAAiB,QAAiB;AAC1D,UAAM,QAAQ,MAAM;AACpB,SAAK,MAAM,IAAI,SAAS,MAAM,cAAc;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,QAAgB,MAAqD;AACxF,QAAI;AACJ,QAAI;AACJ,QAAI,kBAA0B;AAC9B,QAAI,kBAA0B;AAC9B,QAAI,kBAA0B;AAC9B,QAAI,mBAA2B;AAC/B,QAAI,mBAA2B;AAC/B,QAAI,OAAe;AACnB,QAAI,WAAmB;AAEvB,QAAI,SAAS,QAAW;AACtB,yBAAmB,KAAK;AACxB,uBAAiB,KAAK;AACtB,wBAAkB,KAAK,oBAAoB;AAC3C,wBAAkB,KAAK,oBAAoB;AAC3C,wBAAkB,KAAK,oBAAoB;AAC3C,yBAAmB,KAAK,qBAAqB;AAC7C,yBAAmB,KAAK,qBAAqB;AAC7C,aAAO,KAAK,QAAQ;AACpB,iBAAW,KAAK,YAAY;AAAA,IAC9B;AAEA,UAAM,MAAM,IAAI,sBAAsB;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,aAAa,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBACJ,MACA,SACA,MAC8B;AAC9B,QAAI,SAAS,QAAW;AACtB,aAAO,CAAC;AAAA,IACV;AACA,UAAM,MAAM,IAAI,6BAA6B;AAAA,MAC3C,OAAO,IAAI,oBAAoB;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,UAAU,6BAAM;AAAA,QAChB,kBAAkB,KAAK,oBAAoB,KAAK;AAAA,QAChD,gBAAgB,KAAK,kBAAkB,KAAK;AAAA,QAC5C,cAAc,KAAK,gBAAgB,KAAK;AAAA,QACxC,cAAc,KAAK,gBAAgB,KAAK;AAAA,QACxC,SAAS,KAAK;AAAA,QACd,qBAAqB,KAAK;AAAA,QAC1B,gBAAgB,KAAK;AAAA,QACrB,cAAc,KAAK;AAAA,MACrB,CAAC;AAAA,IACH,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,oBAAoB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,uBACJ,MACA,SACA,SACA,MAC+B;AAC/B,QAAI,SAAS,QAAW;AACtB,aAAO;AAAA,QACL,WAAW,aAAa;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,8BAA8B;AAAA,MAC5C,OAAO,IAAI,qBAAqB;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,cAAc,KAAK,gBAAgB,KAAK;AAAA,QACxC,cAAc,KAAK,gBAAgB,KAAK;AAAA,QACxC,SAAS,KAAK;AAAA,QACd,qBAAqB,KAAK;AAAA,QAC1B,gBAAgB,KAAK;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,qBAAqB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAA6C;AACjD,UAAM,MAAoC,CAAC;AAC3C,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,oBAAoB,GAAG,EAAE,OAAO;AAAA,MACpC,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,qBAAqB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC,EAAE,SAAS,CAAC;AAAA,EACtF;AAAA,EAEA,MAAM,sBAA2D;AAC/D,UAAM,MAA2C,CAAC;AAClD,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,2BAA2B,GAAG,EAAE,OAAO;AAAA,MAC3C,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,4BAA4B,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC,EAAE,SAAS,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAM,uBAA6D;AACjE,UAAM,MAA4C,CAAC;AACnD,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,4BAA4B,GAAG,EAAE,OAAO;AAAA,MAC5C,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,6BAA6B,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC,EAAE,SAAS,CAAC;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,YAA2C;AAC9D,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,sBAAsB,EAAE,WAAW,CAAC,EAAE,OAAO;AAAA,MACjD,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,aAAa,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBACJ,MACA,MAC8B;AAC9B,QAAI,SAAS,QAAW;AACtB,aAAO,CAAC;AAAA,IACV;AACA,QAAI,YAAyC;AAC7C,QAAI,KAAK,QAAQ,UAAU;AACzB,kBAAY,IAAI,gBAAgB;AAAA,QAC9B,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO,IAAI,sBAAsB;AAAA,YAC/B,UAAU,KAAK;AAAA,YACf,KAAK,KAAK,OAAO;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,WAAW,KAAK,QAAQ,cAAc;AACpC,kBAAY,IAAI,gBAAgB;AAAA,QAC9B,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,OAAO,IAAI,0BAA0B;AAAA,YACnC,YAAY,KAAK;AAAA,YACjB,KAAK,KAAK,OAAO;AAAA,UACnB,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,MAAM,IAAI,6BAA6B;AAAA,MAC3C,MAAM;AAAA,MACN,UAAU,KAAK;AAAA,MACf,iBAAiB,KAAK;AAAA,MACtB,MAAM,KAAK;AAAA,MACX,UAAU,KAAK;AAAA,MACf,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,IACnB,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,oBAAoB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EACzE;AAAA,EAEA,MAAM,sBAA2D;AAC/D,UAAM,MAA2C,CAAC;AAClD,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,2BAA2B,GAAG,EAAE,OAAO;AAAA,MAC3C,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,4BAA4B,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC,EAAE,SAAS,CAAC;AAAA,EAC7F;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,mBAAyD;AACnF,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,IAAI,6BAA6B,EAAE,kBAAkB,CAAC,EAAE,OAAO;AAAA,MAC/D,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC3C;AACA,WAAO,oBAAoB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,qBACJ,YACA,QACA,UACA,MAC6B;AAC7B,QAAI,SAAS,QAAW;AACtB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,MAAM,IAAI,4BAA4B;AAAA,MAC1C;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,qBAAqB,KAAK,uBAAuB;AAAA,MACjD,iBAAiB,KAAK;AAAA,MACtB,qBAAqB,KAAK;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,cAAc,KAAK,gBAAgB,KAAK;AAAA,MACxC,SAAS,KAAK;AAAA,MACd,iBAAiB,KAAK;AAAA,MACtB,gBAAgB,KAAK;AAAA,MACrB,gBAAgB,KAAK,iBACjB,IAAI,SAAS,EAAE,SAAS,OAAO,KAAK,cAAc,EAAE,CAAC,IACrD;AAAA,MACJ,iBAAiB,KAAK,kBAClB,IAAI,SAAS,EAAE,SAAS,OAAO,KAAK,eAAe,EAAE,CAAC,IACtD;AAAA,MACJ,aAAa,KAAK;AAAA,IACpB,CAAC,EAAE,OAAO;AAEV,UAAM,OAAO,MAAM,KAAK,IAAI;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IAC1C;AACA,WAAO,mBAAmB,SAAS,MAAM,EAAE,qBAAqB,KAAK,CAAC;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,uBACJ,UACA,qBACA,YACA,MACe;AACf,QAAI,SAAS,QAAW;AACtB,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,MAAM,IAAI,8BAA8B;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,MACnB,SAAS,KAAK;AAAA,IAChB,CAAC,EAAE,OAAO;AAEV,UAAM,KAAK,IAAI;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,KAAK,WAAW,EAAE,WAAW,MAAM,MAAM,SAAS,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IAC3E;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livekit-server-sdk",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.5",
|
|
4
4
|
"description": "Server-side SDK for LiveKit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"require": "dist/index.cjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"src"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@livekit/protocol": "^1.
|
|
32
|
+
"@livekit/protocol": "^1.30.0",
|
|
33
33
|
"camelcase-keys": "^9.0.0",
|
|
34
34
|
"jose": "^5.1.2"
|
|
35
35
|
},
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@edge-runtime/vm": "^4.0.0",
|
|
40
40
|
"@livekit/changesets-changelog-github": "^0.0.4",
|
|
41
41
|
"@types/node": "^20.10.1",
|
|
42
|
-
"happy-dom": "^
|
|
42
|
+
"happy-dom": "^16.0.0",
|
|
43
43
|
"prettier": "^3.0.0",
|
|
44
44
|
"tsup": "^8.3.5",
|
|
45
|
-
"typedoc": "^0.
|
|
46
|
-
"typescript": "5.
|
|
45
|
+
"typedoc": "^0.27.0",
|
|
46
|
+
"typescript": "5.7.x",
|
|
47
47
|
"vite": "^5.2.9",
|
|
48
48
|
"vitest": "^2.0.0"
|
|
49
49
|
},
|
package/src/SipClient.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import { Duration } from '@bufbuild/protobuf';
|
|
5
|
+
import type { RoomConfiguration, SIPHeaderOptions } from '@livekit/protocol';
|
|
5
6
|
import {
|
|
6
7
|
CreateSIPDispatchRuleRequest,
|
|
7
8
|
CreateSIPInboundTrunkRequest,
|
|
@@ -51,20 +52,37 @@ export interface CreateSipTrunkOptions {
|
|
|
51
52
|
}
|
|
52
53
|
export interface CreateSipInboundTrunkOptions {
|
|
53
54
|
metadata?: string;
|
|
55
|
+
/** @deprecated - use `allowedAddresses` instead */
|
|
54
56
|
allowed_addresses?: string[];
|
|
57
|
+
allowedAddresses?: string[];
|
|
58
|
+
/** @deprecated - use `allowedNumbers` instead */
|
|
55
59
|
allowed_numbers?: string[];
|
|
60
|
+
allowedNumbers?: string[];
|
|
61
|
+
/** @deprecated - use `authUsername` instead */
|
|
56
62
|
auth_username?: string;
|
|
63
|
+
authUsername?: string;
|
|
64
|
+
/** @deprecated - use `authPassword` instead */
|
|
57
65
|
auth_password?: string;
|
|
66
|
+
authPassword?: string;
|
|
58
67
|
headers?: { [key: string]: string };
|
|
59
68
|
headersToAttributes?: { [key: string]: string };
|
|
69
|
+
// Map SIP response headers from INVITE to sip.h.* participant attributes automatically.
|
|
70
|
+
includeHeaders?: SIPHeaderOptions;
|
|
71
|
+
krispEnabled?: boolean;
|
|
60
72
|
}
|
|
61
73
|
export interface CreateSipOutboundTrunkOptions {
|
|
62
74
|
metadata?: string;
|
|
63
75
|
transport: SIPTransport;
|
|
76
|
+
/** @deprecated - use `authUsername` instead */
|
|
64
77
|
auth_username?: string;
|
|
78
|
+
authUsername?: string;
|
|
79
|
+
/** @deprecated - use `authPassword` instead */
|
|
65
80
|
auth_password?: string;
|
|
81
|
+
authPassword?: string;
|
|
66
82
|
headers?: { [key: string]: string };
|
|
67
83
|
headersToAttributes?: { [key: string]: string };
|
|
84
|
+
// Map SIP response headers from INVITE to sip.h.* participant attributes automatically.
|
|
85
|
+
includeHeaders?: SIPHeaderOptions;
|
|
68
86
|
}
|
|
69
87
|
|
|
70
88
|
export interface SipDispatchRuleDirect {
|
|
@@ -84,16 +102,24 @@ export interface CreateSipDispatchRuleOptions {
|
|
|
84
102
|
metadata?: string;
|
|
85
103
|
trunkIds?: string[];
|
|
86
104
|
hidePhoneNumber?: boolean;
|
|
105
|
+
attributes?: { [key: string]: string };
|
|
106
|
+
roomPreset?: string;
|
|
107
|
+
roomConfig?: RoomConfiguration;
|
|
87
108
|
}
|
|
88
109
|
|
|
89
110
|
export interface CreateSipParticipantOptions {
|
|
90
111
|
participantIdentity?: string;
|
|
91
112
|
participantName?: string;
|
|
92
113
|
participantMetadata?: string;
|
|
114
|
+
participantAttributes?: { [key: string]: string };
|
|
93
115
|
dtmf?: string;
|
|
94
116
|
/** @deprecated - use `playDialtone` instead */
|
|
95
117
|
playRingtone?: boolean; // Deprecated, use playDialtone instead
|
|
96
118
|
playDialtone?: boolean;
|
|
119
|
+
// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
|
|
120
|
+
headers?: { [key: string]: string };
|
|
121
|
+
// Map SIP response headers from INVITE to sip.h.* participant attributes automatically.
|
|
122
|
+
includeHeaders?: SIPHeaderOptions;
|
|
97
123
|
hidePhoneNumber?: boolean;
|
|
98
124
|
ringingTimeout?: number; // Duration in seconds
|
|
99
125
|
maxCallDuration?: number; // Duration in seconds
|
|
@@ -102,6 +128,7 @@ export interface CreateSipParticipantOptions {
|
|
|
102
128
|
|
|
103
129
|
export interface TransferSipParticipantOptions {
|
|
104
130
|
playDialtone?: boolean;
|
|
131
|
+
headers?: { [key: string]: string };
|
|
105
132
|
}
|
|
106
133
|
|
|
107
134
|
/**
|
|
@@ -180,35 +207,22 @@ export class SipClient extends ServiceBase {
|
|
|
180
207
|
numbers: string[],
|
|
181
208
|
opts?: CreateSipInboundTrunkOptions,
|
|
182
209
|
): Promise<SIPInboundTrunkInfo> {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
let authUsername: string = '';
|
|
186
|
-
let authPassword: string = '';
|
|
187
|
-
let metadata: string = '';
|
|
188
|
-
let headers: { [key: string]: string } = {};
|
|
189
|
-
let headersToAttributes: { [key: string]: string } = {};
|
|
190
|
-
|
|
191
|
-
if (opts !== undefined) {
|
|
192
|
-
allowedAddresses = opts.allowed_addresses;
|
|
193
|
-
allowedNumbers = opts.allowed_numbers;
|
|
194
|
-
authUsername = opts.auth_username || '';
|
|
195
|
-
authPassword = opts.auth_password || '';
|
|
196
|
-
metadata = opts.metadata || '';
|
|
197
|
-
headers = opts.headers || {};
|
|
198
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
210
|
+
if (opts === undefined) {
|
|
211
|
+
opts = {};
|
|
199
212
|
}
|
|
200
|
-
|
|
201
213
|
const req = new CreateSIPInboundTrunkRequest({
|
|
202
214
|
trunk: new SIPInboundTrunkInfo({
|
|
203
215
|
name: name,
|
|
204
216
|
numbers: numbers,
|
|
205
|
-
metadata: metadata,
|
|
206
|
-
allowedAddresses: allowedAddresses,
|
|
207
|
-
allowedNumbers: allowedNumbers,
|
|
208
|
-
authUsername: authUsername,
|
|
209
|
-
authPassword: authPassword,
|
|
210
|
-
headers: headers,
|
|
211
|
-
headersToAttributes: headersToAttributes,
|
|
217
|
+
metadata: opts?.metadata,
|
|
218
|
+
allowedAddresses: opts.allowedAddresses ?? opts.allowed_addresses,
|
|
219
|
+
allowedNumbers: opts.allowedNumbers ?? opts.allowed_numbers,
|
|
220
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
221
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
222
|
+
headers: opts.headers,
|
|
223
|
+
headersToAttributes: opts.headersToAttributes,
|
|
224
|
+
includeHeaders: opts.includeHeaders,
|
|
225
|
+
krispEnabled: opts.krispEnabled,
|
|
212
226
|
}),
|
|
213
227
|
}).toJson();
|
|
214
228
|
|
|
@@ -233,20 +247,10 @@ export class SipClient extends ServiceBase {
|
|
|
233
247
|
numbers: string[],
|
|
234
248
|
opts?: CreateSipOutboundTrunkOptions,
|
|
235
249
|
): Promise<SIPOutboundTrunkInfo> {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
let headers: { [key: string]: string } = {};
|
|
241
|
-
let headersToAttributes: { [key: string]: string } = {};
|
|
242
|
-
|
|
243
|
-
if (opts !== undefined) {
|
|
244
|
-
authUsername = opts.auth_username || '';
|
|
245
|
-
authPassword = opts.auth_password || '';
|
|
246
|
-
transport = opts.transport || SIPTransport.SIP_TRANSPORT_AUTO;
|
|
247
|
-
metadata = opts.metadata || '';
|
|
248
|
-
headers = opts.headers || {};
|
|
249
|
-
headersToAttributes = opts.headersToAttributes || {};
|
|
250
|
+
if (opts === undefined) {
|
|
251
|
+
opts = {
|
|
252
|
+
transport: SIPTransport.SIP_TRANSPORT_AUTO,
|
|
253
|
+
};
|
|
250
254
|
}
|
|
251
255
|
|
|
252
256
|
const req = new CreateSIPOutboundTrunkRequest({
|
|
@@ -254,12 +258,13 @@ export class SipClient extends ServiceBase {
|
|
|
254
258
|
name: name,
|
|
255
259
|
address: address,
|
|
256
260
|
numbers: numbers,
|
|
257
|
-
metadata: metadata,
|
|
258
|
-
transport: transport,
|
|
259
|
-
authUsername: authUsername,
|
|
260
|
-
authPassword: authPassword,
|
|
261
|
-
headers: headers,
|
|
262
|
-
headersToAttributes: headersToAttributes,
|
|
261
|
+
metadata: opts.metadata,
|
|
262
|
+
transport: opts.transport,
|
|
263
|
+
authUsername: opts.authUsername ?? opts.auth_username,
|
|
264
|
+
authPassword: opts.authPassword ?? opts.auth_password,
|
|
265
|
+
headers: opts.headers,
|
|
266
|
+
headersToAttributes: opts.headersToAttributes,
|
|
267
|
+
includeHeaders: opts.includeHeaders,
|
|
263
268
|
}),
|
|
264
269
|
}).toJson();
|
|
265
270
|
|
|
@@ -329,18 +334,10 @@ export class SipClient extends ServiceBase {
|
|
|
329
334
|
rule: SipDispatchRuleDirect | SipDispatchRuleIndividual,
|
|
330
335
|
opts?: CreateSipDispatchRuleOptions,
|
|
331
336
|
): Promise<SIPDispatchRuleInfo> {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
let name: string = '';
|
|
335
|
-
let metadata: string = '';
|
|
336
|
-
let ruleProto: SIPDispatchRule | undefined = undefined;
|
|
337
|
-
|
|
338
|
-
if (opts !== undefined) {
|
|
339
|
-
trunkIds = opts.trunkIds;
|
|
340
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
341
|
-
name = opts.name || '';
|
|
342
|
-
metadata = opts.metadata || '';
|
|
337
|
+
if (opts === undefined) {
|
|
338
|
+
opts = {};
|
|
343
339
|
}
|
|
340
|
+
let ruleProto: SIPDispatchRule | undefined = undefined;
|
|
344
341
|
if (rule.type == 'direct') {
|
|
345
342
|
ruleProto = new SIPDispatchRule({
|
|
346
343
|
rule: {
|
|
@@ -365,10 +362,13 @@ export class SipClient extends ServiceBase {
|
|
|
365
362
|
|
|
366
363
|
const req = new CreateSIPDispatchRuleRequest({
|
|
367
364
|
rule: ruleProto,
|
|
368
|
-
trunkIds: trunkIds,
|
|
369
|
-
hidePhoneNumber: hidePhoneNumber,
|
|
370
|
-
name: name,
|
|
371
|
-
metadata: metadata,
|
|
365
|
+
trunkIds: opts.trunkIds,
|
|
366
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
367
|
+
name: opts.name,
|
|
368
|
+
metadata: opts.metadata,
|
|
369
|
+
attributes: opts.attributes,
|
|
370
|
+
roomPreset: opts.roomPreset,
|
|
371
|
+
roomConfig: opts.roomConfig,
|
|
372
372
|
}).toJson();
|
|
373
373
|
|
|
374
374
|
const data = await this.rpc.request(
|
|
@@ -416,48 +416,29 @@ export class SipClient extends ServiceBase {
|
|
|
416
416
|
roomName: string,
|
|
417
417
|
opts?: CreateSipParticipantOptions,
|
|
418
418
|
): Promise<SIPParticipantInfo> {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
let participantMetadata: string = '';
|
|
422
|
-
let dtmf: string = '';
|
|
423
|
-
let playRingtone: boolean = false;
|
|
424
|
-
let playDialtone: boolean = false;
|
|
425
|
-
let hidePhoneNumber: boolean = false;
|
|
426
|
-
let ringingTimeout: number | undefined = undefined;
|
|
427
|
-
let maxCallDuration: number | undefined = undefined;
|
|
428
|
-
let enableKrisp: boolean | undefined = undefined;
|
|
429
|
-
|
|
430
|
-
if (opts !== undefined) {
|
|
431
|
-
participantIdentity = opts.participantIdentity || '';
|
|
432
|
-
participantName = opts.participantName || '';
|
|
433
|
-
participantMetadata = opts.participantMetadata || '';
|
|
434
|
-
dtmf = opts.dtmf || '';
|
|
435
|
-
playRingtone = opts.playRingtone || false;
|
|
436
|
-
playDialtone = opts.playDialtone || playRingtone; // Enable PlayDialtone if either PlayDialtone or playRingtone is set
|
|
437
|
-
hidePhoneNumber = opts.hidePhoneNumber || false;
|
|
438
|
-
ringingTimeout = opts.ringingTimeout || undefined;
|
|
439
|
-
maxCallDuration = opts.maxCallDuration || undefined;
|
|
440
|
-
enableKrisp = opts.enableKrisp || undefined;
|
|
419
|
+
if (opts === undefined) {
|
|
420
|
+
opts = {};
|
|
441
421
|
}
|
|
442
422
|
|
|
443
423
|
const req = new CreateSIPParticipantRequest({
|
|
444
424
|
sipTrunkId: sipTrunkId,
|
|
445
425
|
sipCallTo: number,
|
|
446
426
|
roomName: roomName,
|
|
447
|
-
participantIdentity: participantIdentity,
|
|
448
|
-
participantName: participantName,
|
|
449
|
-
participantMetadata: participantMetadata,
|
|
450
|
-
dtmf: dtmf,
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
hidePhoneNumber: hidePhoneNumber,
|
|
454
|
-
|
|
455
|
-
|
|
427
|
+
participantIdentity: opts.participantIdentity || 'sip-participant',
|
|
428
|
+
participantName: opts.participantName,
|
|
429
|
+
participantMetadata: opts.participantMetadata,
|
|
430
|
+
dtmf: opts.dtmf,
|
|
431
|
+
playDialtone: opts.playDialtone ?? opts.playRingtone,
|
|
432
|
+
headers: opts.headers,
|
|
433
|
+
hidePhoneNumber: opts.hidePhoneNumber,
|
|
434
|
+
includeHeaders: opts.includeHeaders,
|
|
435
|
+
ringingTimeout: opts.ringingTimeout
|
|
436
|
+
? new Duration({ seconds: BigInt(opts.ringingTimeout) })
|
|
456
437
|
: undefined,
|
|
457
|
-
maxCallDuration: maxCallDuration
|
|
458
|
-
? new Duration({ seconds: BigInt(maxCallDuration) })
|
|
438
|
+
maxCallDuration: opts.maxCallDuration
|
|
439
|
+
? new Duration({ seconds: BigInt(opts.maxCallDuration) })
|
|
459
440
|
: undefined,
|
|
460
|
-
enableKrisp: enableKrisp,
|
|
441
|
+
enableKrisp: opts.enableKrisp,
|
|
461
442
|
}).toJson();
|
|
462
443
|
|
|
463
444
|
const data = await this.rpc.request(
|
|
@@ -480,17 +461,16 @@ export class SipClient extends ServiceBase {
|
|
|
480
461
|
transferTo: string,
|
|
481
462
|
opts?: TransferSipParticipantOptions,
|
|
482
463
|
): Promise<void> {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
if (opts !== undefined) {
|
|
486
|
-
playDialtone = opts.playDialtone || false;
|
|
464
|
+
if (opts === undefined) {
|
|
465
|
+
opts = {};
|
|
487
466
|
}
|
|
488
467
|
|
|
489
468
|
const req = new TransferSIPParticipantRequest({
|
|
490
469
|
participantIdentity: participantIdentity,
|
|
491
470
|
roomName: roomName,
|
|
492
471
|
transferTo: transferTo,
|
|
493
|
-
playDialtone: playDialtone,
|
|
472
|
+
playDialtone: opts.playDialtone,
|
|
473
|
+
headers: opts.headers,
|
|
494
474
|
}).toJson();
|
|
495
475
|
|
|
496
476
|
await this.rpc.request(
|