왜 챗봇·콜봇 루프는 재질문에서 무너지는가
입력이 아예 없는 무응답(no-input)과 입력은 했지만 인식·이해에 실패한 오인식(no-match)은 원인이 다른데도, 많은 루프가 두 상황에 같은 재질문 문장을 그대로 재생합니다. Google 대화 디자인 가이드는 이 둘을 구분해 처리하도록 권고하며, 무응답·오인식을 합산해 연속 3회를 넘기지 않는 것을 기본 상한으로 제시합니다. 상한을 넘긴 뒤에도 같은 루프에 재진입시키면 사용자는 네 번째 시도 전에 통화를 끊거나 채팅창을 닫습니다.
재질문은 사다리다: 열림 → 제약 → 전환
첫 재질문은 원래 질문을 그대로 반복하지 않고 누락된 정보만 짧게 되묻는 것이 원칙입니다. 두 번째는 개방형 질문을 제약된 선택지나 버튼·DTMF 병행 안내로 좁혀 인식 실패 확률 자체를 낮춥니다. 세 번째에서도 실패하면 상담원 전환이나 정중한 종료로 루프를 닫아야 하며, 이 3단 구조가 재질문 사다리입니다. 1차부터 상담원으로 넘기면 자동 해결률이 떨어지고, 3차까지 같은 열린 질문을 반복하면 이탈률이 오릅니다.
루프 카운터의 범위: 슬롯 단위인가 세션 단위인가
카운터를 세션 전체로 묶으면 이름을 두 번 되물은 사용자가 이후 주문번호 슬롯에서 한 번만 틀려도 곧바로 상한에 걸립니다. 슬롯마다 카운터를 독립적으로 두고 성공적으로 채운 슬롯의 카운터만 리셋하면 오탐 에스컬레이션이 줄어듭니다. 다만 세션 전체 누적이 지나치게 크면(예: 6회 이상) 별도의 세션 레벨 상한으로 전체 종료를 트리거해 무한 루프를 막아야 합니다.
설계에서 운영까지: 재질문 사다리 실전 체크리스트
목표 지표부터 수치로 고정합니다. 재질문 상한은 슬롯당 무응답·오인식 합산 3회, 1차 재질문 후 유효 입력을 얻는 재질문 회복률 60% 이상, 3회 초과 세션의 상담원 전환 소요 5초 이내, 1·2·3차에서 동일 문장을 그대로 재생하는 verbatim 반복 발생률 0%를 시작 기준으로 둡니다. 회복률이 목표치보다 낮다면 사다리 1단계 문구부터 재검토합니다.
흔한 실패 패턴은 네 가지입니다. 1·2·3차 재질문에 동일 문장을 재생하는 verbatim 반복, 카운터를 세션 전체로 묶어 슬롯 하나의 실수가 다른 슬롯 응답까지 상한을 앞당기는 경우, 무응답 타임아웃을 음성과 DTMF 채널에 똑같이 적용해 버튼 입력 대기 시간이 지나치게 짧아지는 경우, 3회 초과 후에도 탈출 조건 없이 같은 루프에 재진입시키는 경우입니다.
복구 분기는 사다리 단계별로 고정합니다. 1차는 누락 정보만 짧게 되묻고 원문을 반복하지 않습니다. 2차는 개방형 질문을 제약된 선택지나 버튼 입력으로 좁혀 인식 실패 확률을 구조적으로 낮춥니다. 3차에서도 실패하면 상담원 전환 또는 정중한 종료로 루프를 강제 종료하고, 전환 사유(no-input 또는 no-match, 도달 tier)를 상담원 화면에 함께 전달해 같은 질문이 반복되지 않게 합니다.
배포 전 시나리오 테스트는 연속 무응답 3회, 오인식 3회, 혼합 3회 조합을 포함해야 합니다. 로그에는 retry_count, error_type(no-input·no-match), reprompt_tier, outcome(회복·전환·종료) 필드를 남기고, 문구에 등장할 수 있는 이름·전화번호는 저장 전에 마스킹합니다.
개선 루프는 주간 단위입니다. tier별 이탈률과 회복률을 매주 리뷰해 낮은 tier의 문구를 A/B 테스트로 교체하고, 상한 도달로 상담원에 넘어간 세션은 원인 슬롯을 집계해 다음 주기의 손질 순서를 정합니다.
한눈에 보는 적용 포인트
무응답과 오인식을 구분해 합산 3회 상한을 슬롯 단위로 두고, 재질문은 원문 반복이 아니라 열림 → 제약 → 전환의 3단 사다리로 설계해야 이탈 전에 사용자를 붙잡을 수 있습니다. 카운터 범위와 재질문 회복률 지표를 먼저 코드로 선언해 두면 다음 슬롯을 추가할 때도 같은 사다리를 그대로 재사용할 수 있습니다.