From a8ce97c807b79e7d69b15a1be2f3ab58cd0f073d Mon Sep 17 00:00:00 2001 From: Mikhail Date: Tue, 25 Aug 2026 01:29:03 +0300 Subject: [PATCH] Recognize identity from the original question --- cmd/cognitive-worker/gateway.go | 8 ++++++-- cmd/cognitive-worker/gateway_registry_test.go | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/cmd/cognitive-worker/gateway.go b/cmd/cognitive-worker/gateway.go index ed2e9fc..5ae0eb4 100644 --- a/cmd/cognitive-worker/gateway.go +++ b/cmd/cognitive-worker/gateway.go @@ -187,7 +187,11 @@ func selectionObjectiveForMeaning(meaning cognitive.TaskMeaning, message string) func builtinAdvisory(request cognitive.GatewayAdvisoryRequest) cognitive.GatewayAdvisoryResponse { text := "Проверю запрос доступным маршрутом и сообщу результат." - if request.Meaning.SpeechAct == "QUESTION" && isIdentityInquiry(request.Meaning.RequestedOutcome) { + identityText := request.Meaning.RequestedOutcome + if identityText == "" { + identityText = request.Message + } + if request.Meaning.SpeechAct == "QUESTION" && isIdentityInquiry(identityText) { text = "Я — Домовой, ваш помощник." } switch request.Meaning.InformationRequestKind { @@ -204,7 +208,7 @@ func builtinAdvisory(request cognitive.GatewayAdvisoryRequest) cognitive.Gateway case "REQUEST_TO_INVESTIGATE": text = "Понял задачу. Проверю доступный путь и сообщу результат." case "QUESTION": - if !isIdentityInquiry(request.Meaning.RequestedOutcome) { + if !isIdentityInquiry(identityText) { text = "Проверю вопрос доступным источником и отвечу по существу." } case "CONVERSATIONAL": diff --git a/cmd/cognitive-worker/gateway_registry_test.go b/cmd/cognitive-worker/gateway_registry_test.go index f6d2c16..0b39f08 100644 --- a/cmd/cognitive-worker/gateway_registry_test.go +++ b/cmd/cognitive-worker/gateway_registry_test.go @@ -202,6 +202,15 @@ func TestBuiltInAdvisoryIdentityIsNaturalAndDoesNotMentionResponseLength(t *test if strings.Contains(response.AdvisoryText, "коротко") || strings.Contains(response.AdvisoryText, "подробност") { t.Fatalf("identity response contains style meta-text: %q", response.AdvisoryText) } + messageResponse := builtinAdvisory(cognitive.GatewayAdvisoryRequest{ + Version: cognitive.CreatorAdvisoryV1, + RequestID: "request-identity-message", + Message: "как тебя зовут?", + Meaning: cognitive.TaskMeaning{SpeechAct: "QUESTION"}, + }) + if messageResponse.AdvisoryText != "Я — Домовой, ваш помощник." { + t.Fatalf("unexpected message identity response: %q", messageResponse.AdvisoryText) + } } func TestNoActiveBindingInvokesBuiltInLocalProvider(t *testing.T) { -- 2.54.0