@whereby.com/assistant-sdk 0.0.0-canary-20250916072551 → 0.0.0-canary-20250916140846
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/index.cjs +35 -2
- package/dist/index.d.cts +15 -4
- package/dist/index.d.mts +15 -4
- package/dist/index.d.ts +15 -4
- package/dist/index.mjs +34 -3
- package/dist/legacy-esm.js +34 -3
- package/package.json +5 -4
package/dist/index.cjs
CHANGED
|
@@ -33,6 +33,8 @@ var dotenv__namespace = /*#__PURE__*/_interopNamespaceDefault(dotenv);
|
|
|
33
33
|
const TRIGGER_EVENT_SUCCESS = "trigger_event_success";
|
|
34
34
|
|
|
35
35
|
const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
36
|
+
const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
37
|
+
const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
36
38
|
|
|
37
39
|
/******************************************************************************
|
|
38
40
|
Copyright (c) Microsoft Corporation.
|
|
@@ -516,6 +518,15 @@ class Assistant extends EventEmitter {
|
|
|
516
518
|
this.mediaStream = null;
|
|
517
519
|
this.audioSource = null;
|
|
518
520
|
this.combinedStream = null;
|
|
521
|
+
this.roomUrl = null;
|
|
522
|
+
this.handleConnectionStatusChange = (status) => {
|
|
523
|
+
if (status === "connected") {
|
|
524
|
+
this.emit(ASSISTANT_JOINED_ROOM, { roomUrl: this.roomUrl || "" });
|
|
525
|
+
}
|
|
526
|
+
if (["left", "kicked"].includes(status)) {
|
|
527
|
+
this.emit(ASSISTANT_LEFT_ROOM, { roomUrl: this.roomUrl || "" });
|
|
528
|
+
}
|
|
529
|
+
};
|
|
519
530
|
this.assistantKey = assistantKey;
|
|
520
531
|
this.client = new core.WherebyClient();
|
|
521
532
|
this.roomConnection = this.client.getRoomConnection();
|
|
@@ -540,6 +551,7 @@ class Assistant extends EventEmitter {
|
|
|
540
551
|
const audioMixer = new AudioMixer(handleStreamReady);
|
|
541
552
|
this.combinedStream = audioMixer.getCombinedAudioStream();
|
|
542
553
|
this.roomConnection.subscribeToRemoteParticipants(audioMixer.handleRemoteParticipants.bind(audioMixer));
|
|
554
|
+
this.roomConnection.subscribeToConnectionStatus(this.handleConnectionStatusChange);
|
|
543
555
|
}
|
|
544
556
|
}
|
|
545
557
|
joinRoom(roomUrl) {
|
|
@@ -547,6 +559,7 @@ class Assistant extends EventEmitter {
|
|
|
547
559
|
if (this.mediaStream) {
|
|
548
560
|
yield this.localMedia.startMedia(this.mediaStream);
|
|
549
561
|
}
|
|
562
|
+
this.roomUrl = roomUrl;
|
|
550
563
|
this.roomConnection.initialize({
|
|
551
564
|
localMediaOptions: {
|
|
552
565
|
audio: false,
|
|
@@ -657,10 +670,28 @@ const webhookRouter = (webhookTriggers, emitter) => {
|
|
|
657
670
|
res.end();
|
|
658
671
|
});
|
|
659
672
|
router.post("/", jsonParser, (req, res) => {
|
|
660
|
-
var _a;
|
|
673
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
661
674
|
assert(req.body, "message body is required");
|
|
662
675
|
assert("type" in req.body, "webhook type is required");
|
|
663
|
-
|
|
676
|
+
let shouldTriggerOnReceivedWebhook = false;
|
|
677
|
+
switch (req.body.type) {
|
|
678
|
+
case "room.client.joined":
|
|
679
|
+
shouldTriggerOnReceivedWebhook =
|
|
680
|
+
(_b = (_a = webhookTriggers["room.client.joined"]) === null || _a === void 0 ? void 0 : _a.call(webhookTriggers, req.body)) !== null && _b !== void 0 ? _b : false;
|
|
681
|
+
break;
|
|
682
|
+
case "room.client.left":
|
|
683
|
+
shouldTriggerOnReceivedWebhook =
|
|
684
|
+
(_d = (_c = webhookTriggers["room.client.left"]) === null || _c === void 0 ? void 0 : _c.call(webhookTriggers, req.body)) !== null && _d !== void 0 ? _d : false;
|
|
685
|
+
break;
|
|
686
|
+
case "room.session.started":
|
|
687
|
+
shouldTriggerOnReceivedWebhook =
|
|
688
|
+
(_f = (_e = webhookTriggers["room.session.started"]) === null || _e === void 0 ? void 0 : _e.call(webhookTriggers, req.body)) !== null && _f !== void 0 ? _f : false;
|
|
689
|
+
break;
|
|
690
|
+
case "room.session.ended":
|
|
691
|
+
shouldTriggerOnReceivedWebhook =
|
|
692
|
+
(_h = (_g = webhookTriggers["room.session.ended"]) === null || _g === void 0 ? void 0 : _g.call(webhookTriggers, req.body)) !== null && _h !== void 0 ? _h : false;
|
|
693
|
+
break;
|
|
694
|
+
}
|
|
664
695
|
if (shouldTriggerOnReceivedWebhook) {
|
|
665
696
|
const roomUrl = buildRoomUrl(req.body.data.roomName, req.body.data.subdomain);
|
|
666
697
|
emitter.emit(TRIGGER_EVENT_SUCCESS, { roomUrl, triggerWebhook: req.body });
|
|
@@ -689,6 +720,8 @@ class Trigger extends EventEmitter.EventEmitter {
|
|
|
689
720
|
}
|
|
690
721
|
}
|
|
691
722
|
|
|
723
|
+
exports.ASSISTANT_JOINED_ROOM = ASSISTANT_JOINED_ROOM;
|
|
724
|
+
exports.ASSISTANT_LEFT_ROOM = ASSISTANT_LEFT_ROOM;
|
|
692
725
|
exports.AUDIO_STREAM_READY = AUDIO_STREAM_READY;
|
|
693
726
|
exports.Assistant = Assistant;
|
|
694
727
|
exports.AudioSink = AudioSink;
|
package/dist/index.d.cts
CHANGED
|
@@ -82,17 +82,25 @@ type TriggerEvents = {
|
|
|
82
82
|
};
|
|
83
83
|
type WherebyWebhookType = WherebyWebhookRoomClientJoined | WherebyWebhookRoomClientLeft | WherebyWebhookRoomSessionStarted | WherebyWebhookRoomSessionEnded;
|
|
84
84
|
type WherebyWebhookTriggerTypes = {
|
|
85
|
-
"room.client.joined":
|
|
86
|
-
"room.client.left":
|
|
85
|
+
"room.client.joined": WherebyWebhookRoomClientJoined;
|
|
86
|
+
"room.client.left": WherebyWebhookRoomClientLeft;
|
|
87
87
|
"room.session.started": WherebyWebhookRoomSessionStarted;
|
|
88
|
-
"room.session.ended":
|
|
88
|
+
"room.session.ended": WherebyWebhookRoomSessionEnded;
|
|
89
89
|
};
|
|
90
90
|
type WherebyWebhookTriggers = Partial<{
|
|
91
91
|
[Type in keyof WherebyWebhookTriggerTypes]: (data: WherebyWebhookTriggerTypes[Type]) => boolean;
|
|
92
92
|
}>;
|
|
93
93
|
|
|
94
94
|
declare const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
95
|
+
declare const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
96
|
+
declare const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
95
97
|
type AssistantEvents = {
|
|
98
|
+
[ASSISTANT_JOINED_ROOM]: [{
|
|
99
|
+
roomUrl: string;
|
|
100
|
+
}];
|
|
101
|
+
[ASSISTANT_LEFT_ROOM]: [{
|
|
102
|
+
roomUrl: string;
|
|
103
|
+
}];
|
|
96
104
|
[AUDIO_STREAM_READY]: [{
|
|
97
105
|
stream: MediaStream;
|
|
98
106
|
track: MediaStreamTrack;
|
|
@@ -112,7 +120,9 @@ declare class Assistant extends EventEmitter<AssistantEvents> {
|
|
|
112
120
|
private mediaStream;
|
|
113
121
|
private audioSource;
|
|
114
122
|
private combinedStream;
|
|
123
|
+
private roomUrl;
|
|
115
124
|
constructor({ assistantKey, startCombinedAudioStream, startLocalMedia }: AssistantOptions);
|
|
125
|
+
private handleConnectionStatusChange;
|
|
116
126
|
joinRoom(roomUrl: string): Promise<void>;
|
|
117
127
|
startLocalMedia(): void;
|
|
118
128
|
getLocalMediaStream(): MediaStream | null;
|
|
@@ -159,4 +169,5 @@ declare class AudioSink extends wrtc__default.nonstandard.RTCAudioSink {
|
|
|
159
169
|
}) => void): () => void;
|
|
160
170
|
}
|
|
161
171
|
|
|
162
|
-
export { AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
172
|
+
export { ASSISTANT_JOINED_ROOM, ASSISTANT_LEFT_ROOM, AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
173
|
+
export type { AssistantEvents };
|
package/dist/index.d.mts
CHANGED
|
@@ -82,17 +82,25 @@ type TriggerEvents = {
|
|
|
82
82
|
};
|
|
83
83
|
type WherebyWebhookType = WherebyWebhookRoomClientJoined | WherebyWebhookRoomClientLeft | WherebyWebhookRoomSessionStarted | WherebyWebhookRoomSessionEnded;
|
|
84
84
|
type WherebyWebhookTriggerTypes = {
|
|
85
|
-
"room.client.joined":
|
|
86
|
-
"room.client.left":
|
|
85
|
+
"room.client.joined": WherebyWebhookRoomClientJoined;
|
|
86
|
+
"room.client.left": WherebyWebhookRoomClientLeft;
|
|
87
87
|
"room.session.started": WherebyWebhookRoomSessionStarted;
|
|
88
|
-
"room.session.ended":
|
|
88
|
+
"room.session.ended": WherebyWebhookRoomSessionEnded;
|
|
89
89
|
};
|
|
90
90
|
type WherebyWebhookTriggers = Partial<{
|
|
91
91
|
[Type in keyof WherebyWebhookTriggerTypes]: (data: WherebyWebhookTriggerTypes[Type]) => boolean;
|
|
92
92
|
}>;
|
|
93
93
|
|
|
94
94
|
declare const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
95
|
+
declare const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
96
|
+
declare const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
95
97
|
type AssistantEvents = {
|
|
98
|
+
[ASSISTANT_JOINED_ROOM]: [{
|
|
99
|
+
roomUrl: string;
|
|
100
|
+
}];
|
|
101
|
+
[ASSISTANT_LEFT_ROOM]: [{
|
|
102
|
+
roomUrl: string;
|
|
103
|
+
}];
|
|
96
104
|
[AUDIO_STREAM_READY]: [{
|
|
97
105
|
stream: MediaStream;
|
|
98
106
|
track: MediaStreamTrack;
|
|
@@ -112,7 +120,9 @@ declare class Assistant extends EventEmitter<AssistantEvents> {
|
|
|
112
120
|
private mediaStream;
|
|
113
121
|
private audioSource;
|
|
114
122
|
private combinedStream;
|
|
123
|
+
private roomUrl;
|
|
115
124
|
constructor({ assistantKey, startCombinedAudioStream, startLocalMedia }: AssistantOptions);
|
|
125
|
+
private handleConnectionStatusChange;
|
|
116
126
|
joinRoom(roomUrl: string): Promise<void>;
|
|
117
127
|
startLocalMedia(): void;
|
|
118
128
|
getLocalMediaStream(): MediaStream | null;
|
|
@@ -159,4 +169,5 @@ declare class AudioSink extends wrtc__default.nonstandard.RTCAudioSink {
|
|
|
159
169
|
}) => void): () => void;
|
|
160
170
|
}
|
|
161
171
|
|
|
162
|
-
export { AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
172
|
+
export { ASSISTANT_JOINED_ROOM, ASSISTANT_LEFT_ROOM, AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
173
|
+
export type { AssistantEvents };
|
package/dist/index.d.ts
CHANGED
|
@@ -82,17 +82,25 @@ type TriggerEvents = {
|
|
|
82
82
|
};
|
|
83
83
|
type WherebyWebhookType = WherebyWebhookRoomClientJoined | WherebyWebhookRoomClientLeft | WherebyWebhookRoomSessionStarted | WherebyWebhookRoomSessionEnded;
|
|
84
84
|
type WherebyWebhookTriggerTypes = {
|
|
85
|
-
"room.client.joined":
|
|
86
|
-
"room.client.left":
|
|
85
|
+
"room.client.joined": WherebyWebhookRoomClientJoined;
|
|
86
|
+
"room.client.left": WherebyWebhookRoomClientLeft;
|
|
87
87
|
"room.session.started": WherebyWebhookRoomSessionStarted;
|
|
88
|
-
"room.session.ended":
|
|
88
|
+
"room.session.ended": WherebyWebhookRoomSessionEnded;
|
|
89
89
|
};
|
|
90
90
|
type WherebyWebhookTriggers = Partial<{
|
|
91
91
|
[Type in keyof WherebyWebhookTriggerTypes]: (data: WherebyWebhookTriggerTypes[Type]) => boolean;
|
|
92
92
|
}>;
|
|
93
93
|
|
|
94
94
|
declare const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
95
|
+
declare const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
96
|
+
declare const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
95
97
|
type AssistantEvents = {
|
|
98
|
+
[ASSISTANT_JOINED_ROOM]: [{
|
|
99
|
+
roomUrl: string;
|
|
100
|
+
}];
|
|
101
|
+
[ASSISTANT_LEFT_ROOM]: [{
|
|
102
|
+
roomUrl: string;
|
|
103
|
+
}];
|
|
96
104
|
[AUDIO_STREAM_READY]: [{
|
|
97
105
|
stream: MediaStream;
|
|
98
106
|
track: MediaStreamTrack;
|
|
@@ -112,7 +120,9 @@ declare class Assistant extends EventEmitter<AssistantEvents> {
|
|
|
112
120
|
private mediaStream;
|
|
113
121
|
private audioSource;
|
|
114
122
|
private combinedStream;
|
|
123
|
+
private roomUrl;
|
|
115
124
|
constructor({ assistantKey, startCombinedAudioStream, startLocalMedia }: AssistantOptions);
|
|
125
|
+
private handleConnectionStatusChange;
|
|
116
126
|
joinRoom(roomUrl: string): Promise<void>;
|
|
117
127
|
startLocalMedia(): void;
|
|
118
128
|
getLocalMediaStream(): MediaStream | null;
|
|
@@ -159,4 +169,5 @@ declare class AudioSink extends wrtc__default.nonstandard.RTCAudioSink {
|
|
|
159
169
|
}) => void): () => void;
|
|
160
170
|
}
|
|
161
171
|
|
|
162
|
-
export { AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
172
|
+
export { ASSISTANT_JOINED_ROOM, ASSISTANT_LEFT_ROOM, AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
173
|
+
export type { AssistantEvents };
|
package/dist/index.mjs
CHANGED
|
@@ -12,6 +12,8 @@ import * as dotenv from 'dotenv';
|
|
|
12
12
|
const TRIGGER_EVENT_SUCCESS = "trigger_event_success";
|
|
13
13
|
|
|
14
14
|
const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
15
|
+
const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
16
|
+
const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
15
17
|
|
|
16
18
|
/******************************************************************************
|
|
17
19
|
Copyright (c) Microsoft Corporation.
|
|
@@ -495,6 +497,15 @@ class Assistant extends EventEmitter$1 {
|
|
|
495
497
|
this.mediaStream = null;
|
|
496
498
|
this.audioSource = null;
|
|
497
499
|
this.combinedStream = null;
|
|
500
|
+
this.roomUrl = null;
|
|
501
|
+
this.handleConnectionStatusChange = (status) => {
|
|
502
|
+
if (status === "connected") {
|
|
503
|
+
this.emit(ASSISTANT_JOINED_ROOM, { roomUrl: this.roomUrl || "" });
|
|
504
|
+
}
|
|
505
|
+
if (["left", "kicked"].includes(status)) {
|
|
506
|
+
this.emit(ASSISTANT_LEFT_ROOM, { roomUrl: this.roomUrl || "" });
|
|
507
|
+
}
|
|
508
|
+
};
|
|
498
509
|
this.assistantKey = assistantKey;
|
|
499
510
|
this.client = new WherebyClient();
|
|
500
511
|
this.roomConnection = this.client.getRoomConnection();
|
|
@@ -519,6 +530,7 @@ class Assistant extends EventEmitter$1 {
|
|
|
519
530
|
const audioMixer = new AudioMixer(handleStreamReady);
|
|
520
531
|
this.combinedStream = audioMixer.getCombinedAudioStream();
|
|
521
532
|
this.roomConnection.subscribeToRemoteParticipants(audioMixer.handleRemoteParticipants.bind(audioMixer));
|
|
533
|
+
this.roomConnection.subscribeToConnectionStatus(this.handleConnectionStatusChange);
|
|
522
534
|
}
|
|
523
535
|
}
|
|
524
536
|
joinRoom(roomUrl) {
|
|
@@ -526,6 +538,7 @@ class Assistant extends EventEmitter$1 {
|
|
|
526
538
|
if (this.mediaStream) {
|
|
527
539
|
yield this.localMedia.startMedia(this.mediaStream);
|
|
528
540
|
}
|
|
541
|
+
this.roomUrl = roomUrl;
|
|
529
542
|
this.roomConnection.initialize({
|
|
530
543
|
localMediaOptions: {
|
|
531
544
|
audio: false,
|
|
@@ -636,10 +649,28 @@ const webhookRouter = (webhookTriggers, emitter) => {
|
|
|
636
649
|
res.end();
|
|
637
650
|
});
|
|
638
651
|
router.post("/", jsonParser, (req, res) => {
|
|
639
|
-
var _a;
|
|
652
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
640
653
|
assert(req.body, "message body is required");
|
|
641
654
|
assert("type" in req.body, "webhook type is required");
|
|
642
|
-
|
|
655
|
+
let shouldTriggerOnReceivedWebhook = false;
|
|
656
|
+
switch (req.body.type) {
|
|
657
|
+
case "room.client.joined":
|
|
658
|
+
shouldTriggerOnReceivedWebhook =
|
|
659
|
+
(_b = (_a = webhookTriggers["room.client.joined"]) === null || _a === void 0 ? void 0 : _a.call(webhookTriggers, req.body)) !== null && _b !== void 0 ? _b : false;
|
|
660
|
+
break;
|
|
661
|
+
case "room.client.left":
|
|
662
|
+
shouldTriggerOnReceivedWebhook =
|
|
663
|
+
(_d = (_c = webhookTriggers["room.client.left"]) === null || _c === void 0 ? void 0 : _c.call(webhookTriggers, req.body)) !== null && _d !== void 0 ? _d : false;
|
|
664
|
+
break;
|
|
665
|
+
case "room.session.started":
|
|
666
|
+
shouldTriggerOnReceivedWebhook =
|
|
667
|
+
(_f = (_e = webhookTriggers["room.session.started"]) === null || _e === void 0 ? void 0 : _e.call(webhookTriggers, req.body)) !== null && _f !== void 0 ? _f : false;
|
|
668
|
+
break;
|
|
669
|
+
case "room.session.ended":
|
|
670
|
+
shouldTriggerOnReceivedWebhook =
|
|
671
|
+
(_h = (_g = webhookTriggers["room.session.ended"]) === null || _g === void 0 ? void 0 : _g.call(webhookTriggers, req.body)) !== null && _h !== void 0 ? _h : false;
|
|
672
|
+
break;
|
|
673
|
+
}
|
|
643
674
|
if (shouldTriggerOnReceivedWebhook) {
|
|
644
675
|
const roomUrl = buildRoomUrl(req.body.data.roomName, req.body.data.subdomain);
|
|
645
676
|
emitter.emit(TRIGGER_EVENT_SUCCESS, { roomUrl, triggerWebhook: req.body });
|
|
@@ -668,4 +699,4 @@ class Trigger extends EventEmitter {
|
|
|
668
699
|
}
|
|
669
700
|
}
|
|
670
701
|
|
|
671
|
-
export { AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
702
|
+
export { ASSISTANT_JOINED_ROOM, ASSISTANT_LEFT_ROOM, AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
package/dist/legacy-esm.js
CHANGED
|
@@ -12,6 +12,8 @@ import * as dotenv from 'dotenv';
|
|
|
12
12
|
const TRIGGER_EVENT_SUCCESS = "trigger_event_success";
|
|
13
13
|
|
|
14
14
|
const AUDIO_STREAM_READY = "AUDIO_STREAM_READY";
|
|
15
|
+
const ASSISTANT_JOINED_ROOM = "ASSISTANT_JOINED_ROOM";
|
|
16
|
+
const ASSISTANT_LEFT_ROOM = "ASSISTANT_LEFT_ROOM";
|
|
15
17
|
|
|
16
18
|
/******************************************************************************
|
|
17
19
|
Copyright (c) Microsoft Corporation.
|
|
@@ -495,6 +497,15 @@ class Assistant extends EventEmitter$1 {
|
|
|
495
497
|
this.mediaStream = null;
|
|
496
498
|
this.audioSource = null;
|
|
497
499
|
this.combinedStream = null;
|
|
500
|
+
this.roomUrl = null;
|
|
501
|
+
this.handleConnectionStatusChange = (status) => {
|
|
502
|
+
if (status === "connected") {
|
|
503
|
+
this.emit(ASSISTANT_JOINED_ROOM, { roomUrl: this.roomUrl || "" });
|
|
504
|
+
}
|
|
505
|
+
if (["left", "kicked"].includes(status)) {
|
|
506
|
+
this.emit(ASSISTANT_LEFT_ROOM, { roomUrl: this.roomUrl || "" });
|
|
507
|
+
}
|
|
508
|
+
};
|
|
498
509
|
this.assistantKey = assistantKey;
|
|
499
510
|
this.client = new WherebyClient();
|
|
500
511
|
this.roomConnection = this.client.getRoomConnection();
|
|
@@ -519,6 +530,7 @@ class Assistant extends EventEmitter$1 {
|
|
|
519
530
|
const audioMixer = new AudioMixer(handleStreamReady);
|
|
520
531
|
this.combinedStream = audioMixer.getCombinedAudioStream();
|
|
521
532
|
this.roomConnection.subscribeToRemoteParticipants(audioMixer.handleRemoteParticipants.bind(audioMixer));
|
|
533
|
+
this.roomConnection.subscribeToConnectionStatus(this.handleConnectionStatusChange);
|
|
522
534
|
}
|
|
523
535
|
}
|
|
524
536
|
joinRoom(roomUrl) {
|
|
@@ -526,6 +538,7 @@ class Assistant extends EventEmitter$1 {
|
|
|
526
538
|
if (this.mediaStream) {
|
|
527
539
|
yield this.localMedia.startMedia(this.mediaStream);
|
|
528
540
|
}
|
|
541
|
+
this.roomUrl = roomUrl;
|
|
529
542
|
this.roomConnection.initialize({
|
|
530
543
|
localMediaOptions: {
|
|
531
544
|
audio: false,
|
|
@@ -636,10 +649,28 @@ const webhookRouter = (webhookTriggers, emitter) => {
|
|
|
636
649
|
res.end();
|
|
637
650
|
});
|
|
638
651
|
router.post("/", jsonParser, (req, res) => {
|
|
639
|
-
var _a;
|
|
652
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
640
653
|
assert(req.body, "message body is required");
|
|
641
654
|
assert("type" in req.body, "webhook type is required");
|
|
642
|
-
|
|
655
|
+
let shouldTriggerOnReceivedWebhook = false;
|
|
656
|
+
switch (req.body.type) {
|
|
657
|
+
case "room.client.joined":
|
|
658
|
+
shouldTriggerOnReceivedWebhook =
|
|
659
|
+
(_b = (_a = webhookTriggers["room.client.joined"]) === null || _a === void 0 ? void 0 : _a.call(webhookTriggers, req.body)) !== null && _b !== void 0 ? _b : false;
|
|
660
|
+
break;
|
|
661
|
+
case "room.client.left":
|
|
662
|
+
shouldTriggerOnReceivedWebhook =
|
|
663
|
+
(_d = (_c = webhookTriggers["room.client.left"]) === null || _c === void 0 ? void 0 : _c.call(webhookTriggers, req.body)) !== null && _d !== void 0 ? _d : false;
|
|
664
|
+
break;
|
|
665
|
+
case "room.session.started":
|
|
666
|
+
shouldTriggerOnReceivedWebhook =
|
|
667
|
+
(_f = (_e = webhookTriggers["room.session.started"]) === null || _e === void 0 ? void 0 : _e.call(webhookTriggers, req.body)) !== null && _f !== void 0 ? _f : false;
|
|
668
|
+
break;
|
|
669
|
+
case "room.session.ended":
|
|
670
|
+
shouldTriggerOnReceivedWebhook =
|
|
671
|
+
(_h = (_g = webhookTriggers["room.session.ended"]) === null || _g === void 0 ? void 0 : _g.call(webhookTriggers, req.body)) !== null && _h !== void 0 ? _h : false;
|
|
672
|
+
break;
|
|
673
|
+
}
|
|
643
674
|
if (shouldTriggerOnReceivedWebhook) {
|
|
644
675
|
const roomUrl = buildRoomUrl(req.body.data.roomName, req.body.data.subdomain);
|
|
645
676
|
emitter.emit(TRIGGER_EVENT_SUCCESS, { roomUrl, triggerWebhook: req.body });
|
|
@@ -668,4 +699,4 @@ class Trigger extends EventEmitter {
|
|
|
668
699
|
}
|
|
669
700
|
}
|
|
670
701
|
|
|
671
|
-
export { AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
|
702
|
+
export { ASSISTANT_JOINED_ROOM, ASSISTANT_LEFT_ROOM, AUDIO_STREAM_READY, Assistant, AudioSink, AudioSource, TRIGGER_EVENT_SUCCESS, Trigger };
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@whereby.com/assistant-sdk",
|
|
3
3
|
"description": "Assistant SDK for whereby.com",
|
|
4
4
|
"author": "Whereby AS",
|
|
5
|
-
"version": "0.0.0-canary-
|
|
5
|
+
"version": "0.0.0-canary-20250916140846",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
@@ -47,8 +47,6 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"body-parser": "2.2.0",
|
|
51
|
-
"express": "5.1.0",
|
|
52
50
|
"eslint": "^9.29.0",
|
|
53
51
|
"prettier": "^3.5.3",
|
|
54
52
|
"typescript": "^5.8.3",
|
|
@@ -60,10 +58,13 @@
|
|
|
60
58
|
},
|
|
61
59
|
"dependencies": {
|
|
62
60
|
"@roamhq/wrtc": "github:whereby/node-webrtc#patch/rtc_audio_source",
|
|
61
|
+
"@types/web": "^0.0.267",
|
|
62
|
+
"body-parser": "2.2.0",
|
|
63
63
|
"dotenv": "^16.4.5",
|
|
64
|
+
"express": "5.1.0",
|
|
64
65
|
"uuid": "^11.0.3",
|
|
65
66
|
"ws": "^8.18.0",
|
|
66
|
-
"@whereby.com/core": "0.0.0-canary-
|
|
67
|
+
"@whereby.com/core": "0.0.0-canary-20250916140846"
|
|
67
68
|
},
|
|
68
69
|
"prettier": "@whereby.com/prettier-config",
|
|
69
70
|
"scripts": {
|