ringcentral-softphone 1.0.1 → 1.0.3
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/demos/inbound-call.ts +1 -1
- package/demos/outbound-call.ts +2 -4
- package/dist/demos/inbound-call.js +1 -1
- package/dist/demos/inbound-call.js.map +1 -1
- package/dist/demos/outbound-call.js +2 -2
- package/dist/demos/outbound-call.js.map +1 -1
- package/dist/src/call-session/index.d.ts +3 -1
- package/dist/src/call-session/index.js +3 -0
- package/dist/src/call-session/index.js.map +1 -1
- package/dist/src/call-session/streamer.d.ts +0 -2
- package/dist/src/call-session/streamer.js +6 -9
- package/dist/src/call-session/streamer.js.map +1 -1
- package/dist/src/softphone.d.ts +1 -1
- package/package.json +2 -2
- package/src/call-session/index.ts +5 -1
- package/src/call-session/streamer.ts +6 -9
- package/src/softphone.ts +1 -1
package/demos/inbound-call.ts
CHANGED
|
@@ -36,7 +36,7 @@ const main = async () => {
|
|
|
36
36
|
|
|
37
37
|
// call transfer
|
|
38
38
|
// await waitFor({ interval: 3000 });
|
|
39
|
-
// callSession.transfer(
|
|
39
|
+
// callSession.transfer(process.env.ANOTHER_CALLEE_FOR_TESTING!);
|
|
40
40
|
|
|
41
41
|
// // send audio to remote peer
|
|
42
42
|
// const streamer = callSession.streamAudio(fs.readFileSync('demos/test.wav'));
|
package/demos/outbound-call.ts
CHANGED
|
@@ -18,9 +18,7 @@ const main = async () => {
|
|
|
18
18
|
await softphone.register();
|
|
19
19
|
await waitFor({ interval: 1000 });
|
|
20
20
|
// callee format sample: 16506668888, country code is required, otherwise behavior is undefined
|
|
21
|
-
const callSession = await softphone.call(
|
|
22
|
-
parseInt(process.env.CALLEE_FOR_TESTING!, 10),
|
|
23
|
-
);
|
|
21
|
+
const callSession = await softphone.call(process.env.CALLEE_FOR_TESTING!);
|
|
24
22
|
|
|
25
23
|
callSession.on('busy', () => {
|
|
26
24
|
console.log('cannot reach the callee');
|
|
@@ -42,7 +40,7 @@ const main = async () => {
|
|
|
42
40
|
|
|
43
41
|
// call transfer
|
|
44
42
|
// await waitFor({ interval: 3000 });
|
|
45
|
-
// callSession.transfer(
|
|
43
|
+
// callSession.transfer(process.env.ANOTHER_CALLEE_FOR_TESTING!);
|
|
46
44
|
|
|
47
45
|
// // send audio to remote peer
|
|
48
46
|
// const streamer = callSession.streamAudio(fs.readFileSync('demos/test.wav'));
|
|
@@ -41,7 +41,7 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
41
41
|
});
|
|
42
42
|
// call transfer
|
|
43
43
|
// await waitFor({ interval: 3000 });
|
|
44
|
-
// callSession.transfer(
|
|
44
|
+
// callSession.transfer(process.env.ANOTHER_CALLEE_FOR_TESTING!);
|
|
45
45
|
// // send audio to remote peer
|
|
46
46
|
// const streamer = callSession.streamAudio(fs.readFileSync('demos/test.wav'));
|
|
47
47
|
// // You may subscribe to the 'finished' event of the streamer to know when the audio sending is finished
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-call.js","sourceRoot":"","sources":["../../demos/inbound-call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AAIpB,iEAAyC;AAEzC,wCAAwC;AAExC,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;CACpC,CAAC,CAAC;AACH,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,yBAAyB;AAEtD,MAAM,IAAI,GAAG,GAAS,EAAE;IACtB,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,sBAAsB;IACtB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAO,aAAa,EAAE,EAAE;QAC7C,mBAAmB;QACnB,qCAAqC;QACrC,0CAA0C;QAE1C,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE1D,gBAAgB;QAChB,MAAM,WAAW,GAAG,YAAE,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,MAAM,MAAM,EAAE;YACpE,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,SAAoB,EAAE,EAAE;YACrD,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,qCAAqC;QACrC
|
|
1
|
+
{"version":3,"file":"inbound-call.js","sourceRoot":"","sources":["../../demos/inbound-call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AAIpB,iEAAyC;AAEzC,wCAAwC;AAExC,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;CACpC,CAAC,CAAC;AACH,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,yBAAyB;AAEtD,MAAM,IAAI,GAAG,GAAS,EAAE;IACtB,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,sBAAsB;IACtB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAO,aAAa,EAAE,EAAE;QAC7C,mBAAmB;QACnB,qCAAqC;QACrC,0CAA0C;QAE1C,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE1D,gBAAgB;QAChB,MAAM,WAAW,GAAG,YAAE,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,MAAM,MAAM,EAAE;YACpE,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,SAAoB,EAAE,EAAE;YACrD,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,qCAAqC;QACrC,iEAAiE;QAEjE,+BAA+B;QAC/B,+EAA+E;QAC/E,0GAA0G;QAC1G,oCAAoC;QACpC,2CAA2C;QAC3C,MAAM;QACN,yDAAyD;QACzD,qCAAqC;QACrC,oBAAoB;QACpB,qCAAqC;QACrC,qBAAqB;QACrB,qCAAqC;QACrC,mBAAmB;QAEnB,iCAAiC;QACjC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;YAChC,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,qCAAqC;QACrC,6BAA6B;QAC7B,qCAAqC;QACrC,6BAA6B;QAE7B,sBAAsB;QACtB,qCAAqC;QACrC,wBAAwB;IAC1B,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AACF,IAAI,EAAE,CAAC"}
|
|
@@ -27,7 +27,7 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
27
27
|
yield softphone.register();
|
|
28
28
|
yield (0, wait_for_async_1.default)({ interval: 1000 });
|
|
29
29
|
// callee format sample: 16506668888, country code is required, otherwise behavior is undefined
|
|
30
|
-
const callSession = yield softphone.call(
|
|
30
|
+
const callSession = yield softphone.call(process.env.CALLEE_FOR_TESTING);
|
|
31
31
|
callSession.on('busy', () => {
|
|
32
32
|
console.log('cannot reach the callee');
|
|
33
33
|
});
|
|
@@ -46,7 +46,7 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
46
46
|
});
|
|
47
47
|
// call transfer
|
|
48
48
|
// await waitFor({ interval: 3000 });
|
|
49
|
-
// callSession.transfer(
|
|
49
|
+
// callSession.transfer(process.env.ANOTHER_CALLEE_FOR_TESTING!);
|
|
50
50
|
// // send audio to remote peer
|
|
51
51
|
// const streamer = callSession.streamAudio(fs.readFileSync('demos/test.wav'));
|
|
52
52
|
// // You may subscribe to the 'finished' event of the streamer to know when the audio sending is finished
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound-call.js","sourceRoot":"","sources":["../../demos/outbound-call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AAEpB,oEAAqC;AAGrC,iEAAyC;AAEzC,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;CACpC,CAAC,CAAC;AACH,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,yBAAyB;AAEtD,MAAM,IAAI,GAAG,GAAS,EAAE;IACtB,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,MAAM,IAAA,wBAAO,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,+FAA+F;IAC/F,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"outbound-call.js","sourceRoot":"","sources":["../../demos/outbound-call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4CAAoB;AAEpB,oEAAqC;AAGrC,iEAAyC;AAEzC,MAAM,SAAS,GAAG,IAAI,mBAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;CACpC,CAAC,CAAC;AACH,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,yBAAyB;AAEtD,MAAM,IAAI,GAAG,GAAS,EAAE;IACtB,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3B,MAAM,IAAA,wBAAO,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,+FAA+F;IAC/F,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAmB,CAAC,CAAC;IAE1E,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,GAAS,EAAE;QACtC,gBAAgB;QAChB,MAAM,WAAW,GAAG,YAAE,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,MAAM,MAAM,EAAE;YACpE,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,SAAoB,EAAE,EAAE;YACrD,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,iCAAiC;QACjC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;YAChC,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,qCAAqC;QACrC,iEAAiE;QAEjE,+BAA+B;QAC/B,+EAA+E;QAC/E,0GAA0G;QAC1G,oCAAoC;QACpC,2CAA2C;QAC3C,MAAM;QACN,yDAAyD;QACzD,qCAAqC;QACrC,oBAAoB;QACpB,qCAAqC;QACrC,qBAAqB;QACrB,qCAAqC;QACrC,mBAAmB;QAEnB,eAAe;QACf,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,qCAAqC;QACrC,6BAA6B;QAC7B,qCAAqC;QACrC,6BAA6B;QAE7B,sBAAsB;QACtB,qCAAqC;QACrC,wBAAwB;IAC1B,CAAC,CAAA,CAAC,CAAC;IAEH,+CAA+C;IAC/C,qCAAqC;IACrC,wBAAwB;AAC1B,CAAC,CAAA,CAAC;AACF,IAAI,EAAE,CAAC"}
|
|
@@ -15,6 +15,8 @@ declare abstract class CallSession extends EventEmitter {
|
|
|
15
15
|
disposed: boolean;
|
|
16
16
|
srtpSession: SrtpSession;
|
|
17
17
|
ssrc: number;
|
|
18
|
+
sequenceNumber: number;
|
|
19
|
+
timestamp: number;
|
|
18
20
|
constructor(softphone: Softphone, sipMessage: InboundMessage);
|
|
19
21
|
set remoteKey(key: string);
|
|
20
22
|
get callId(): string;
|
|
@@ -25,6 +27,6 @@ declare abstract class CallSession extends EventEmitter {
|
|
|
25
27
|
sendPacket(rtpPacket: RtpPacket): void;
|
|
26
28
|
protected startLocalServices(): Promise<void>;
|
|
27
29
|
protected dispose(): void;
|
|
28
|
-
transfer(transferTo:
|
|
30
|
+
transfer(transferTo: string): void;
|
|
29
31
|
}
|
|
30
32
|
export default CallSession;
|
|
@@ -24,7 +24,10 @@ class CallSession extends events_1.default {
|
|
|
24
24
|
constructor(softphone, sipMessage) {
|
|
25
25
|
super();
|
|
26
26
|
this.disposed = false;
|
|
27
|
+
// for audio streaming
|
|
27
28
|
this.ssrc = (0, utils_1.randomInt)();
|
|
29
|
+
this.sequenceNumber = (0, utils_1.randomInt)();
|
|
30
|
+
this.timestamp = (0, utils_1.randomInt)();
|
|
28
31
|
this.softphone = softphone;
|
|
29
32
|
this.sipMessage = sipMessage;
|
|
30
33
|
this.remoteIP = this.sipMessage.body.match(/c=IN IP4 ([\d.]+)/)[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/call-session/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,oDAAkC;AAElC,2CAA+D;AAE/D,oCAAgC;AAChC,mDAA2B;AAC3B,gDAIwB;AAExB,oCAAuD;AACvD,0DAAkC;AAElC,MAAe,WAAY,SAAQ,gBAAY;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/call-session/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,6 @@ declare class Streamer extends EventEmitter {
|
|
|
5
5
|
private callSession;
|
|
6
6
|
private buffer;
|
|
7
7
|
private originalBuffer;
|
|
8
|
-
private sequenceNumber;
|
|
9
|
-
private timestamp;
|
|
10
8
|
constructor(callSesstion: CallSession, buffer: Buffer);
|
|
11
9
|
start(): Promise<void>;
|
|
12
10
|
stop(): Promise<void>;
|
|
@@ -15,13 +15,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const events_1 = __importDefault(require("events"));
|
|
16
16
|
const werift_rtp_1 = require("werift-rtp");
|
|
17
17
|
const codec_1 = require("../codec");
|
|
18
|
-
const utils_1 = require("../utils");
|
|
19
18
|
class Streamer extends events_1.default {
|
|
20
19
|
constructor(callSesstion, buffer) {
|
|
21
20
|
super();
|
|
22
21
|
this.paused = false;
|
|
23
|
-
this.sequenceNumber = (0, utils_1.randomInt)();
|
|
24
|
-
this.timestamp = (0, utils_1.randomInt)();
|
|
25
22
|
this.callSession = callSesstion;
|
|
26
23
|
this.buffer = buffer;
|
|
27
24
|
this.originalBuffer = buffer;
|
|
@@ -63,8 +60,8 @@ class Streamer extends events_1.default {
|
|
|
63
60
|
marker: false,
|
|
64
61
|
payloadOffset: 12,
|
|
65
62
|
payloadType: 109,
|
|
66
|
-
sequenceNumber: this.sequenceNumber,
|
|
67
|
-
timestamp: this.timestamp,
|
|
63
|
+
sequenceNumber: this.callSession.sequenceNumber,
|
|
64
|
+
timestamp: this.callSession.timestamp,
|
|
68
65
|
ssrc: this.callSession.ssrc,
|
|
69
66
|
csrcLength: 0,
|
|
70
67
|
csrc: [],
|
|
@@ -73,11 +70,11 @@ class Streamer extends events_1.default {
|
|
|
73
70
|
extensions: [],
|
|
74
71
|
}), temp);
|
|
75
72
|
this.callSession.send(this.callSession.srtpSession.encrypt(rtpPacket.payload, rtpPacket.header));
|
|
76
|
-
this.sequenceNumber += 1;
|
|
77
|
-
if (this.sequenceNumber > 65535) {
|
|
78
|
-
this.sequenceNumber = 0;
|
|
73
|
+
this.callSession.sequenceNumber += 1;
|
|
74
|
+
if (this.callSession.sequenceNumber > 65535) {
|
|
75
|
+
this.callSession.sequenceNumber = 0;
|
|
79
76
|
}
|
|
80
|
-
this.timestamp += 320;
|
|
77
|
+
this.callSession.timestamp += 320;
|
|
81
78
|
this.buffer = this.buffer.subarray(640);
|
|
82
79
|
if (this.finished) {
|
|
83
80
|
this.emit('finished');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamer.js","sourceRoot":"","sources":["../../../src/call-session/streamer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAAkC;AAElC,2CAAkD;AAGlD,oCAAgC;
|
|
1
|
+
{"version":3,"file":"streamer.js","sourceRoot":"","sources":["../../../src/call-session/streamer.ts"],"names":[],"mappings":"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"}
|
package/dist/src/softphone.d.ts
CHANGED
|
@@ -20,6 +20,6 @@ declare class Softphone extends EventEmitter {
|
|
|
20
20
|
send(message: OutboundMessage, waitForReply?: boolean): Promise<InboundMessage>;
|
|
21
21
|
answer(inviteMessage: InboundMessage): Promise<InboundCallSession>;
|
|
22
22
|
decline(inviteMessage: InboundMessage): Promise<void>;
|
|
23
|
-
call(callee:
|
|
23
|
+
call(callee: string): Promise<OutboundCallSession>;
|
|
24
24
|
}
|
|
25
25
|
export default Softphone;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ringcentral-softphone",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"homepage": "https://github.com/ringcentral/ringcentral-softphone-ts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/src/softphone.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@rc-ex/core": "^1.4.2",
|
|
21
|
-
"@types/node": "^22.10.
|
|
21
|
+
"@types/node": "^22.10.2",
|
|
22
22
|
"dotenv-override-true": "^6.2.2",
|
|
23
23
|
"eslint-config-tyler": "^0.2.2",
|
|
24
24
|
"sort-package-json": "^2.12.0",
|
|
@@ -24,7 +24,11 @@ abstract class CallSession extends EventEmitter {
|
|
|
24
24
|
public remotePort: number;
|
|
25
25
|
public disposed = false;
|
|
26
26
|
public srtpSession: SrtpSession;
|
|
27
|
+
|
|
28
|
+
// for audio streaming
|
|
27
29
|
public ssrc = randomInt();
|
|
30
|
+
public sequenceNumber = randomInt();
|
|
31
|
+
public timestamp = randomInt();
|
|
28
32
|
|
|
29
33
|
public constructor(softphone: Softphone, sipMessage: InboundMessage) {
|
|
30
34
|
super();
|
|
@@ -166,7 +170,7 @@ abstract class CallSession extends EventEmitter {
|
|
|
166
170
|
this.socket?.close();
|
|
167
171
|
}
|
|
168
172
|
|
|
169
|
-
public transfer(transferTo:
|
|
173
|
+
public transfer(transferTo: string) {
|
|
170
174
|
const requestMessage = new RequestMessage(
|
|
171
175
|
`REFER sip:${this.softphone.sipInfo.username}@${this.softphone.sipInfo.outboundProxy};transport=tls SIP/2.0`,
|
|
172
176
|
{
|
|
@@ -4,15 +4,12 @@ import { RtpHeader, RtpPacket } from 'werift-rtp';
|
|
|
4
4
|
|
|
5
5
|
import type CallSession from '.';
|
|
6
6
|
import { opus } from '../codec';
|
|
7
|
-
import { randomInt } from '../utils';
|
|
8
7
|
|
|
9
8
|
class Streamer extends EventEmitter {
|
|
10
9
|
public paused = false;
|
|
11
10
|
private callSession: CallSession;
|
|
12
11
|
private buffer: Buffer;
|
|
13
12
|
private originalBuffer: Buffer;
|
|
14
|
-
private sequenceNumber = randomInt();
|
|
15
|
-
private timestamp = randomInt();
|
|
16
13
|
|
|
17
14
|
public constructor(callSesstion: CallSession, buffer: Buffer) {
|
|
18
15
|
super();
|
|
@@ -56,8 +53,8 @@ class Streamer extends EventEmitter {
|
|
|
56
53
|
marker: false,
|
|
57
54
|
payloadOffset: 12,
|
|
58
55
|
payloadType: 109,
|
|
59
|
-
sequenceNumber: this.sequenceNumber,
|
|
60
|
-
timestamp: this.timestamp,
|
|
56
|
+
sequenceNumber: this.callSession.sequenceNumber,
|
|
57
|
+
timestamp: this.callSession.timestamp,
|
|
61
58
|
ssrc: this.callSession.ssrc,
|
|
62
59
|
csrcLength: 0,
|
|
63
60
|
csrc: [],
|
|
@@ -73,11 +70,11 @@ class Streamer extends EventEmitter {
|
|
|
73
70
|
rtpPacket.header,
|
|
74
71
|
),
|
|
75
72
|
);
|
|
76
|
-
this.sequenceNumber += 1;
|
|
77
|
-
if (this.sequenceNumber > 65535) {
|
|
78
|
-
this.sequenceNumber = 0;
|
|
73
|
+
this.callSession.sequenceNumber += 1;
|
|
74
|
+
if (this.callSession.sequenceNumber > 65535) {
|
|
75
|
+
this.callSession.sequenceNumber = 0;
|
|
79
76
|
}
|
|
80
|
-
this.timestamp += 320;
|
|
77
|
+
this.callSession.timestamp += 320;
|
|
81
78
|
this.buffer = this.buffer.subarray(640);
|
|
82
79
|
if (this.finished) {
|
|
83
80
|
this.emit('finished');
|
package/src/softphone.ts
CHANGED