Используя gRPC и C # SDK для потоковой передачи диалога обнаружение намерения в приложении ASP.NET Core, я иногда сталкиваюсь с ситуацией, когда я не получаю полный результат запроса.Я читал аналогичный вопрос SO с той же проблемой, но это было вызвано проблемой со звуком, я не думаю, что это мой случай, так как эта проблема проявляется только каждые 50 или около того вызовов.Я не могу легко воспроизвести проблему в консольном приложении, потому что всякий раз, когда я пытаюсь, я никогда не сталкиваюсь с ошибкой.Я включил регистрацию в своем приложении, которое предоставило некоторую помощь, но я также не получил никаких ошибок API на консоли GCP.
ПРИМЕЧАНИЕ. У всех моих намерений включен веб-крючок.Тем не менее, для запросов с этой ошибкой в истории диалога нет журнала, так что, очевидно, и у моего webhook backend.Больше всего меня смущает то, что я получаю результат стенограммы (так что транскрипция работает), но я не получаю результат распознавания isFinal
, когда сталкиваюсь с этой ошибкой.
Обычный ответ:
{ \"recognitionResult\": { \"messageType\": \"TRANSCRIPT\", \"transcript\": \"yeah\" } }
{ \"recognitionResult\": { \"messageType\": \"TRANSCRIPT\", \"transcript\": \"yeah\" } }
{ \"recognitionResult\": { \"messageType\": \"END_OF_SINGLE_UTTERANCE\" } }
{ \"recognitionResult\": { \"messageType\": \"TRANSCRIPT\", \"transcript\": \"yeah\", \"isFinal\": true, \"confidence\": 0.891504765 } }
{ \"responseId\": \"...\", \"queryResult\": { \"queryText\": \"yeah\", \"parameters\": { }, \"allRequiredParamsPresent\": true, \"fulfillmentMessages\": [ { \"payload\": { ... } } ], \"intent\": { \"name\": \"...", \"displayName\": \"Yes_Intent\" }, \"intentDetectionConfidence\": 1, \"diagnosticInfo\": { \"webhook_latency_ms\": 100 }, \"languageCode\": \"en-au\" }, \"webhookStatus\": { \"message\": \"Webhook execution successful\" } }
Ошибка, вызывающая ответ:
{ \"recognitionResult\": { \"messageType\": \"TRANSCRIPT\", \"transcript\": \"yeah\" } }
{ \"recognitionResult\": { \"messageType\": \"TRANSCRIPT\", \"transcript\": \"yeah\" } }
{ \"recognitionResult\": { \"messageType\": \"END_OF_SINGLE_UTTERANCE\" } }
{ \"queryResult\": { \"languageCode\": \"en-AU\" } }
Я не думаю, что это обязательно проблема с моей реализацией, потому что она работает идеально большую часть времени.Однако возможно ли это поведение из-за сетевой ошибки?Прерывание gRPC?
Я вложил два аудиофайла, первый - тот, который сработал, второй - тот, который не сработал.Они имеют одинаковое кодирование и звук одинакового качества / права на транскрипцию.
клип 1
клип 2
ОБНОВЛЕНИЕ
Я только что столкнулся с ошибкой снова, и она произошла, когда были сделаны два одновременных вызова с намерением обнаружения потоковой передачи.Итак, мой вопрос заключается в следующем: может ли один SessionsClient
обрабатывать параллельные потоки ответов gRPC?