Files
call-center/deployment/asterisk

Asterisk Lab Config

This folder contains the lab-grade configuration set for Track 9, Track 11, and Track 14:

  • pjsip.conf
  • extensions.conf
  • manager.conf
  • http.conf
  • rtp.conf

These files are templates for a dedicated Linux VM running Asterisk 20 LTS.

Before using them:

  1. Replace default passwords and secrets.
  2. Confirm the softphone source network.
  3. Create the recording directory:
    • /var/spool/asterisk/monitor/mvpcc
  4. Point ASTERISK_QUEUE_MAP_JSON in the platform to the matching queue code:
    • voice_lab
    • voice_lab_ai for the dedicated AI-first staging entrypoint
    • voice_lab_ivr for the dedicated IVR staging entrypoint
  5. Configure operator extension mapping in bridge env for Track 11 call control:
    • ASTERISK_OPERATOR_EXTENSION_MAP_JSON={"operator_a":"2001","operator_b":"2002"}
  6. Optional transfer map for queue-code based blind transfer:
    • ASTERISK_TRANSFER_TARGET_MAP_JSON={"voice_lab":"2001","voice_lab_ai":"2001","voice_lab_ivr":"7200"}
  7. For IVR-over-Asterisk staging:
    • enable ASTERISK_IVR_FASTAGI_ENABLED=1
    • set ASTERISK_IVR_FASTAGI_HOST=<bridge-host>
    • set ASTERISK_IVR_FASTAGI_PORT=4573
    • set IVR_RUNTIME_TRUSTED_SERVICE_SUBJECTS=svc:asterisk-bridge
    • provision the referenced prompt_audio_key files under the Asterisk sounds directory
    • if you want a higher-quality prompt from OpenAI TTS, generate it once and keep it on the server:
      • python scripts/materialize_tts_prompt.py --text "Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите 1. Қазақ тілі үшін 2 басыңыз." --output /usr/share/asterisk/sounds/en/mvpcc_ivr_language.wav --language ru
      • python scripts/materialize_tts_prompt.py --text "Для отдела продаж нажмите 1. Для службы поддержки нажмите 2." --output /usr/share/asterisk/sounds/en/mvpcc_ivr_menu_ru.wav --language ru
      • python scripts/materialize_tts_prompt.py --text "Сату бөлімі үшін 1 басыңыз. Қолдау қызметі үшін 2 басыңыз." --output /usr/share/asterisk/sounds/en/mvpcc_ivr_menu_kz.wav --language kk
      • repeated runs reuse the server cache from AI_VOICE_TTS_CACHE_DIR instead of calling OpenAI again for the same text
  8. For Track 14 browser softphone QA:
    • enable ASTERISK_WEBRTC_ENABLED=1
    • set ASTERISK_WEBRTC_WS_URL=wss://<asterisk-host>:8089/ws
    • configure ASTERISK_BROWSER_SIP_MAP_JSON
    • replace TLS placeholders in http.conf with a trusted cert/key pair
  9. For Voice AI V1 lab wiring:
    • enable AI_VOICE_ENABLED=1
    • set AI_VOICE_QUEUE_CONFIG_JSON={"voice_lab_ai":{"mode":"ai_first","agent_profile":"voice_support","handoff_queue_code":"voice_lab","language":"ru"}}
    • set AI_VOICE_RUNTIME_SERVICE_URL=http://ai-voice-runtime-service:8000
    • keep AI_VOICE_RUNTIME_TRUSTED_SERVICE_SUBJECTS=svc:ai-voice-runtime
    • load app_audiosocket.so on the Asterisk VM before enabling the AI media path
    • set MVPCC_AI_AUDIOSOCKET_SERVICE=<media-host>:<port> in extensions.conf only after the AudioSocket listener is reachable

Entrypoints in extensions.conf:

  • 7000: human-only baseline. This path preserves the original Track 9/11 behavior.
  • 7100: AI-first staging path. It emits the normal MVPCCCallStarted event with QueueCode=voice_lab_ai, then:
    • falls back to human dialing immediately if MVPCC_AI_AUDIOSOCKET_SERVICE is blank
    • otherwise starts AudioSocket(<uuid>,<host>:<port>) for the media bridge
  • 7200: IVR staging path. It emits the normal MVPCCCallStarted event with QueueCode=voice_lab_ivr, then:
    • hands control to FastAGI at MVPCC_IVR_FASTAGI_HOSTPORT
    • routes completed IVR sessions through mvpcc-transfer
    • falls back to the human baseline if FastAGI does not return a transfer target

Important Voice AI note:

  • AI_VOICE_RUNTIME_SERVICE_URL is the HTTP control-plane endpoint for platform services.
  • MVPCC_AI_AUDIOSOCKET_SERVICE is a separate raw AudioSocket address for Asterisk media.
  • Do not point MVPCC_AI_AUDIOSOCKET_SERVICE at the runtime HTTP port.

Default lab SIP accounts from pjsip.conf:

  • 1001 (caller)
  • 2001 (operator A)
  • 2002 (operator B)

Track 14 note:

  • 2001 and 2002 are allowed to keep multiple contacts so browser registration can coexist with MicroSIP/Zoiper in QA.