4.4 KiB
4.4 KiB
Asterisk Lab Config
This folder contains the lab-grade configuration set for Track 9, Track 11, and Track 14:
pjsip.confextensions.confmanager.confhttp.confrtp.conf
These files are templates for a dedicated Linux VM running Asterisk 20 LTS.
Before using them:
- Replace default passwords and secrets.
- Confirm the softphone source network.
- Create the recording directory:
/var/spool/asterisk/monitor/mvpcc
- Point
ASTERISK_QUEUE_MAP_JSONin the platform to the matching queue code:voice_labvoice_lab_aifor the dedicated AI-first staging entrypointvoice_lab_ivrfor the dedicated IVR staging entrypoint
- Configure operator extension mapping in bridge env for Track 11 call control:
ASTERISK_OPERATOR_EXTENSION_MAP_JSON={"operator_a":"2001","operator_b":"2002"}
- 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"}
- 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_keyfiles 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 rupython scripts/materialize_tts_prompt.py --text "Для отдела продаж нажмите 1. Для службы поддержки нажмите 2." --output /usr/share/asterisk/sounds/en/mvpcc_ivr_menu_ru.wav --language rupython 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_DIRinstead of calling OpenAI again for the same text
- enable
- 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.confwith a trusted cert/key pair
- enable
- 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.soon the Asterisk VM before enabling the AI media path - set
MVPCC_AI_AUDIOSOCKET_SERVICE=<media-host>:<port>inextensions.confonly after the AudioSocket listener is reachable
- enable
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 normalMVPCCCallStartedevent withQueueCode=voice_lab_ai, then:- falls back to human dialing immediately if
MVPCC_AI_AUDIOSOCKET_SERVICEis blank - otherwise starts
AudioSocket(<uuid>,<host>:<port>)for the media bridge
- falls back to human dialing immediately if
7200: IVR staging path. It emits the normalMVPCCCallStartedevent withQueueCode=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
- hands control to FastAGI at
Important Voice AI note:
AI_VOICE_RUNTIME_SERVICE_URLis the HTTP control-plane endpoint for platform services.MVPCC_AI_AUDIOSOCKET_SERVICEis a separate raw AudioSocket address for Asterisk media.- Do not point
MVPCC_AI_AUDIOSOCKET_SERVICEat the runtime HTTP port.
Default lab SIP accounts from pjsip.conf:
1001(caller)2001(operator A)2002(operator B)
Track 14 note:
2001and2002are allowed to keep multiple contacts so browser registration can coexist withMicroSIP/Zoiperin QA.