Add voice name flow controls and analytics
This commit is contained in:
+26
-67
@@ -49,7 +49,12 @@ def build_seed_plan(tag: str) -> dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def _demo_ivr_flow_document(plan: dict[str, Any], *, sales_queue_id: str, support_queue_id: str) -> dict[str, Any]:
|
||||
def _demo_ivr_flow_document(
|
||||
plan: dict[str, Any],
|
||||
*,
|
||||
voice_start_kz_queue_id: str,
|
||||
voice_start_ru_queue_id: str,
|
||||
) -> dict[str, Any]:
|
||||
return {
|
||||
"nodes": [
|
||||
{
|
||||
@@ -71,72 +76,26 @@ def _demo_ivr_flow_document(plan: dict[str, Any], *, sales_queue_id: str, suppor
|
||||
"invalid_target_node_id": "root",
|
||||
"no_input_target_node_id": "root",
|
||||
"options": [
|
||||
{"digit": "1", "target_node_id": "menu_kz"},
|
||||
{"digit": "2", "target_node_id": "menu_ru"},
|
||||
{"digit": "1", "target_node_id": "voice_start_kz"},
|
||||
{"digit": "2", "target_node_id": "voice_start_ru"},
|
||||
],
|
||||
},
|
||||
{
|
||||
"node_id": "menu_ru",
|
||||
"prompt_text": plan["ivr_ru_menu_prompt"],
|
||||
"prompt_audio_key": "ivr/demo-menu-ru",
|
||||
"is_terminal": False,
|
||||
"invalid_target_node_id": "menu_ru",
|
||||
"no_input_target_node_id": "menu_ru",
|
||||
"options": [
|
||||
{"digit": "1", "target_node_id": "sales_ru"},
|
||||
{"digit": "2", "target_node_id": "support_ru"},
|
||||
],
|
||||
},
|
||||
{
|
||||
"node_id": "menu_kz",
|
||||
"prompt_text": plan["ivr_kz_menu_prompt"],
|
||||
"prompt_audio_key": "ivr/demo-menu-kz",
|
||||
"is_terminal": False,
|
||||
"invalid_target_node_id": "menu_kz",
|
||||
"no_input_target_node_id": "menu_kz",
|
||||
"options": [
|
||||
{"digit": "1", "target_node_id": "sales_kz"},
|
||||
{"digit": "2", "target_node_id": "support_kz"},
|
||||
],
|
||||
},
|
||||
{
|
||||
"node_id": "sales_ru",
|
||||
"prompt_text": "Переводим в отдел продаж.",
|
||||
"prompt_audio_key": "ivr/demo-sales-ru",
|
||||
"node_id": "voice_start_ru",
|
||||
"prompt_text": "Передаем звонок в русскоязычный стартовый voice-сценарий.",
|
||||
"is_terminal": True,
|
||||
"outcome_code": "sales_route_ru",
|
||||
"resolved_queue_id": sales_queue_id,
|
||||
"resolved_queue_code": "ivr_sales_ai_ru",
|
||||
"outcome_code": "voice_start_ru",
|
||||
"resolved_queue_id": voice_start_ru_queue_id,
|
||||
"resolved_queue_code": "voice_start_ru",
|
||||
"options": [],
|
||||
},
|
||||
{
|
||||
"node_id": "support_ru",
|
||||
"prompt_text": "Переводим в службу поддержки.",
|
||||
"prompt_audio_key": "ivr/demo-support-ru",
|
||||
"node_id": "voice_start_kz",
|
||||
"prompt_text": "Қоңырауды қазақ тіліндегі бастапқы voice-сценарийге өткізіп жатырмыз.",
|
||||
"is_terminal": True,
|
||||
"outcome_code": "support_route_ru",
|
||||
"resolved_queue_id": support_queue_id,
|
||||
"resolved_queue_code": "ivr_support_ai_ru",
|
||||
"options": [],
|
||||
},
|
||||
{
|
||||
"node_id": "sales_kz",
|
||||
"prompt_text": "Сату бөліміне қосып жатырмыз.",
|
||||
"prompt_audio_key": "ivr/demo-sales-kz",
|
||||
"is_terminal": True,
|
||||
"outcome_code": "sales_route_kz",
|
||||
"resolved_queue_id": sales_queue_id,
|
||||
"resolved_queue_code": "ivr_sales_ai_kz",
|
||||
"options": [],
|
||||
},
|
||||
{
|
||||
"node_id": "support_kz",
|
||||
"prompt_text": "Қолдау қызметіне қосып жатырмыз.",
|
||||
"prompt_audio_key": "ivr/demo-support-kz",
|
||||
"is_terminal": True,
|
||||
"outcome_code": "support_route_kz",
|
||||
"resolved_queue_id": support_queue_id,
|
||||
"resolved_queue_code": "ivr_support_ai_kz",
|
||||
"outcome_code": "voice_start_kz",
|
||||
"resolved_queue_id": voice_start_kz_queue_id,
|
||||
"resolved_queue_code": "voice_start_kz",
|
||||
"options": [],
|
||||
},
|
||||
]
|
||||
@@ -216,28 +175,28 @@ def seed_demo(base_url: str) -> dict[str, Any]:
|
||||
"/proxy/routing/queues",
|
||||
headers=admin,
|
||||
json={
|
||||
"name": "IVR Sales Queue",
|
||||
"description": "Prepared automatically for IVR routing demo",
|
||||
"name": "Voice Start KZ Queue",
|
||||
"description": "Prepared automatically for voice-start routing demo",
|
||||
"rules": [
|
||||
{"channel": "voice", "priority": 3, "strategy": "round_robin", "sla_seconds": 25},
|
||||
],
|
||||
},
|
||||
)
|
||||
_raise_for_status(sales_queue, "sales queue create")
|
||||
_raise_for_status(sales_queue, "voice_start_kz queue create")
|
||||
sales_queue_id = sales_queue.json()["queue_id"]
|
||||
|
||||
support_queue = client.post(
|
||||
"/proxy/routing/queues",
|
||||
headers=admin,
|
||||
json={
|
||||
"name": "IVR Support Queue",
|
||||
"description": "Prepared automatically for IVR routing demo",
|
||||
"name": "Voice Start RU Queue",
|
||||
"description": "Prepared automatically for voice-start routing demo",
|
||||
"rules": [
|
||||
{"channel": "voice", "priority": 3, "strategy": "round_robin", "sla_seconds": 35},
|
||||
],
|
||||
},
|
||||
)
|
||||
_raise_for_status(support_queue, "support queue create")
|
||||
_raise_for_status(support_queue, "voice_start_ru queue create")
|
||||
support_queue_id = support_queue.json()["queue_id"]
|
||||
|
||||
customer = client.post(
|
||||
@@ -351,8 +310,8 @@ def seed_demo(base_url: str) -> dict[str, Any]:
|
||||
"entry_node_id": "root",
|
||||
"flow_json": _demo_ivr_flow_document(
|
||||
plan,
|
||||
sales_queue_id=sales_queue_id,
|
||||
support_queue_id=support_queue_id,
|
||||
voice_start_kz_queue_id=sales_queue_id,
|
||||
voice_start_ru_queue_id=support_queue_id,
|
||||
),
|
||||
"is_active": True,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user