Commit Graph
196 Commits
Author SHA1 Message Date
Yera All 39096e114f fix(voice): harden noisy streaming turns 2026-04-17 00:30:41 +05:00
Yera All 8ca5f23e93 Polish operator messenger layout 2026-04-17 00:14:41 +05:00
Yera All aa6f838061 fix(voice): keep asr partial polling off push path 2026-04-17 00:06:27 +05:00
Yera All 52b2edfcd3 fix(voice): stop thinking continuation on silence 2026-04-16 23:56:10 +05:00
Yera All f14aeb39df test(voice): wait for async streaming asr push 2026-04-16 23:48:07 +05:00
Yera All d331981ac8 fix(voice): decouple streaming asr from media loop 2026-04-16 23:11:24 +05:00
Yera All 03450cc308 Repair writable local deploy data dirs 2026-04-16 22:49:34 +05:00
Yera All ad6a3c2c8f Include asterisk assets in deploy permission repair 2026-04-16 22:46:24 +05:00
Yera All 1f457a1a25 Harden deploy permission repair 2026-04-16 22:41:12 +05:00
Yera All 41f48cb821 Fix source deploy permissions repair 2026-04-16 22:30:28 +05:00
Yera All 3b5a7ad2e7 Add operator unified messenger MVP 2026-04-16 22:16:57 +05:00
Yera All 1206ff91ac chore: push remaining local changes 2026-04-16 02:31:57 +05:00
Yera All 5af47991dc fix(voice): stabilize turn finalization after asr timeouts 2026-04-16 02:30:39 +05:00
Yera All 213057efeb Revert "feat(asterisk): add telecom.kz IP trunk for DID 87273901485"
This reverts commit 436821737e.
2026-04-16 01:27:34 +05:00
Yera AllandClaude Opus 4.6 436821737e feat(asterisk): add telecom.kz IP trunk for DID 87273901485
Wires the production number 87273901485 (SIP account 86205414@sip.telecom.kz)
into the voice stack as a no-registration IP trunk. Inbound INVITEs are
identified by source IP 92.46.61.21 and routed straight into the AI-first
entrypoint (7100), with the existing AudioSocket -> live operator fallback
preserved.

The Asterisk container was also never started by the source-based CI deploy
(only the registry-based path brought it up). Patch scripts/deploy_gitlab.sh
to also run docker-compose.asterisk.server.yml so the voice channel stays in
sync with the rest of the platform on every push to the default branch.

- deployment/asterisk/pjsip.conf: add telecom-kz aor/auth/endpoint/identify
- deployment/asterisk/entrypoint.sh: inject ASTERISK_TELECOM_KZ_PASSWORD
- deployment/asterisk/extensions.conf: new [from-telecom] context -> 7100
- .env.production.template: document ASTERISK_TELECOM_KZ_PASSWORD
- scripts/deploy_gitlab.sh: also bring up the asterisk compose file

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 01:19:06 +05:00
Yera All 0d7e833a0d fix(voice): ignore playback audio until real barge-in 2026-04-13 12:28:36 +05:00
Yera AllandClaude Opus 4.6 6798320209 fix: remove dead code duplicates, add SQL LIMIT across all services
- Remove duplicate function definitions with hardcoded "AI-оператор" strings
  (ai_voice_runtime, ai_orchestrator, voice_name_config, voice.py)
