def deploy_to(self, assistant: AssistantV1, name: str): """ Deploys written configuration via given assistant connector. If a workspace with same name exists already, it will be overwritten. """ intents = [] for intent_name, examples in self._wa_intent_definitions.items(): intent = CreateIntent( intent_name, examples=[CreateExample(ex) for ex in examples]) intents.append(intent) intents.extend(self._wa_intents) intents = self._make_unique_intents(intents) entities = [] for sys_entity in self._declared_sys_entities: entities.append(CreateEntity(sys_entity)) entities.extend(self._wa_entities) entities = self._make_unique_entities(entities) wa_nodes = self._create_wa_nodes() workspace_id = None for workspace in assistant.list_workspaces( page_limit=MAX_WS_PAGINATION).result["workspaces"]: if workspace["name"] == name: workspace_id = workspace["workspace_id"] break if workspace_id is None: result = assistant.create_workspace(name=name, intents=intents, entities=entities, dialog_nodes=wa_nodes) else: result = assistant.update_workspace(name=name, intents=intents, entities=entities, dialog_nodes=wa_nodes, workspace_id=workspace_id) unreachable_nodes = self._find_unreachable_nodes() print("DEPLOY STATISTICS") print(f"\t intents: {len(intents)}") print(f"\t entities: {len(entities)}") print(f"\t wa nodes: {len(wa_nodes)}") print(f"\t planning nodes: {len(self._plan_nodes)}") print(f"\t unreachable nodes: {len(unreachable_nodes)}") print() print(f"Status: {result.status_code}") print(f"WA API result: {result.result}")
def __init__(self, kernel: AssistantV1): self.kernel = kernel self.current_workspace_id = kernel.list_workspaces( )['workspaces'][1]['workspace_id'] self.response = None