diff --git a/gradient-labs-client/src/main/java/ai/gradientlabs/client/request/FinishConversationRequest.java b/gradient-labs-client/src/main/java/ai/gradientlabs/client/request/FinishConversationRequest.java index 19b7623..a06ac92 100644 --- a/gradient-labs-client/src/main/java/ai/gradientlabs/client/request/FinishConversationRequest.java +++ b/gradient-labs-client/src/main/java/ai/gradientlabs/client/request/FinishConversationRequest.java @@ -12,8 +12,12 @@ public class FinishConversationRequest { @JsonProperty("reason") private final String reason; + @JsonProperty("reason_code") + private final String reasonCode; + private FinishConversationRequest(Builder builder) { this.reason = builder.reason; + this.reasonCode = builder.reasonCode; } public static Builder builder() { @@ -28,8 +32,13 @@ public String getReason() { return reason; } + public String getReasonCode() { + return reasonCode; + } + public static class Builder { private String reason; + private String reasonCode; private Builder() { } @@ -39,6 +48,11 @@ public Builder reason(String reason) { return this; } + public Builder reasonCode(String reasonCode) { + this.reasonCode = reasonCode; + return this; + } + public FinishConversationRequest build() { return new FinishConversationRequest(this); } diff --git a/gradient-labs-client/src/test/java/ai/gradientlabs/client/request/FinishConversationRequestTest.java b/gradient-labs-client/src/test/java/ai/gradientlabs/client/request/FinishConversationRequestTest.java new file mode 100644 index 0000000..ccec68c --- /dev/null +++ b/gradient-labs-client/src/test/java/ai/gradientlabs/client/request/FinishConversationRequestTest.java @@ -0,0 +1,39 @@ +package ai.gradientlabs.client.request; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +class FinishConversationRequestTest { + + private final ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); + + @Test + void serializesReasonCode() throws Exception { + FinishConversationRequest request = FinishConversationRequest.builder() + .reason("The customer said goodbye") + .reasonCode("customer-ended-chat") + .build(); + + JsonNode json = objectMapper.valueToTree(request); + + assertEquals("The customer said goodbye", json.get("reason").asText()); + assertEquals("customer-ended-chat", json.get("reason_code").asText()); + assertEquals("customer-ended-chat", request.getReasonCode()); + } + + @Test + void omitsReasonCodeWhenNotSet() throws Exception { + FinishConversationRequest request = FinishConversationRequest.builder() + .reason("The customer said goodbye") + .build(); + + JsonNode json = objectMapper.valueToTree(request); + + assertFalse(json.has("reason_code")); + } +}