@@ -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