@@ -72,33 +72,7 @@ object RAGAnswerHandler : AbstractProactiveAnswerHandler {
7272 if (noAnswerStory == null && answer != null ) {
7373 logger.info { " Send RAG answer." }
7474
75- val publicTraceUrl = observabilityInfo?.let {
76- // Get observability configuration
77- val observabilityConfig = botDefinition.observabilityConfiguration
78- // If observability configuration exists and contain a public URL, replace the trace URL
79- if (observabilityConfig?.enabled == true && observabilityConfig.setting is LangfuseObservabilitySetting <* >) {
80- val publicUrl = (observabilityConfig.setting as LangfuseObservabilitySetting <* >).publicUrl
81- if (! publicUrl.isNullOrBlank()) {
82- it.traceUrl.replace(
83- (observabilityConfig.setting as LangfuseObservabilitySetting <* >).url,
84- publicUrl
85- )
86- } else {
87- it.traceUrl
88- }
89- } else {
90- it.traceUrl
91- }
92- }
93-
94- // Modified ObservabilityInfo
95- val modifiedObservabilityInfo = observabilityInfo?.let {
96- ObservabilityInfo (
97- traceId = it.traceId,
98- traceName = it.traceName,
99- traceUrl = publicTraceUrl ? : it.traceUrl
100- )
101- }
75+ val modifiedObservabilityInfo = observabilityInfo?.let { updateObservabilityInfo(this , it) }
10276
10377 send(
10478 SendSentenceWithFootnotes (
@@ -120,6 +94,20 @@ object RAGAnswerHandler : AbstractProactiveAnswerHandler {
12094 }
12195 }
12296
97+ private fun updateObservabilityInfo (botBus : BotBus , info : ObservabilityInfo ): ObservabilityInfo {
98+ val config = botBus.botDefinition.observabilityConfiguration
99+ if (config?.enabled == true && config.setting is LangfuseObservabilitySetting <* >) {
100+ val setting = config.setting as LangfuseObservabilitySetting <* >
101+ // Stockage dans une variable locale pour éviter le smart cast impossible sur une propriété déclarée dans un autre module
102+ val publicUrl = setting.publicUrl
103+ if (! publicUrl.isNullOrBlank()) {
104+ // Remplace l'URL interne par l'URL publique configurée
105+ return info.copy(traceUrl = info.traceUrl.replace(setting.url, publicUrl))
106+ }
107+ }
108+ return info
109+ }
110+
123111 /* *
124112 * Manage story redirection when no answer redirection is filled
125113 * Use the handler of the configured story otherwise launch default unknown story
0 commit comments