@Override
public ConversationDataResponse doExternalCall(URI url, ConversationDataRequest request, long timeoutInMillis) {
ConversationDataResponse dataResponse = new ConversationDataResponse();
try {
String jsonRequestBody = jsonSerialization.serialize(request);
IResponse httpResponse = httpClient.newRequest(url, IHttpClient.Method.POST)
.setUserAgent(AI_LABS_USER_AGENT)
.setTimeout(timeoutInMillis, TimeUnit.MILLISECONDS)
.setBodyEntity(jsonRequestBody, ENCODING, MediaType.APPLICATION_JSON)
.send();
dataResponse.setHttpCode(httpResponse.getHttpCode());
dataResponse.setHeader(httpResponse.getHttpHeader());
ConversationDataResponseHolder responseHolder = jsonSerialization.deserialize(httpResponse.getContentAsString(), ConversationDataResponseHolder.class);
dataResponse.setConversationMemorySnapshot(responseHolder.getConversationMemorySnapshot());
} catch (IRequest.HttpRequestException | IOException e) {
log.error(e.getLocalizedMessage(), e);
}
return dataResponse;
}
}