ringcentral-softphone 0.8.3 → 0.8.4

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.
Files changed (52) hide show
  1. package/package.json +2 -2
  2. package/dist/call-session/inbound.d.ts +0 -8
  3. package/dist/call-session/inbound.js +0 -48
  4. package/dist/call-session/inbound.js.map +0 -1
  5. package/dist/call-session/index.d.ts +0 -24
  6. package/dist/call-session/index.js +0 -113
  7. package/dist/call-session/index.js.map +0 -1
  8. package/dist/call-session/outbound.d.ts +0 -9
  9. package/dist/call-session/outbound.js +0 -52
  10. package/dist/call-session/outbound.js.map +0 -1
  11. package/dist/dtmf.d.ts +0 -8
  12. package/dist/dtmf.js +0 -25
  13. package/dist/dtmf.js.map +0 -1
  14. package/dist/inbound-call-session.d.ts +0 -21
  15. package/dist/inbound-call-session.js +0 -191
  16. package/dist/inbound-call-session.js.map +0 -1
  17. package/dist/index.d.ts +0 -1
  18. package/dist/index.js +0 -96
  19. package/dist/index.js.map +0 -1
  20. package/dist/sip-message/inbound/index.d.ts +0 -5
  21. package/dist/sip-message/inbound/index.js +0 -23
  22. package/dist/sip-message/inbound/index.js.map +0 -1
  23. package/dist/sip-message/index.d.ts +0 -5
  24. package/dist/sip-message/index.js +0 -17
  25. package/dist/sip-message/index.js.map +0 -1
  26. package/dist/sip-message/outbound/index.d.ts +0 -5
  27. package/dist/sip-message/outbound/index.js +0 -15
  28. package/dist/sip-message/outbound/index.js.map +0 -1
  29. package/dist/sip-message/outbound/request-message.d.ts +0 -7
  30. package/dist/sip-message/outbound/request-message.js +0 -59
  31. package/dist/sip-message/outbound/request-message.js.map +0 -1
  32. package/dist/sip-message/outbound/request.d.ts +0 -7
  33. package/dist/sip-message/outbound/request.js +0 -29
  34. package/dist/sip-message/outbound/request.js.map +0 -1
  35. package/dist/sip-message/outbound/response-message.d.ts +0 -6
  36. package/dist/sip-message/outbound/response-message.js +0 -54
  37. package/dist/sip-message/outbound/response-message.js.map +0 -1
  38. package/dist/sip-message/outbound/response.d.ts +0 -6
  39. package/dist/sip-message/outbound/response.js +0 -22
  40. package/dist/sip-message/outbound/response.js.map +0 -1
  41. package/dist/sip-message/response-codes.d.ts +0 -4
  42. package/dist/sip-message/response-codes.js +0 -84
  43. package/dist/sip-message/response-codes.js.map +0 -1
  44. package/dist/sip-message/sip-message.d.ts +0 -10
  45. package/dist/sip-message/sip-message.js +0 -26
  46. package/dist/sip-message/sip-message.js.map +0 -1
  47. package/dist/softphone.d.ts +0 -26
  48. package/dist/softphone.js +0 -175
  49. package/dist/softphone.js.map +0 -1
  50. package/dist/utils.d.ts +0 -6
  51. package/dist/utils.js +0 -37
  52. package/dist/utils.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ringcentral-softphone",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "license": "MIT",
5
5
  "main": "dist/softphone.js",
6
6
  "types": "dist/softphone.d.ts",
@@ -8,7 +8,7 @@
8
8
  "lint": "eslint --fix '**/*.{ts,tsx,js,jsx}' && prettier --write . && sort-package-json",
9
9
  "in": "rm -rf *.raw && tsx -r dotenv-override-true/config demos/inbound-call.ts",
10
10
  "out": "rm -rf *.raw && tsx -r dotenv-override-true/config demos/outbound-call.ts",
11
- "prepublishOnly": "rm -rf *.raw && yarn tsc"
11
+ "prepublishOnly": "rm -rf *.raw && rm -rf dist && yarn tsc"
12
12
  },
