diff --git a/packages/bot-handler-avs/package.json b/packages/bot-handler-avs/package.json index e1ccea5285..b9ad98a989 100644 --- a/packages/bot-handler-avs/package.json +++ b/packages/bot-handler-avs/package.json @@ -1,7 +1,7 @@ { "dependencies": { "@types/webrtc": "0.0.26", - "@wireapp/avs": "6.0.46", + "@wireapp/avs": "6.2.20", "wrtc": "0.4.6" }, "description": "Adds audio/video/signaling (AVS) functionality for Wire bots.", diff --git a/packages/bot-handler-avs/src/AVSHandler.ts b/packages/bot-handler-avs/src/AVSHandler.ts index d8014bbb7e..7b30c5fc8d 100644 --- a/packages/bot-handler-avs/src/AVSHandler.ts +++ b/packages/bot-handler-avs/src/AVSHandler.ts @@ -28,6 +28,7 @@ import { LOG_LEVEL, REASON, Wcall, + WcallClient, WcallParticipantChangedHandler, } from '@wireapp/avs'; import axios from 'axios'; @@ -69,6 +70,7 @@ declare global { global.RTCPeerConnection = wrtc.RTCPeerConnection; global.MediaStream = wrtc.MediaStream; global.MediaStreamTrack = wrtc.MediaStreamTrack; +global.RTCRtpSender = wrtc.RTCRtpSender; global.navigator = { ...global.navigator, mediaDevices: { @@ -81,6 +83,10 @@ interface InitOptions { callParticipantChangedHandler?: WcallParticipantChangedHandler; } +interface SendMessageTarget { + clients: WcallClient[]; +} + export class AVSHandler extends MessageHandler { private wCall?: Wcall; private wUser?: number; @@ -219,17 +225,29 @@ export class AVSHandler extends MessageHandler { }; private readonly onSendCallMessage = ( - ctx: number, + context: number, conversationId: string, - selfUserId: string, - selfClientId: string, - userid_dest: string | undefined, - clientid_dest: string | undefined, - data: string, + userId: string, + clientId: string, + targets: string | null, + unused: string | null, + payload: string, ): number => { + const userIds: string[] = []; + + if (typeof targets === 'string') { + const parsedTargets: SendMessageTarget = JSON.parse(targets); + for (const target of parsedTargets.clients) { + userIds.push(target.userid); + } + } + void (async () => { - const callPayload = this.account!.service!.conversation.messageBuilder.createCall(conversationId, data); - await this.account!.service!.conversation.send(callPayload); + try { + await this.sendCall(conversationId, payload, userIds); + } catch (error) { + console.error('Failed to send targeted message', error); + } })(); return 0; diff --git a/yarn.lock b/yarn.lock index 1a18c7db53..0941d1a2c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3023,10 +3023,10 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@wireapp/avs@6.0.46": - version "6.0.46" - resolved "https://registry.npmjs.org/@wireapp/avs/-/avs-6.0.46.tgz#1c8827e9f1b19c27580ec8415ace2763d4ac5afc" - integrity sha512-mokj5DVZWszeznmS9vTW0rUAg5qr8xSm61XwvB14hUCU1GEv2xV1OFhSnd8e3dEb3C3P512sjSDuz4pxN0dhLA== +"@wireapp/avs@6.2.20": + version "6.2.20" + resolved "https://registry.npmjs.org/@wireapp/avs/-/avs-6.2.20.tgz#2b7facac5f8fafca97f3d4e14d458b56d63bf0bc" + integrity sha512-v5n1DbukuwH3sjoD1qkL77IX0mVoygpzPrlzF8Y1ZKvwo5AQ1Fjy+Jsgl3meAwxQ8KbzJEu1yAtoixFpzKMWgA== "@wireapp/protocol-messaging@1.25.4": version "1.25.4"