Skip to content

Commit 9050efa

Browse files
committed
Description: Remove the hardcoding for ICE servers. Now we pull it from the admin settings. The setting Id is 'WebRTC_Servers'.
1 parent 17dfe39 commit 9050efa

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

client/components/voip/SimpleVoipUser.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ export class SimpleVoipUser
5050

5151
mediaStreamRendered?: IMediaStreamRenderer;
5252

53+
iceServers: Array<object>;
54+
5355
config: VoIPUserConfiguration = {};
5456

5557
voipEventEmitter: Emitter;
@@ -61,6 +63,7 @@ export class SimpleVoipUser
6163
password: string,
6264
registrar: string,
6365
webSocketPath: string,
66+
iceServers: Array<object>,
6467
callType?: CallType,
6568
mediaStreamRendered?: IMediaStreamRenderer,
6669
) {
@@ -75,6 +78,7 @@ export class SimpleVoipUser
7578
this.callType = callType;
7679
this.mediaStreamRendered = mediaStreamRendered;
7780
this.voipEventEmitter = new Emitter();
81+
this.iceServers = iceServers;
7882
this.logger = new ClientLogger('SimpleVoipUser');
7983
}
8084

@@ -161,13 +165,7 @@ export class SimpleVoipUser
161165

162166
this.config.enableVideo = this.callType === CallType.AUDIO_VIDEO;
163167
this.config.connectionDelegate = this;
164-
/**
165-
* Note : Following hardcoding needs to be removed. Where to get this data from, needs to
166-
* be decided. Administration -> RateLimiter -> WebRTC has a setting for stun/turn servers.
167-
* Nevertheless, whether it is configurebla by agent or not is to be found out.
168-
* Agent will control these settings.
169-
*/
170-
this.config.iceServers = [{ urls: 'stun:stun.l.google.com:19302' }];
168+
this.config.iceServers = this.iceServers;
171169
this.userHandler = new VoIPUser(this.config, this, this, this, this.mediaStreamRendered);
172170
await this.userHandler.init();
173171
}

client/providers/OmnichannelProvider.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ const OmnichannelProvider: FC = ({ children }) => {
3636
const loggerRef = useRef(new ClientLogger('OmnichannelProvider'));
3737
const hasAccess = usePermission('view-l-room');
3838
const canViewOmnichannelQueue = usePermission('view-livechat-queue');
39-
4039
const user = useUser() as IOmnichannelAgent;
4140

4241
const agentAvailable = user?.statusLivechat === 'available';
@@ -51,6 +50,7 @@ const OmnichannelProvider: FC = ({ children }) => {
5150
const [voipUser, setVoipUser] = useState<SimpleVoipUser | undefined>(undefined);
5251

5352
const accessible = hasAccess && omniChannelEnabled;
53+
const iceServersSetting: any = useSetting('WebRTC_Servers');
5454

5555
useEffect(() => {
5656
if (!accessible) {
@@ -69,11 +69,31 @@ const OmnichannelProvider: FC = ({ children }) => {
6969
extension,
7070
})) as unknown as IExtensionConfig;
7171
setExtensionConfig(extensionConfig);
72+
const iceServers: Array<object> = [];
73+
if (iceServersSetting && iceServersSetting.trim() !== '') {
74+
const serversListStr = iceServersSetting.replace(/\s/g, '');
75+
const serverList = serversListStr.split(',');
76+
serverList.forEach((server: any) => {
77+
server = server.split('@');
78+
const serverConfig: any = {
79+
urls: server.pop(),
80+
};
81+
if (server.length === 1) {
82+
server = server[0].split(':');
83+
serverConfig.username = decodeURIComponent(server[0]);
84+
serverConfig.credential = decodeURIComponent(server[1]);
85+
}
86+
iceServers.push(serverConfig);
87+
});
88+
}
89+
loggerRef.current.debug(JSON.stringify(iceServers));
90+
7291
voipUser = new SimpleVoipUser(
7392
extensionConfig.extension,
7493
extensionConfig.password,
7594
extensionConfig.sipRegistrar,
7695
extensionConfig.websocketUri,
96+
iceServers,
7797
CallType.AUDIO_VIDEO,
7898
);
7999
await voipUser.initUserAgent();
@@ -97,7 +117,7 @@ const OmnichannelProvider: FC = ({ children }) => {
97117
if (voipCallAvailable) {
98118
initVoipLib();
99119
}
100-
}, [accessible, getRoutingConfig, omnichannelRouting, voipCallAvailable]);
120+
}, [accessible, getRoutingConfig, iceServersSetting, omnichannelRouting, voipCallAvailable]);
101121

102122
const enabled = accessible && !!user && !!routeConfig && !!extensionConfig && !!voipUser;
103123
const manuallySelected =

0 commit comments

Comments
 (0)