@@ -5,7 +5,6 @@
|
||||
|
||||
package com.example.controller;
|
||||
|
||||
import com.example.dto.dialogflow.base.DetectIntentResponseDTO;
|
||||
import com.example.dto.quickreplies.QuickReplyScreenRequestDTO;
|
||||
import com.example.service.quickreplies.QuickRepliesManagerService;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -30,8 +29,9 @@ public class QuickRepliesController {
|
||||
}
|
||||
|
||||
@PostMapping("/screen")
|
||||
public Mono<DetectIntentResponseDTO> startSessionAndGetReplies(@Valid @RequestBody QuickReplyScreenRequestDTO request) {
|
||||
public Mono<Map<String, String>> startSessionAndGetReplies(@Valid @RequestBody QuickReplyScreenRequestDTO request) {
|
||||
return quickRepliesManagerService.startQuickReplySession(request)
|
||||
.map(response -> Map.of("responseId", response.responseId()))
|
||||
.doOnSuccess(response -> logger.info("Successfully processed quick reply request"))
|
||||
.doOnError(error -> logger.error("Error processing quick reply request: {}", error.getMessage(), error));
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ public class ConversationContextMapper {
|
||||
|
||||
private static final int MAX_HISTORY_BYTES = 50 * 1024; // 50 KB
|
||||
|
||||
private static final String NOTIFICATION_TEXT_PARAM = "notification_text";
|
||||
|
||||
public String toText(ConversationSessionDTO session, List<ConversationMessageDTO> messages) {
|
||||
if (messages == null || messages.isEmpty()) {
|
||||
return "";
|
||||
@@ -77,34 +75,23 @@ public class ConversationContextMapper {
|
||||
|
||||
private String formatEntry(ConversationMessageDTO entry) {
|
||||
String prefix = "User: ";
|
||||
String content = entry.text();
|
||||
|
||||
if (entry.type() != null) {
|
||||
switch (entry.type()) {
|
||||
case AGENT:
|
||||
case MessageType.AGENT:
|
||||
prefix = "Agent: ";
|
||||
break;
|
||||
case SYSTEM:
|
||||
case MessageType.SYSTEM:
|
||||
prefix = "System: ";
|
||||
// fix: add notification in the conversation.
|
||||
if (entry.parameters() != null && entry.parameters().containsKey(NOTIFICATION_TEXT_PARAM)) {
|
||||
Object paramText = entry.parameters().get(NOTIFICATION_TEXT_PARAM);
|
||||
if (paramText != null && !paramText.toString().isBlank()) {
|
||||
content = paramText.toString();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LLM:
|
||||
prefix = "System: ";
|
||||
break;
|
||||
case USER:
|
||||
case MessageType.USER:
|
||||
default:
|
||||
prefix = "User: ";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
String text = prefix + content;
|
||||
String text = prefix + entry.text();
|
||||
|
||||
if (entry.type() == MessageType.AGENT) {
|
||||
text = cleanAgentMessage(text);
|
||||
|
||||
@@ -7,7 +7,6 @@ import java.lang.reflect.Method;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
@@ -119,30 +118,4 @@ public class ConversationContextMapperTest {
|
||||
private ConversationMessageDTO createMessage(String text, MessageType type) {
|
||||
return new ConversationMessageDTO(type, Instant.now(), text, null, null);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testToTextFromMessages_SystemNotification_ShouldUseParamText() {
|
||||
ConversationContextMapper mapper = new ConversationContextMapper();
|
||||
|
||||
Map<String, Object> params = new java.util.HashMap<>();
|
||||
params.put("notification_text", "Tu estado de cuenta está listo");
|
||||
|
||||
ConversationMessageDTO systemMessage = new ConversationMessageDTO(
|
||||
MessageType.SYSTEM,
|
||||
Instant.now(),
|
||||
"NOTIFICATION",
|
||||
params,
|
||||
"whatsapp"
|
||||
);
|
||||
|
||||
List<ConversationMessageDTO> messages = new java.util.ArrayList<>();
|
||||
messages.add(systemMessage);
|
||||
|
||||
// WHEN
|
||||
String result = mapper.toTextFromMessages(messages);
|
||||
System.out.println(result);
|
||||
// THEN
|
||||
assertEquals("System: Tu estado de cuenta está listo", result);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user