diff --git a/scripts/demo_seed.py b/scripts/demo_seed.py index d8c492d..b76734c 100644 --- a/scripts/demo_seed.py +++ b/scripts/demo_seed.py @@ -43,7 +43,7 @@ def build_seed_plan(tag: str) -> dict[str, Any]: "recording_file_name": "demo-call.wav", "ivr_root_prompt_kz": "\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.", "ivr_root_prompt_ru": "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442-\u0446\u0435\u043d\u0442\u0440. \u0414\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0446\u0438\u0444\u0440\u0443 \u0434\u0432\u0430.", - "ivr_root_prompt": "Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз. Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два.", + "ivr_root_prompt": "Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два. Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз.", "ivr_ru_menu_prompt": "Для отдела продаж нажмите 1. Для службы поддержки нажмите 2.", "ivr_kz_menu_prompt": "Сату бөлімі үшін 1 басыңыз. Қолдау қызметі үшін 2 басыңыз.", } @@ -61,16 +61,16 @@ def _demo_ivr_flow_document( "node_id": "root", "prompt_text": plan["ivr_root_prompt"], "prompt_sequence": [ - { - "prompt_audio_key": "ivr/demo-language-kz", - "prompt_text": plan["ivr_root_prompt_kz"], - "language": "kz", - }, { "prompt_audio_key": "ivr/demo-language-ru", "prompt_text": plan["ivr_root_prompt_ru"], "language": "ru", }, + { + "prompt_audio_key": "ivr/demo-language-kz", + "prompt_text": plan["ivr_root_prompt_kz"], + "language": "kz", + }, ], "is_terminal": False, "invalid_target_node_id": "root", diff --git a/tests/test_asterisk_bridge_service.py b/tests/test_asterisk_bridge_service.py index 5efa445..24535b3 100644 --- a/tests/test_asterisk_bridge_service.py +++ b/tests/test_asterisk_bridge_service.py @@ -659,7 +659,7 @@ def test_ivr_fastagi_runtime_plays_prompt_sequence_before_wait(monkeypatch): def play_and_wait_for_digit(self, prompt_audio_key: str, timeout_ms: int) -> str | None: self.playbacks.append((prompt_audio_key, timeout_ms)) - if prompt_audio_key == "ivr/demo-language-ru": + if prompt_audio_key == "ivr/demo-language-kz": return "2" return None @@ -695,8 +695,8 @@ def test_ivr_fastagi_runtime_plays_prompt_sequence_before_wait(monkeypatch): "node_id": "root", "prompt_text": "Combined bilingual prompt", "prompt_sequence": [ - {"prompt_audio_key": "ivr/demo-language-kz", "prompt_text": "Kazakh segment", "language": "kz"}, {"prompt_audio_key": "ivr/demo-language-ru", "prompt_text": "Russian segment", "language": "ru"}, + {"prompt_audio_key": "ivr/demo-language-kz", "prompt_text": "Kazakh segment", "language": "kz"}, ], "options": [{"digit": "2", "target_node_id": "support"}], }, @@ -728,8 +728,8 @@ def test_ivr_fastagi_runtime_plays_prompt_sequence_before_wait(monkeypatch): bridge_ivr_fastagi.run_ivr_call(channel, request) assert channel.playbacks == [ - ("ivr/demo-language-kz", 1), ("ivr/demo-language-ru", 1), + ("ivr/demo-language-kz", 1), ] assert channel.waits == [] assert dtmf_calls == ["2"] diff --git a/tests/test_demo_ready_scripts.py b/tests/test_demo_ready_scripts.py index f3fca3c..5d88270 100644 --- a/tests/test_demo_ready_scripts.py +++ b/tests/test_demo_ready_scripts.py @@ -47,8 +47,8 @@ def test_demo_seed_plan_contains_demo_keyword(): assert plan["recording_file_name"] == "demo-call.wav" assert ( plan["ivr_root_prompt"] - == "Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз. " - "Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два." + == "Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два. " + "Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз." ) assert plan["ivr_ru_menu_prompt"] == "Для отдела продаж нажмите 1. Для службы поддержки нажмите 2." assert plan["ivr_kz_menu_prompt"] == "Сату бөлімі үшін 1 басыңыз. Қолдау қызметі үшін 2 басыңыз." diff --git a/tests/test_ivr_service.py b/tests/test_ivr_service.py index ce92b82..05c8443 100644 --- a/tests/test_ivr_service.py +++ b/tests/test_ivr_service.py @@ -155,16 +155,16 @@ def test_flow_validation_accepts_prompt_sequence_without_single_prompt_key(): "node_id": "root", "prompt_text": "Combined bilingual prompt", "prompt_sequence": [ - { - "prompt_audio_key": "ivr/demo-language-kz", - "prompt_text": "Kazakh segment", - "language": "kz", - }, { "prompt_audio_key": "ivr/demo-language-ru", "prompt_text": "Russian segment", "language": "ru", }, + { + "prompt_audio_key": "ivr/demo-language-kz", + "prompt_text": "Kazakh segment", + "language": "kz", + }, ], "is_terminal": False, "invalid_target_node_id": "root", @@ -189,8 +189,8 @@ def test_flow_validation_accepts_prompt_sequence_without_single_prompt_key(): assert response.status_code == 200 payload = response.json() - assert payload["flow_json"]["nodes"][0]["prompt_sequence"][0]["prompt_audio_key"] == "ivr/demo-language-kz" - assert payload["flow_json"]["nodes"][0]["prompt_sequence"][1]["prompt_audio_key"] == "ivr/demo-language-ru" + assert payload["flow_json"]["nodes"][0]["prompt_sequence"][0]["prompt_audio_key"] == "ivr/demo-language-ru" + assert payload["flow_json"]["nodes"][0]["prompt_sequence"][1]["prompt_audio_key"] == "ivr/demo-language-kz" def test_ivr_session_runtime_emits_voice_event_and_timeline(): diff --git a/ui/admin/app.js b/ui/admin/app.js index 8be7830..12bc4b6 100644 --- a/ui/admin/app.js +++ b/ui/admin/app.js @@ -272,20 +272,20 @@ function defaultIvrFlowDocument() { nodes: [ { node_id: 'root', - prompt_text: 'Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз. Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два.', + prompt_text: 'Здравствуйте! Добро пожаловать в контакт-центр. Для русского языка нажмите цифру два. Саламатсыз ба! Қазақ тілін таңдау үшін бір цифрын теріңіз.', prompt_sequence: [ - { - prompt_audio_key: 'ivr/demo-language-kz', - prompt_text: - '\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.', - language: 'kz', - }, { prompt_audio_key: 'ivr/demo-language-ru', prompt_text: '\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442-\u0446\u0435\u043d\u0442\u0440. \u0414\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0446\u0438\u0444\u0440\u0443 \u0434\u0432\u0430.', language: 'ru', }, + { + prompt_audio_key: 'ivr/demo-language-kz', + prompt_text: + '\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.', + language: 'kz', + }, ], is_terminal: false, invalid_target_node_id: 'root', @@ -369,20 +369,20 @@ function defaultVoiceStartIvrFlowDocument() { { node_id: 'root', prompt_text: - '\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442-\u0446\u0435\u043d\u0442\u0440. \u0414\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0446\u0438\u0444\u0440\u0443 \u0434\u0432\u0430.', + '\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442-\u0446\u0435\u043d\u0442\u0440. \u0414\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0446\u0438\u0444\u0440\u0443 \u0434\u0432\u0430. \u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.', prompt_sequence: [ - { - prompt_audio_key: 'ivr/demo-language-kz', - prompt_text: - '\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.', - language: 'kz', - }, { prompt_audio_key: 'ivr/demo-language-ru', prompt_text: '\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442-\u0446\u0435\u043d\u0442\u0440. \u0414\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0446\u0438\u0444\u0440\u0443 \u0434\u0432\u0430.', language: 'ru', }, + { + prompt_audio_key: 'ivr/demo-language-kz', + prompt_text: + '\u0421\u0430\u043b\u0430\u043c\u0430\u0442\u0441\u044b\u0437 \u0431\u0430! \u049a\u0430\u0437\u0430\u049b \u0442\u0456\u043b\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u04af\u0448\u0456\u043d \u0431\u0456\u0440 \u0446\u0438\u0444\u0440\u044b\u043d \u0442\u0435\u0440\u0456\u04a3\u0456\u0437.', + language: 'kz', + }, ], is_terminal: false, invalid_target_node_id: 'root',