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}")
示例#2
0
 def __init__(self, kernel: AssistantV1):
     self.kernel = kernel
     self.current_workspace_id = kernel.list_workspaces(
     )['workspaces'][1]['workspace_id']
     self.response = None