POSTGRES_DB=mvpcc POSTGRES_USER=mvpcc_app POSTGRES_PASSWORD=b913286d34c08a853437f971af6e5f24271f85407597e5a9 CC_DATA_DIR=/app/.data_local SCHEMA_MANAGEMENT_MODE=migrations DATABASE_URL=postgresql+psycopg://mvpcc_app:b913286d34c08a853437f971af6e5f24271f85407597e5a9@postgres:5432/mvpcc APP_TOKEN_SECRET=track9-qa-bridge-secret-change-me ALLOW_LEGACY_HEADER_AUTH=0 AI_PROVIDER=openai_compatible AI_API_BASE=https://api.openai.com/v1 AI_API_KEY=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 AI_MODEL=gpt-5-mini AI_TIMEOUT_SECONDS=30 AI_VOICE_AI_TIMEOUT_SECONDS=15 AI_WEB_SEARCH_ENABLED=1 AI_WEB_SEARCH_MAX_RESULTS=5 AI_WEB_SEARCH_GL=kz AI_WEB_SEARCH_TIMEOUT_SECONDS=8 AI_VOICE_WEB_SEARCH_MAX_RESULTS=4 SERPER_API_KEY=5ae7ad0baf7dfacb8bcd5fc8dca01f61b3207e75 AI_VOICE_ENABLED=1 AI_VOICE_AUDIOSOCKET_ENABLED=1 AI_VOICE_AUDIOSOCKET_HOST=0.0.0.0 AI_VOICE_AUDIOSOCKET_PORT=9019 AI_VOICE_POLICY_MODE=v2_streaming_duplex AI_VOICE_GUARD_MODE=disable_guard AI_VOICE_QUEUE_CONFIG_JSON={"ivr_aimaq_ai_ru":{"mode":"ai_first","agent_profile":"voice_aimaq_gas","handoff_queue_code":"ivr_aimaq_ai_ru","language":"ru"}} AI_VOICE_RUNTIME_SERVICE_URL=http://ai-voice-runtime-service:8000 AI_VOICE_RUNTIME_TRUSTED_SERVICE_SUBJECTS=svc:ai-voice-runtime,svc:realtime-voice AI_VOICE_START_DEFAULT_LANGUAGE_ON_UNCLEAR=ru AI_VOICE_START_EXPLICIT_LANGUAGE_ACK=1 AI_VOICE_START_INLINE_AGENT_PROFILE=voice_aimaq_gas AI_VOICE_MAX_CONTEXT_SEGMENTS=8 AI_VOICE_HANDOFF_TIMEOUT_SECONDS=8 AI_VOICE_TURN_MAX_MS=10000 AI_VOICE_MEDIA_IDLE_TIMEOUT_SECONDS=15 AI_VOICE_GREETING_BARGE_IN_TRIGGER_MS=350 AI_VOICE_V2_ENABLED=1 AI_VOICE_V2_QUEUE_CODES=ivr_aimaq_ai_ru AI_VOICE_V2_ACK_MODE=immediate_short AI_VOICE_V2_DUPLEX_ENABLED=1 AI_VOICE_V2_PARTIAL_ASR=1 AI_VOICE_V2_PREBAKED_ACK_ENABLED=1 AI_VOICE_V2_EMOTIVE_ACK_ENABLED=1 AI_VOICE_V2_EMOTIVE_ACK_RU_ONLY=1 AI_VOICE_V2_STREAMING_TTS=0 AI_VOICE_V2_STREAMING_ASR_BACKEND=elevenlabs_realtime AI_VOICE_V2_STREAMING_ASR_BASE_URL=http://streaming-asr-sidecar:8021 AI_VOICE_V2_STREAMING_ASR_TIMEOUT_SECONDS=15 AI_VOICE_V2_STREAMING_ASR_MODEL=base AI_VOICE_V2_STREAMING_ASR_COMPUTE_TYPE=int8 AI_VOICE_V2_STREAMING_ASR_DEVICE=cpu AI_VOICE_V2_STREAMING_ASR_CACHE_DIR=/models/faster_whisper AI_VOICE_V2_STREAMING_ASR_SUPPORTED_LANGUAGES=ru,kk AI_VOICE_V2_STREAMING_ASR_PARTIAL_POLL_ENABLED=1 AI_VOICE_VAD_RMS_THRESHOLD=800 AI_VOICE_VAD_MIN_SPEECH_MS=300 AI_VOICE_VAD_TRAILING_SILENCE_MS=350 AI_VOICE_NO_SPEECH_REPROMPT_ENABLED=1 AI_VOICE_ASR_PROVIDER=elevenlabs AI_VOICE_ASR_MODEL=gpt-4o-transcribe AI_VOICE_ASR_ELEVENLABS_API_KEY=sk_1c50faab05df13fd0ecde9aeca4abadcc7269ffdc15a03ad AI_VOICE_ASR_ELEVENLABS_API_BASE=https://api.elevenlabs.io AI_VOICE_ASR_ELEVENLABS_MODEL_ID=scribe_v2 AI_VOICE_ASR_ELEVENLABS_LANGUAGE=ru AI_VOICE_ASR_ELEVENLABS_REALTIME_MODEL_ID=scribe_v2_realtime AI_VOICE_ASR_ELEVENLABS_REALTIME_AUDIO_FORMAT=pcm_16000 AI_VOICE_ASR_ELEVENLABS_REALTIME_COMMIT_STRATEGY=vad AI_VOICE_ASR_ELEVENLABS_REALTIME_DEBUG_DUMP_AUDIO=0 AI_VOICE_ASR_ELEVENLABS_REALTIME_FINALIZE_TIMEOUT_SECONDS=1.5 AI_VOICE_ASR_YANDEX_API_KEY=AQWJe16Rdlx_peHUppZ79csG49f1gP4wwQyDzeQ_ AI_VOICE_ASR_YANDEX_FOLDER_ID=ao7hkif5pvc7vfnmbl0d AI_VOICE_TTS_PROVIDER=elevenlabs AI_VOICE_TTS_MODEL=gpt-4o-mini-tts AI_VOICE_TTS_VOICE=alloy AI_VOICE_TTS_CACHE_ENABLED=1 AI_VOICE_TTS_CACHE_DIR=/app/.data_local/ai_voice_tts_cache AI_VOICE_TTS_ELEVENLABS_API_KEY=sk_1c50faab05df13fd0ecde9aeca4abadcc7269ffdc15a03ad AI_VOICE_TTS_ELEVENLABS_API_BASE=https://api.elevenlabs.io AI_VOICE_TTS_ELEVENLABS_MODEL_ID=eleven_turbo_v2_5 AI_VOICE_TTS_ELEVENLABS_RU_VOICE_ID=ut2XM2wJyIZLTtW6lFzZ AI_VOICE_TTS_ELEVENLABS_RU_LANGUAGE_CODE=ru AI_VOICE_TTS_ELEVENLABS_KK_VOICE_ID=ut2XM2wJyIZLTtW6lFzZ AI_VOICE_TTS_ELEVENLABS_KK_LANGUAGE_CODE=kk AI_VOICE_TTS_ELEVENLABS_OUTPUT_FORMAT=pcm_16000 AI_VOICE_TTS_YANDEX_API_KEY=AQWJUMiUaXmbegxN4kgvM2XIlNqAPoBR5Wtq-40 AI_VOICE_TTS_YANDEX_FOLDER_ID=ao7hkif5pvc7vfnmbl0d MVPCC_AI_AUDIOSOCKET_SERVICE=127.0.0.1:9019 LOCAL_STACK_GATEWAY_HOST=0.0.0.0 LOCAL_STACK_GATEWAY_PORT=18080 LOCAL_STACK_PUBLIC_BASE_URL=https://aimaq.konturai.kz ASTERISK_BRIDGE_ENABLED=1 ASTERISK_AMI_HOST=172.19.0.1 ASTERISK_AMI_PORT=5038 ASTERISK_AMI_USERNAME=mvpcc ASTERISK_AMI_SECRET=Konturai2025! ASTERISK_AMI_EVENT_PREFIX=MVPCC ASTERISK_QUEUE_MAP_JSON={"ivr_aimaq_ai_ru":"que_1bf519706b"} ASTERISK_BRIDGE_POLL_INTERVAL_SECONDS=1 ASTERISK_BRIDGE_AUTH_MODE=bearer ASTERISK_BRIDGE_AUTH_FALLBACK_LEGACY=0 ASTERISK_BRIDGE_AUTH_SUBJECT=svc:asterisk-bridge ASTERISK_BRIDGE_AUTH_USER=asterisk-bridge ASTERISK_BRIDGE_AUTH_ROLE=admin ASTERISK_BRIDGE_AUTH_TOKEN_TTL_SECONDS=300 ASTERISK_BRIDGE_FAILED_RETRY_ENABLED=0 ASTERISK_CALLCONTROL_ENABLED=1 ASTERISK_CALLCONTROL_ACTION_TIMEOUT_SECONDS=10 ASTERISK_OPERATOR_EXTENSION_MAP_JSON={"operator":"2001","admin":"2001","supervisor":"2002"} ASTERISK_TRANSFER_TARGET_MAP_JSON={"operator_2001":"2001","operator_2002":"2002","voice_lab":"7000","voice_lab_ai":"7100","voice_lab_ivr":"7200","ivr_aimaq_ai_ru":"7100"} ASTERISK_QUEUE_LEVEL_MAP_JSON={"voice_lab_ai":{"level":"L2","tenant_id":"dev-aimaq"},"ivr_aimaq_ai_ru":{"level":"L2","tenant_id":"dev-aimaq"}} ASTERISK_CALLCONTROL_CLAIM_CONTEXT=mvpcc-claim ASTERISK_CALLCONTROL_TRANSFER_CONTEXT=mvpcc-transfer ASTERISK_IVR_FASTAGI_ENABLED=0 ASTERISK_IVR_FASTAGI_HOST=0.0.0.0 ASTERISK_IVR_FASTAGI_PORT=4573 ASTERISK_IVR_DTMF_TIMEOUT_SECONDS=5 ASTERISK_IVR_MAX_NO_INPUT_RETRIES=2 ASTERISK_IVR_MAX_INVALID_RETRIES=2 ASTERISK_IVR_CALL_LINK_WAIT_SECONDS=5 IVR_RUNTIME_TRUSTED_SERVICE_SUBJECTS=svc:asterisk-bridge ASTERISK_SFTP_HOST=172.19.0.1 ASTERISK_SFTP_PORT=22 ASTERISK_SFTP_USERNAME=mvpcc ASTERISK_SFTP_PASSWORD=Konturai2025! ASTERISK_SFTP_BASE_PATH=/var/spool/asterisk/monitor ASTERISK_WEBRTC_ENABLED=1 ASTERISK_WEBRTC_WS_URL=wss://aimaq.konturai.kz/asterisk-ws ASTERISK_WEBRTC_ICE_SERVERS_JSON=[{"urls":["stun:stun.l.google.com:19302"]}] ASTERISK_BROWSER_SIP_MAP_JSON={"operator":{"authorization_username":"2001","password":"Konturai2025!","display_name":"Operator Browser","operator_extension":"2001"},"admin":{"authorization_username":"2001","password":"Konturai2025!","display_name":"Admin Browser","operator_extension":"2001"},"supervisor":{"authorization_username":"2002","password":"Konturai2025!","display_name":"Supervisor Browser","operator_extension":"2002"}} ASTERISK_TELECOM_KZ_PASSWORD=Sip3901485$ ASTERISK_AI_HANDOFF_MODAL_ENABLED=1 ASTERISK_AI_HANDOFF_TIMEOUT_SECONDS=45 VOICE_ADAPTER_TRUSTED_SERVICE_SUBJECTS=svc:asterisk-bridge,svc:ivr-service RECORDING_IMPORT_TRUSTED_SERVICE_SUBJECTS=svc:asterisk-bridge RECORDING_IMPORT_ALLOW_ADMIN=0 TELEGRAM_BOT_ENABLED=0 TELEGRAM_BOT_TOKEN=8609072185:AAH4Nt4M2xD_Iv6TrXnl4OP_uEvzOcAxqFk TELEGRAM_WEBHOOK_SECRET=WCbJLSEsUDborikyZMPuPKKPoQfpFti- TELEGRAM_DEFAULT_QUEUE_ID=q_telegram TELEGRAM_BOT_API_BASE=https://api.telegram.org AI_TELEGRAM_ENABLED=0 AI_TELEGRAM_ALWAYS_REPLY=1 AI_TELEGRAM_MAX_CONTEXT_MESSAGES=20 AI_TELEGRAM_MAX_KB_RESULTS=3 AI_TELEGRAM_CONFIDENCE_HANDOFF_THRESHOLD=0.65 WHATSAPP_DEFAULT_QUEUE_ID=q_whatsapp WHATSAPP_META_ACCESS_TOKEN=EAAUu4XM6OzUBQ2HZAh1iQI2ZCSQZBeNbI6jECH5wZA3ZAIbyWOlQ6uGBJ96zAX5qj9fhEAS8pnKslOl6o3yD1oRbZAXCBYSQSoy1CcEoIrSJRnQtNksmL00NHb5jYEDexySuzKpZB19I4YvfV24FfNZBHauKBkjANZAAO83lXtqflkhydeWYCPMwpgZBYgRvXLiI0ufZCJ03WUSdR3BsOCVZAO9MUpC6GcgZA3EsmXWbpWLQf4NQOCvFvviOoEq9YkGKV1ecq8SG9xSyBl2e0vJrJeMeGzeGa WHATSAPP_META_PHONE_NUMBER_ID=973115089226218 WHATSAPP_META_VERIFY_TOKEN=wa_verify_wKP_jHlRTYmbR2teDQQ2cF6wugdMzhQ_ WHATSAPP_META_APP_SECRET=b627a513ce85751ce7948b1396b03a52 WHATSAPP_META_GRAPH_API_VERSION=v25.0 WHATSAPP_OUTBOUND_ENABLED=0 AI_WHATSAPP_ENABLED=0 AI_WHATSAPP_ALWAYS_REPLY=0 AI_WHATSAPP_MAX_CONTEXT_MESSAGES=20 AI_WHATSAPP_MAX_KB_RESULTS=3 AI_WHATSAPP_CONFIDENCE_HANDOFF_THRESHOLD=0.65 AI_WHATSAPP_WEB_SEARCH_MAX_RESULTS=5 SALES_VOICE_RUNTIME_ENABLED=1 SALES_VOICE_SYNC_TENANT_ID=dev-aimaq SALES_TELEGRAM_SYNC_TENANT_ID=dev-aimaq SALES_TELEGRAM_STAGE_EVERY_MESSAGES=3 SALES_TELEGRAM_BRIDGE_ENABLED=0 SALES_AUTOMATION_WORKER_ENABLED=1 SALES_AUTOMATION_WORKER_INTERVAL_SECONDS=5 SALES_POST_CALL_AI_ENABLED=1 EVENT_BUS_ENABLED=0 EVENT_BUS_CONSUMER_ENABLED=0 EVENT_BUS_URL=amqp://guest:guest@127.0.0.1:5672/ EVENT_BUS_EXCHANGE=mvpcc.domain.events ERROR_TELEGRAM_ALERTS=0 ERROR_TELEGRAM_ALERT_BOT_TOKEN=8734026216:AAEK-xdgVR5al6rfKp_DIb-HSJZXGUG2Tvg ERROR_TELEGRAM_ALERT_CHANNEL_ID=t.me/konturaitelecom AI_OPERATOR_AGENT_NAME=Жанна AI_OPERATOR_COMPANY_NAME=Казакгаз Аймак AI_OPERATOR_VOICE_GREETING_RU=Добрый день! Меня зовут Жанна, я ИИ-оператор контакт-центра Казакгаз Аймак. Вам удобнее получить консультацию на казахском или на русском языке? AI_OPERATOR_VOICE_GREETING_KZ=Қайырлы күн! Менің атым Жанна, мен «Қазақгаз Аймақ» байланыс орталығында жасанды интеллект операторымын. Кеңесті қазақ немесе орыс тілінде алғыңыз келе ме? AI_OPERATOR_IDENTITY_REPLY_RU=Я Жанна, ИИ-оператор контакт-центра Казакгаз Аймак. Чем могу помочь? AI_OPERATOR_IDENTITY_REPLY_KZ=Мен Жаннамын, «Қазақгаз Аймақ» байланыс орталығының жасанды интеллект операторымын. Қалай көмектесе аламын? AI_OPERATOR_BASE_SYSTEM_PROMPT=Ты Жанна, единый ИИ-оператор контакт-центра Казакгаз Аймак для звонков, Telegram и других каналов. Всегда сохраняй одну и ту же личность: тебя зовут Жанна. Если клиент спрашивает, кто ты или как тебя зовут, отвечай, что ты Жанна. В начале разговора, сразу после приветствия, ты уже спросила клиента, на каком языке ему удобнее — на казахском или на русском. Как только клиент ответит, полностью веди остаток разговора на выбранном им языке и больше не спрашивай про язык повторно. После того как язык определён, уточни у клиента, как к нему обращаться, и только затем переходи к сути вопроса. Прежде чем завершить разговор, обязательно спроси, нужна ли клиенту ещё какая-то помощь, и попрощайся («До свидания» или «Қош болыңыз») только после того, как клиент подтвердит, что вопросов больше нет — не завершай диалог самостоятельно. Отвечай естественно, кратко и по делу. Когда говоришь о себе, используй женский род: могла, смогла, сделала, готова, проверила, нашла. Телефонные номера читай по цифрам. Не используй Markdown, URL или таблицы. DOMAIN SCOPE: ты отвечаешь ТОЛЬКО на вопросы, связанные с услугами газоснабжения: оплата газа, счётчики, ваучеры, технические условия, отключение газа, мобильное приложение, квитанции, передача показаний, контакты филиалов, безопасность газа. Если вопрос НЕ связан с газом (погода, спорт, политика, другие компании, личные советы, кулинария, рецепты, анекдоты, новости, фильмы), вежливо откажи БЕЗ поиска в базе знаний и БЕЗ попытки ответить: RU «Я могу ответить только на вопросы, связанные с услугами газоснабжения. Пожалуйста, задайте вопрос по теме газа.» KK «Мен тек газмен қамтамасыз ету қызметтеріне байланысты сұрақтарға жауап беремін. Газ тақырыбында сұрақ қойыңызшы.» Не пытайся ответить на вопрос не по теме, даже если знаешь ответ.