13
13
  "homepage": "https://github.com/ringcentral/ringcentral-softphone-ts",
14
14
  "devDependencies": {
@@ -1,8 +0,0 @@
1
- import { type InboundMessage } from '../sip-message';
2
- import type Softphone from '../softphone';
3
- import CallSession from '.';
4
- declare class InboundCallSession extends CallSession {
5
- constructor(softphone: Softphone, inviteMessage: InboundMessage);
6
- answer(): Promise<void>;
7
- }
8
- export default InboundCallSession;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const sip_message_1 = require("../sip-message");
16
- const utils_1 = require("../utils");
17
- const _1 = __importDefault(require("."));
18
- class InboundCallSession extends _1.default {
19
- constructor(softphone, inviteMessage) {
20
- super(softphone, inviteMessage);
21
- this.localPeer = inviteMessage.headers.To;
22
- this.remotePeer = inviteMessage.headers.From;
23
- }
24
- answer() {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const answerSDP = `
27
- v=0
28
- o=- ${(0, utils_1.randomInt)()} 0 IN IP4 127.0.0.1
29
- s=rc-softphone-ts
30
- c=IN IP4 127.0.0.1
31
- t=0 0
32
- m=audio ${(0, utils_1.randomInt)()} RTP/AVP 0 101
33
- a=rtpmap:0 PCMU/8000
34
- a=rtpmap:101 telephone-event/8000
35
- a=fmtp:101 0-15
36
- a=sendrecv
37
- a=ssrc:${(0, utils_1.randomInt)()} cname:${(0, utils_1.uuid)()}
38
- `.trim();
39
- const newMessage = new sip_message_1.ResponseMessage(this.sipMessage, 200, {
40
- 'Content-Type': 'application/sdp',
41
- }, answerSDP);
42
- this.softphone.send(newMessage);
43
- this.startLocalServices();
44
- });
45
- }
46
- }
47
- exports.default = InboundCallSession;
48
- //# sourceMappingURL=inbound.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/call-session/inbound.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAsE;AACtE,oCAA2C;AAE3C,yCAA4B;AAE5B,MAAM,kBAAmB,SAAQ,UAAW;IAC1C,YAAmB,SAAoB,EAAE,aAA6B;QACpE,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,CAAC;IAEY,MAAM;;YACjB,MAAM,SAAS,GAAG;;MAEhB,IAAA,iBAAS,GAAE;;;;UAIP,IAAA,iBAAS,GAAE;;;;;SAKZ,IAAA,iBAAS,GAAE,UAAU,IAAA,YAAI,GAAE;CACnC,CAAC,IAAI,EAAE,CAAC;YACL,MAAM,UAAU,GAAG,IAAI,6BAAe,CACpC,IAAI,CAAC,UAAU,EACf,GAAG,EACH;gBACE,cAAc,EAAE,iBAAiB;aAClC,EACD,SAAS,CACV,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;KAAA;CACF;AAED,kBAAe,kBAAkB,CAAC"}
@@ -1,24 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import EventEmitter from 'events';
5
- import dgram from 'dgram';
6
- import { type InboundMessage } from '../sip-message';
7
- import type Softphone from '../softphone';
8
- declare abstract class CallSession extends EventEmitter {
9
- softphone: Softphone;
10
- sipMessage: InboundMessage;
11
- socket: dgram.Socket;
12
- localPeer: string;
13
- remotePeer: string;
14
- remoteIP: string;
15
- remotePort: number;
16
- constructor(softphone: Softphone, sipMessage: InboundMessage);
17
- get callId(): string;
18
- send(data: string | Buffer): void;
19
- hangup(): Promise<void>;
20
- sendDTMF(char: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '*' | '#'): Promise<void>;
21
- protected startLocalServices(): Promise<void>;
22
- private dispose;
23
- }
24
- export default CallSession;
@@ -1,113 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const events_1 = __importDefault(require("events"));
16
- const dgram_1 = __importDefault(require("dgram"));
17
- const werift_rtp_1 = require("werift-rtp");
18
- const sip_message_1 = require("../sip-message");
19
- const utils_1 = require("../utils");
20
- const dtmf_1 = __importDefault(require("../dtmf"));
21
- class CallSession extends events_1.default {
22
- constructor(softphone, sipMessage) {
23
- super();
24
- this.softphone = softphone;
25
- this.sipMessage = sipMessage;
26
- this.remoteIP = this.sipMessage.body.match(/c=IN IP4 ([\d.]+)/)[1];
27
- this.remotePort = parseInt(this.sipMessage.body.match(/m=audio (\d+) /)[1], 10);
28
- }
29
- get callId() {
30
- return this.sipMessage.headers['Call-Id'];
31
- }
32
- send(data) {
33
- this.socket.send(data, this.remotePort, this.remoteIP);
34
- }
35
- hangup() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const requestMessage = new sip_message_1.RequestMessage(`BYE sip:${this.softphone.sipInfo.domain} SIP/2.0`, {
38
- 'Call-Id': this.callId,
39
- From: this.localPeer,
40
- To: this.remotePeer,
41
- Via: `SIP/2.0/TCP ${this.softphone.fakeDomain};branch=${(0, utils_1.uuid)()}`,
42
- });
43
- this.softphone.send(requestMessage);
44
- });
45
- }
46
- sendDTMF(char) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const timestamp = Math.floor(Date.now() / 1000);
49
- let sequenceNumber = timestamp % 65536;
50
- const rtpHeader = new werift_rtp_1.RtpHeader({
51
- version: 2,
52
- padding: false,
53
- paddingSize: 0,
54
- extension: false,
55
- marker: false,
56
- payloadOffset: 12,
57
- payloadType: 101,
58
- sequenceNumber,
59
- timestamp,
60
- ssrc: (0, utils_1.randomInt)(),
61
- csrcLength: 0,
62
- csrc: [],
63
- extensionProfile: 48862,
64
- extensionLength: undefined,
65
- extensions: [],
66
- });
67
- for (const payload of dtmf_1.default.charToPayloads(char)) {
68
- rtpHeader.sequenceNumber = sequenceNumber++;
69
- const rtpPacket = new werift_rtp_1.RtpPacket(rtpHeader, payload);
70
- this.send(rtpPacket.serialize());
71
- }
72
- });
73
- }
74
- startLocalServices() {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- this.socket = dgram_1.default.createSocket('udp4');
77
- this.socket.on('message', (message) => {
78
- const rtpPacket = werift_rtp_1.RtpPacket.deSerialize(message);
79
- this.emit('rtpPacket', rtpPacket);
80
- if (rtpPacket.header.payloadType === 101) {
81
- this.emit('dtmfPacket', rtpPacket);
82
- const char = dtmf_1.default.payloadToChar(rtpPacket.payload);
83
- if (char) {
84
- this.emit('dtmf', char);
85
- }
86
- }
87
- else {
88
- this.emit('audioPacket', rtpPacket);
89
- }
90
- });
91
- this.socket.bind();
92
- // send a message to remote server so that it knows where to reply
93
- this.send('hello');
94
- const byeHandler = (inboundMessage) => {
95
- if (inboundMessage.headers['Call-Id'] !== this.callId) {
96
- return;
97
- }
98
- if (inboundMessage.headers.CSeq.endsWith(' BYE')) {
99
- this.softphone.off('message', byeHandler);
100
- this.dispose();
101
- }
102
- };
103
- this.softphone.on('message', byeHandler);
104
- });
105
- }
106
- dispose() {
107
- this.emit('disposed');
108
- this.socket.removeAllListeners();
109
- this.socket.close();
110
- }
111
- }
112
- exports.default = CallSession;
113
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/call-session/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { type InboundMessage } from '../sip-message';
2
- import type Softphone from '../softphone';
3
- import CallSession from '.';
4
- declare class OutboundCallSession extends CallSession {
5
- constructor(softphone: Softphone, answerMessage: InboundMessage);
6
- init(): Promise<void>;
7
- cancel(): Promise<void>;
8
- }
9
- export default OutboundCallSession;
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const sip_message_1 = require("../sip-message");
16
- const _1 = __importDefault(require("."));
17
- const utils_1 = require("../utils");
18
- class OutboundCallSession extends _1.default {
19
- constructor(softphone, answerMessage) {
20
- super(softphone, answerMessage);
21
- this.localPeer = answerMessage.headers.From;
22
- this.remotePeer = answerMessage.headers.To;
23
- this.init();
24
- }
25
- init() {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- // wait for user to answer the call
28
- const answerHandler = (message) => {
29
- if (message.headers.CSeq === this.sipMessage.headers.CSeq) {
30
- this.softphone.off('message', answerHandler);
31
- this.emit('answered');
32
- }
33
- };
34
- this.softphone.on('message', answerHandler);
35
- this.once('answered', () => __awaiter(this, void 0, void 0, function* () { return this.startLocalServices(); }));
36
- });
37
- }
38
- cancel() {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- const requestMessage = new sip_message_1.RequestMessage(`CANCEL ${(0, utils_1.extractAddress)(this.remotePeer)} SIP/2.0`, {
41
- 'Call-Id': this.callId,
42
- From: this.localPeer,
43
- To: (0, utils_1.withoutTag)(this.remotePeer),
44
- Via: this.sipMessage.headers.Via,
45
- CSeq: this.sipMessage.headers.CSeq.replace(' INVITE', ' CANCEL'),
46
- });
47
- this.softphone.send(requestMessage);
48
- });
49
- }
50
- }
51
- exports.default = OutboundCallSession;
52
- //# sourceMappingURL=outbound.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/call-session/outbound.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gDAAqE;AAErE,yCAA4B;AAC5B,oCAAsD;AAEtD,MAAM,mBAAoB,SAAQ,UAAW;IAC3C,YAAmB,SAAoB,EAAE,aAA6B;QACpE,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEY,IAAI;;YACf,mCAAmC;YACnC,MAAM,aAAa,GAAG,CAAC,OAAuB,EAAE,EAAE;gBAChD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAS,EAAE,gDAAC,OAAA,IAAI,CAAC,kBAAkB,EAAE,CAAA,GAAA,CAAC,CAAC;QAC/D,CAAC;KAAA;IAEY,MAAM;;YACjB,MAAM,cAAc,GAAG,IAAI,4BAAc,CAAC,UAAU,IAAA,sBAAc,EAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC7F,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,EAAE,EAAE,IAAA,kBAAU,EAAC,IAAI,CAAC,UAAU,CAAC;gBAC/B,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG;gBAChC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;aACjE,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;KAAA;CACF;AAED,kBAAe,mBAAmB,CAAC"}
package/dist/dtmf.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /// <reference types="node" />
2
- declare class DTMF {
3
- static readonly phoneChars: string[];
4
- private static readonly payloads;
5
- static charToPayloads: (char: string) => Buffer[];
6
- static payloadToChar: (payload: Buffer) => string;
7
- }
8
- export default DTMF;
package/dist/dtmf.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class DTMF {
4
- }
5
- DTMF.phoneChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '#'];
6
- DTMF.payloads = [0x00060000, 0x000600a0, 0x00060140, 0x00860320, 0x00860320, 0x00860320];
7
- DTMF.charToPayloads = (char) => {
8
- const index = DTMF.phoneChars.indexOf(char[0]);
9
- if (index === -1) {
10
- throw new Error('invalid phone char');
11
- }
12
- return DTMF.payloads.map((payload) => {
13
- const temp = payload + index * 0x01000000;
14
- const buffer = Buffer.alloc(4);
15
- buffer.writeIntBE(temp, 0, 4);
16
- return buffer;
17
- });
18
- };
19
- DTMF.payloadToChar = (payload) => {
20
- const intBE = payload.readIntBE(0, 4);
21
- const index = (intBE - 0x00060000) / 0x01000000;
22
- return DTMF.phoneChars[index];
23
- };
24
- exports.default = DTMF;
25
- //# sourceMappingURL=dtmf.js.map
package/dist/dtmf.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"dtmf.js","sourceRoot":"","sources":["../src/dtmf.ts"],"names":[],"mappings":";;AAAA,MAAM,IAAI;;AACe,eAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,aAAQ,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE9F,mBAAc,GAAG,CAAC,IAAY,EAAE,EAAE;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEY,kBAAa,GAAG,CAAC,OAAe,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;IAChD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAGJ,kBAAe,IAAI,CAAC"}
@@ -1,21 +0,0 @@
1
- /// <reference types="node" />
2
- import EventEmitter from 'events';
3
- import { type InboundMessage } from './sip-message';
4
- import type Softphone from './softphone';
5
- declare class InboundCallSession extends EventEmitter {
6
- disposed: boolean;
7
- inviteMessage: InboundMessage;
8
- softphone: Softphone;
9
- private socket;
10
- private remoteIP;
11
- private remotePort;
12
- private rtpPort;
13
- constructor(softphone: Softphone, inviteMessage: InboundMessage);
14
- get callId(): string;
15
- answer(): Promise<void>;
16
- hangup(): Promise<void>;
17
- sendDTMF(char: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '*' | '#'): Promise<void>;
18
- private dispose;
19
- private send;
20
- }
21
- export default InboundCallSession;
@@ -1,191 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- var __importDefault = (this && this.__importDefault) || function (mod) {
54
- return (mod && mod.__esModule) ? mod : { "default": mod };
55
- };
56
- Object.defineProperty(exports, "__esModule", { value: true });
57
- var get_port_1 = __importDefault(require("get-port"));
58
- var werift_rtp_1 = require("werift-rtp");
59
- var events_1 = __importDefault(require("events"));
60
- var dgram_1 = __importDefault(require("dgram"));
61
- var sip_message_1 = require("./sip-message");
62
- var utils_1 = require("./utils");
63
- var dtmf_1 = __importDefault(require("./dtmf"));
64
- var InboundCallSession = /** @class */ (function (_super) {
65
- __extends(InboundCallSession, _super);
66
- function InboundCallSession(softphone, inviteMessage) {
67
- var _this = _super.call(this) || this;
68
- _this.disposed = false;
69
- _this.softphone = softphone;
70
- _this.inviteMessage = inviteMessage;
71
- _this.remoteIP = _this.inviteMessage.body.match(/c=IN IP4 ([\d.]+)/)[1];
72
- _this.remotePort = parseInt(_this.inviteMessage.body.match(/m=audio (\d+) /)[1], 10);
73
- return _this;
74
- }
75
- Object.defineProperty(InboundCallSession.prototype, "callId", {
76
- get: function () {
77
- return this.inviteMessage.headers['Call-Id'];
78
- },
79
- enumerable: false,
80
- configurable: true
81
- });
82
- InboundCallSession.prototype.answer = function () {
83
- return __awaiter(this, void 0, void 0, function () {
84
- var _a, answerSDP, newMessage, byeHandler;
85
- var _this = this;
86
- return __generator(this, function (_b) {
87
- switch (_b.label) {
88
- case 0:
89
- _a = this;
90
- return [4 /*yield*/, (0, get_port_1.default)()];
91
- case 1:
92
- _a.rtpPort = _b.sent();
93
- this.socket = dgram_1.default.createSocket('udp4');
94
- this.socket.on('message', function (message) {
95
- var rtpPacket = werift_rtp_1.RtpPacket.deSerialize(message);
96
- _this.emit('rtpPacket', rtpPacket);
97
- if (rtpPacket.header.payloadType === 101) {
98
- _this.emit('dtmfPacket', rtpPacket);
99
- var char = dtmf_1.default.payloadToChar(rtpPacket.payload);
100
- if (char) {
101
- _this.emit('dtmf', char);
102
- }
103
- }
104
- else {
105
- _this.emit('audioPacket', rtpPacket);
106
- }
107
- });
108
- this.socket.bind(this.rtpPort);
109
- // send a message to remote server so that it knows where to reply
110
- this.send('hello');
111
- answerSDP = "\nv=0\no=- ".concat(this.rtpPort, " 0 IN IP4 127.0.0.1\ns=rc-softphone-ts\nc=IN IP4 127.0.0.1\nt=0 0\nm=audio ").concat(this.rtpPort, " RTP/AVP 0 101\na=rtpmap:0 PCMU/8000\na=rtpmap:101 telephone-event/8000\na=fmtp:101 0-15\na=sendrecv\na=ssrc:").concat(this.rtpPort, " cname:").concat((0, utils_1.uuid)(), "\n").trim();
112
- newMessage = new sip_message_1.ResponseMessage(this.inviteMessage, 200, {
113
- 'Content-Type': 'application/sdp',
114
- }, answerSDP);
115
- this.softphone.send(newMessage);
116
- byeHandler = function (inboundMessage) {
117
- if (inboundMessage.headers['Call-Id'] !== _this.callId) {
118
- return;
119
- }
120
- if (inboundMessage.headers.CSeq.endsWith(' BYE')) {
121
- _this.softphone.off('message', byeHandler);
122
- _this.dispose();
123
- }
124
- };
125
- this.softphone.on('message', byeHandler);
126
- return [2 /*return*/];
127
- }
128
- });
129
- });
130
- };
131
- InboundCallSession.prototype.hangup = function () {
132
- return __awaiter(this, void 0, void 0, function () {
133
- var requestMessage;
134
- return __generator(this, function (_a) {
135
- requestMessage = new sip_message_1.RequestMessage("BYE sip:".concat(this.softphone.sipInfo.domain, " SIP/2.0"), {
136
- 'Call-Id': this.callId,
137
- From: this.inviteMessage.headers.To,
138
- To: this.inviteMessage.headers.From,
139
- Via: "SIP/2.0/TCP ".concat(this.softphone.fakeDomain, ";branch=").concat((0, utils_1.uuid)()),
140
- });
141
- this.softphone.send(requestMessage);
142
- return [2 /*return*/];
143
- });
144
- });
145
- };
146
- InboundCallSession.prototype.sendDTMF = function (char) {
147
- return __awaiter(this, void 0, void 0, function () {
148
- var timestamp, sequenceNumber, rtpHeader, _i, _a, payload, rtpPacket;
149
- return __generator(this, function (_b) {
150
- timestamp = Math.floor(Date.now() / 1000);
151
- sequenceNumber = timestamp % 65536;
152
- rtpHeader = new werift_rtp_1.RtpHeader({
153
- version: 2,
154
- padding: false,
155
- paddingSize: 0,
156
- extension: false,
157
- marker: false,
158
- payloadOffset: 12,
159
- payloadType: 101,
160
- sequenceNumber: sequenceNumber,
161
- timestamp: timestamp,
162
- ssrc: this.rtpPort,
163
- csrcLength: 0,
164
- csrc: [],
165
- extensionProfile: 48862,
166
- extensionLength: undefined,
167
- extensions: [],
168
- });
169
- for (_i = 0, _a = dtmf_1.default.charToPayloads(char); _i < _a.length; _i++) {
170
- payload = _a[_i];
171
- rtpHeader.sequenceNumber = sequenceNumber++;
172
- rtpPacket = new werift_rtp_1.RtpPacket(rtpHeader, payload);
173
- this.send(rtpPacket.serialize());
174
- }
175
- return [2 /*return*/];
176
- });
177
- });
178
- };
179
- InboundCallSession.prototype.dispose = function () {
180
- this.disposed = true;
181
- this.emit('disposed');
182
- this.socket.removeAllListeners();
183
- this.socket.close();
184
- };
185
- InboundCallSession.prototype.send = function (data) {
186
- this.socket.send(data, this.remotePort, this.remoteIP);
187
- };
188
- return InboundCallSession;
189
- }(events_1.default));
190
- exports.default = InboundCallSession;
191
- //# sourceMappingURL=inbound-call-session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbound-call-session.js","sourceRoot":"","sources":["../src/inbound-call-session.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};