@@ -7,6 +7,7 @@ import {METHOD_START_MESSAGE} from '../common/constants';
77import {
88 filterMobiusUris ,
99 handleCallingClientErrors ,
10+ isValidServiceDomain ,
1011 uploadLogs ,
1112 validateServiceData ,
1213} from '../common/Utils' ;
@@ -27,6 +28,7 @@ import {
2728 ALLOWED_SERVICES ,
2829 HTTP_METHODS ,
2930 MobiusServers ,
31+ ServiceData ,
3032 WebexRequestPayload ,
3133 RegistrationStatus ,
3234 UploadLogsResponse ,
@@ -50,6 +52,7 @@ import {
5052 METHODS ,
5153 NETWORK_FLAP_TIMEOUT ,
5254 DEVICES_ENDPOINT_RESOURCE ,
55+ WCC_CALLING_RTMS_DOMAIN ,
5356} from './constants' ;
5457import Line from './line' ;
5558import { ILine } from './line/types' ;
@@ -88,6 +91,8 @@ export class CallingClient extends Eventing<CallingClientEventTypes> implements
8891
8992 private sdkConfig ?: CallingClientConfig ;
9093
94+ private serviceData : ServiceData ;
95+
9196 private primaryMobiusUris : string [ ] ;
9297
9398 private backupMobiusUris : string [ ] ;
@@ -128,16 +133,16 @@ export class CallingClient extends Eventing<CallingClientEventTypes> implements
128133 this . webex = this . sdkConnector . getWebex ( ) ;
129134
130135 this . sdkConfig = config ;
131- const serviceData = this . sdkConfig ?. serviceData ?. indicator
136+ this . serviceData = this . sdkConfig ?. serviceData ?. indicator
132137 ? this . sdkConfig . serviceData
133138 : { indicator : ServiceIndicator . CALLING , domain : '' } ;
134139
135140 const logLevel = this . sdkConfig ?. logger ?. level ? this . sdkConfig . logger . level : LOGGER . ERROR ;
136141 log . setLogger ( logLevel , CALLING_CLIENT_FILE ) ;
137- validateServiceData ( serviceData ) ;
142+ validateServiceData ( this . serviceData ) ;
138143
139- this . callManager = getCallManager ( this . webex , serviceData . indicator ) ;
140- this . metricManager = getMetricManager ( this . webex , serviceData . indicator ) ;
144+ this . callManager = getCallManager ( this . webex , this . serviceData . indicator ) ;
145+ this . metricManager = getMetricManager ( this . webex , this . serviceData . indicator ) ;
141146
142147 this . mediaEngine = Media ;
143148
@@ -202,11 +207,60 @@ export class CallingClient extends Eventing<CallingClientEventTypes> implements
202207 }
203208
204209 await this . getMobiusServers ( ) ;
210+
211+ // Auto-fetch RTMS domain from service catalog for contact-center flows
212+ if (
213+ this . serviceData . indicator === ServiceIndicator . CONTACT_CENTER &&
214+ ! this . serviceData . domain
215+ ) {
216+ const rtmsDomain = this . getRTMSDomain ( ) ;
217+
218+ this . serviceData . domain = rtmsDomain ;
219+ if ( this . sdkConfig ?. serviceData ) {
220+ this . sdkConfig . serviceData . domain = this . serviceData . domain ;
221+ }
222+ }
223+
224+ if ( ! isValidServiceDomain ( this . serviceData ) ) {
225+ throw new Error ( 'Invalid service domain.' ) ;
226+ }
227+
205228 await this . createLine ( ) ;
206229
207230 this . setupNetworkEventListeners ( ) ;
208231 }
209232
233+ /**
234+ * Retrieves the RTMS domain from the service catalog for contact-center flows.
235+ *
236+ * @returns The RTMS domain from catalog when available.
237+ */
238+ private getRTMSDomain ( ) : string {
239+ log . info ( 'Fetching RTMS domain from service catalog' , {
240+ file : CALLING_CLIENT_FILE ,
241+ method : METHODS . GET_RTMS_DOMAIN ,
242+ } ) ;
243+
244+ try {
245+ const rtmsURL = this . webex . internal . services . get ( WCC_CALLING_RTMS_DOMAIN ) ;
246+ const url = new URL ( rtmsURL ) ;
247+
248+ log . info ( `RTMS domain resolved from catalog: ${ url . hostname } ` , {
249+ file : CALLING_CLIENT_FILE ,
250+ method : METHODS . GET_RTMS_DOMAIN ,
251+ } ) ;
252+
253+ return url . hostname ;
254+ } catch ( error ) {
255+ log . warn ( `Failed to fetch RTMS domain from service catalog: ${ error } ` , {
256+ file : CALLING_CLIENT_FILE ,
257+ method : METHODS . GET_RTMS_DOMAIN ,
258+ } ) ;
259+
260+ return '' ;
261+ }
262+ }
263+
210264 /**
211265 * Ping a reliable external endpoint with a short timeout to infer connectivity.
212266 */
@@ -706,7 +760,7 @@ export class CallingClient extends Eventing<CallingClientEventTypes> implements
706760 this . primaryMobiusUris ,
707761 this . backupMobiusUris ,
708762 this . getLoggingLevel ( ) ,
709- this . sdkConfig ?. serviceData ,
763+ this . serviceData ,
710764 this . sdkConfig ?. jwe
711765 ) ;
712766
0 commit comments