From f720e41ac1539a3c553186e93969d257227ab2dd Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Fri, 14 Feb 2025 17:49:07 +0900 Subject: [PATCH] ... --- .../back/lun/controllers/Telegram.kt | 94 ++++++++++++------- 1 file changed, 58 insertions(+), 36 deletions(-) diff --git a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt index 6c06ba7..8818fe6 100644 --- a/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt +++ b/src/main/kotlin/kr/lunaticbum/back/lun/controllers/Telegram.kt @@ -134,42 +134,51 @@ class Telegram { CoroutineScope(Dispatchers.IO).launch { try { if (req.reqMsg?.contains("주변") == true) { - val gSearch = "https://www.googleapis.com/customsearch/v1?key=AIzaSyARLXyvmr_554tOy3UCh3naFlZQS3-qQQM&cx=207f328d3ad7242f2&q=${req.reqMsg}&num=5&lr=kr" - println("gSearch >>> ${gSearch}") - WebClient.create().get() - .uri(gSearch) - .retrieve() - .bodyToMono(GoogleSearchResult::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> - println("gsearch result ==> ${Gson().toJson(result)}") - req.reqMsg = req.reqMsg + "\n\n" + result.items?.map { it.snippet +"\nurl:"+it.link }?.joinToString { "\n" } - val client = WebClient.create() - client.post() - .uri("https://lama.lunaticbum.kr/api/generate") - .body(BodyInserters.fromValue(Gson().toJson(req))) - .retrieve() - .bodyToMono(String::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> - println("generate Result ==> ${result}") - Gson().fromJson(result, BumlamaResp::class.java)?.let { sss -> - println(Gson().toJson(sss)) - val fullUrl = "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${req.reqMsg}의 대답이 도착했어요.\n\n${sss.response}" - logService.log("fullUrl >>> ${fullUrl}") - WebClient.create().get() - .uri(fullUrl) - .retrieve() - .bodyToMono(String::class.java).block() ?: "FAIL" - } - } - } +// val gSearch = "https://www.googleapis.com/customsearch/v1?key=AIzaSyARLXyvmr_554tOy3UCh3naFlZQS3-qQQM&cx=207f328d3ad7242f2&q=${req.reqMsg}&num=5&lr=kr" +// println("gSearch >>> ${gSearch}") +// WebClient.create().get() +// .uri(gSearch) +// .retrieve() +// .bodyToMono(GoogleSearchResult::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> +// println("gsearch result ==> ${Gson().toJson(result)}") +// req.reqMsg = req.reqMsg + "\n\n" + result.items?.map { it.snippet +"\nurl:"+it.link }?.joinToString { "\n" } +// val client = WebClient.create() +// client.post() +// .uri("https://lama.lunaticbum.kr/api/generate") +// .body(BodyInserters.fromValue(Gson().toJson(req))) +// .retrieve() +// .bodyToMono(String::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> +// println("generate Result ==> ${result}") +// Gson().fromJson(result, BumlamaResp::class.java)?.let { sss -> +// println(Gson().toJson(sss)) +// val fullUrl = "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${req.reqMsg}의 대답이 도착했어요.\n\n${sss.response}" +// logService.log("fullUrl >>> ${fullUrl}") +// WebClient.create().get() +// .uri(fullUrl) +// .retrieve() +// .bodyToMono(String::class.java).block() ?: "FAIL" +// } +// } +// } } else if (req.reqMsg?.contains("검색") == true) { - val gSearch = "https://www.googleapis.com/customsearch/v1?key=AIzaSyARLXyvmr_554tOy3UCh3naFlZQS3-qQQM&cx=207f328d3ad7242f2&q=${req.reqMsg}&num=5&lr=kr" + var originalQuery = req.reqMsg + val gSearch = "https://www.googleapis.com/customsearch/v1?key=AIzaSyARLXyvmr_554tOy3UCh3naFlZQS3-qQQM&cx=207f328d3ad7242f2&q=${originalQuery}&num=5&lr=kr" println("gSearch >>> ${gSearch}") WebClient.create().get() .uri(gSearch) .retrieve() - .bodyToMono(GoogleSearchResult::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> - println("gsearch result ==> ${Gson().toJson(result)}") - req.reqMsg = req.reqMsg + "\n\n" + result.items?.map { it.snippet +"\nurl:"+it.link }?.joinToString { "\n" } + .bodyToMono(GoogleSearchResult::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { gsResult -> + println("gsearch result ==> ${Gson().toJson(gsResult)}") + var additionalInfo = StringBuffer() + gsResult.items?.forEach { + additionalInfo.append("- 정보 타이틀 : ").append(it.title).append("\n") + additionalInfo.append("- 정보 출처 :").append(it.link).append("\n") + additionalInfo.append("- 정보 요약 :").append(it.snippet).append("\n") + } + println("additionalInfo >>> ${additionalInfo.toString()}") + req.reqMsg = "질문 : " + originalQuery + "\n\n추가정보:" + "\n${additionalInfo.toString()} 위의 질문과 추가 정보를 고려하여 답변해주세요." + val client = WebClient.create() client.post() .uri("https://lama.lunaticbum.kr/api/generate") @@ -178,13 +187,26 @@ class Telegram { .bodyToMono(String::class.java).timeout(Duration.ofMinutes(20L)).block()?.let { result -> println("generate Result ==> ${result}") Gson().fromJson(result, BumlamaResp::class.java)?.let { sss -> + var toalmsg = "${originalQuery}의 대답이 도착했어요.\n" + "\n" + "${sss.response}" println(Gson().toJson(sss)) - val fullUrl = "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${req.reqMsg}의 대답이 도착했어요.\n\n${sss.response}" - logService.log("fullUrl >>> ${fullUrl}") - WebClient.create().get() - .uri(fullUrl) - .retrieve() - .bodyToMono(String::class.java).block() ?: "FAIL" + if (toalmsg.length > 200) { + toalmsg.chunked(120).forEach { + val fullUrl = + "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${it}" + WebClient.create().get() + .uri(fullUrl) + .retrieve() + .bodyToMono(String::class.java).block() ?: "FAIL" + } + } else { + val fullUrl = + "https://api.telegram.org/${globalEvv.telegramBotKey}/sendMessage?chat_id=${globalEvv.telegramMyId}&text=${req.reqMsg}의 대답이 도착했어요.\n\n${sss.response}" + logService.log("fullUrl >>> ${fullUrl}") + WebClient.create().get() + .uri(fullUrl) + .retrieve() + .bodyToMono(String::class.java).block() ?: "FAIL" + } } } }