- Remove unreachable dead code after return in ai_voice_runtime
- Add SQL LIMIT to 17 unbounded queries across 12 services to prevent OOM
- Move Python-side filtering to SQL WHERE in reporting_service
- Downgrade 19 logger.warning to logger.info for normal-flow events in media_runtime

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 12:04:26 +05:00
Yera All 6b8f5d069b feat(ai): add rolling conversation summary memory 2026-04-13 11:59:43 +05:00
Yera All 989bf9a0c1 fix(voice): stabilize v2 streaming topic handling 2026-04-12 21:59:32 +05:00
Yera All 7f4c80add1 test(voice): align runtime expectations with v2 fallback 2026-04-12 21:32:49 +05:00
Yera All 57bd5cad4b fix(voice): suppress low-signal turns and false lookup replies 2026-04-12 20:40:25 +05:00
Yera All 18ab5aa2e2 fix(voice): include requests for streaming asr sidecar 2026-04-12 15:12:43 +05:00
Yera All a5b402f329 fix(deploy): pass sidecar app module at container runtime 2026-04-12 14:26:24 +05:00
Yera All f2ece35588 fix(tests): isolate db state and stabilize voice runtime suite 2026-04-12 11:38:02 +05:00
Yera All e581d48c44 test(voice): wait on sidecar runtime events 2026-04-12 02:31:51 +05:00
Yera All adc7d4babb test(voice): wait on fallback turn completion 2026-04-12 02:21:25 +05:00
Yera All 41d4a5ea86 test(voice): harden streaming fallback scenario 2026-04-12 02:07:12 +05:00
Yera All 691899b969 test(voice): deflake streaming sidecar fallback wait 2026-04-12 01:59:19 +05:00
Yera All c4c8b69494 fix(sql): backfill whatsapp chat_id in compat init 2026-04-12 01:52:27 +05:00
Yera All bdaf65a256 fix(db): avoid repeated sqlite schema initialization 2026-04-12 01:45:49 +05:00
Yera All ee9889501f fix(deploy): preserve streaming asr model cache 2026-04-12 01:42:28 +05:00
Yera All 9386b8f9b9 feat(voice): add streaming asr sidecar for v2 duplex 2026-04-12 01:38:30 +05:00
Yera All b75b76fae6 feat(voice): add duplex streaming v2 pipeline 2026-04-11 17:38:21 +05:00
Yera All fc976804e4 feat(voice): add admin-configurable elevenlabs tts 2026-04-11 16:46:43 +05:00
Yera All 9d0b76deca fix(voice): make fast ack more audible 2026-04-11 02:27:49 +05:00
Yera All 05dc31855d feat(voice): add controlled emotive ack layer 2026-04-11 02:14:53 +05:00
Yera All 5588f99db9 fix(voice): fast fallback for off-domain requests 2026-04-11 01:55:28 +05:00
Yera All 6413beeba1 feat(voice): emit immediate ack on turn close 2026-04-11 01:40:04 +05:00
Yera All c39fad7e2d feat(voice): add phase 1.1 partial asr fast ack 2026-04-11 01:24:21 +05:00
Yera All ba0e1143ca fix(deploy): sync ivr prompt wavs to server 2026-04-08 16:00:49 +05:00
Yera All bfaec370f9 chore: remove dead supervisor analytics and archived tooling 2026-04-08 15:59:07 +05:00
Yera All cf824f3fdd fix(ivr): play russian language prompt first 2026-04-08 15:42:57 +05:00
Yera All 5d192621b0 Show name status in operator customer profile 2026-04-08 15:35:37 +05:00
Yera All 6f25de1f62 Add customer profile name editing for operator 2026-04-08 15:13:05 +05:00
Yera All fa2ea1ef03 fix(voice): preserve llm name corrections in downstream turns 2026-04-08 12:49:14 +05:00
Yera All a4b1eb2818 feat(voice): auto-populate name from known customer on repeat calls
When a new voice session starts and the customer already has a trusted
display_name on file (e.g. from a previous call), automatically set
name_status to 'name_obtained' so the AI greets them by name instead
of asking again.
2026-04-08 01:19:40 +05:00
Yera All a47c09d465 fix(voice): prevent regex heuristic from overwriting LLM-extracted customer name
- Block old _voice_downstream_name_update from overwriting name_obtained status
  unless user explicitly says 'меня зовут X' (explicit_candidate only)
- Move _persist_voice_name_state to run AFTER LLM extraction, not before,
  so LLM always gets a chance to override the regex result
- Fixes bug where phrases like 'можешь назвать их' were incorrectly
  captured as customer name, overwriting the real name
2026-04-08 01:06:08 +05:00
Yera All 6035c5d4d0 feat(ai): shift name extraction to LLM payload piggybacking to improve contextual accuracy 2026-04-07 11:01:17 +05:00
Yera All 1444cf07ab fix(ai): ignore generic phrases and stopwords in voice name extraction 2026-04-07 01:01:06 +05:00
Yera All f976a0c2be test(ai): update Yandex TTS speed assertion to 1.1x default 2026-04-07 00:48:52 +05:00