AI rule node: fix wrapping in JSON object if response is not a valid JSON object

This commit is contained in:
Dmytro Skarzhynets 2025-06-09 17:11:52 +03:00
parent a4db17c859
commit 00d32c2374
No known key found for this signature in database
GPG Key ID: 2B51652F224037DF

View File

@ -115,7 +115,7 @@ public final class TbAiNode extends TbAbstractExternalNode implements TbNode {
addCallback(sendChatRequest(ctx, chatRequest), new FutureCallback<>() {
@Override
public void onSuccess(String response) {
if (!isValidJson(response)) {
if (!isValidJsonObject(response)) {
response = wrapInJsonObject(response);
}
tellSuccess(ctx, ackedMsg.transform()
@ -134,9 +134,10 @@ public final class TbAiNode extends TbAbstractExternalNode implements TbNode {
return ctx.getExternalCallExecutor().submit(() -> chatModel.chat(chatRequest).aiMessage().text());
}
private static boolean isValidJson(String jsonString) {
private static boolean isValidJsonObject(String jsonString) {
try {
return JacksonUtil.toJsonNode(jsonString) != null;
JsonNode result = JacksonUtil.toJsonNode(jsonString);
return result != null && result.isObject();
} catch (IllegalArgumentException e) {
return false;
}