def get_raw_agent_fulfillment_df()

in src/dfcx_scrapi/tools/search_util.py [0:0]


    def get_raw_agent_fulfillment_df(self, agent_id: str):
        """Gets all fulfillment structures for an agent.

        Args:
          agent_id: ID of the Dialogflow CX agent.

        Returns:
          dataframe with columns:
            flow_name,
            page_name,
            parameter_name,
            event,
            route_group_name,
            intent,
            condition,
            fulfillment
        """
        flow_df = self.get_flow_df(agent_id)
        page_df = self.get_page_df(flow_df)

        route_group_df = self.get_route_group_df(
            page_df, list(flow_df.flow_id))
        route_df = SearchUtil.get_route_df(page_df, route_group_df)
        intent_map = self.intents.get_intents_map(agent_id)
        route_df.intent = route_df.intent.map(intent_map)

        param_df = SearchUtil.get_param_df(page_df)
        param_initial_prompt_fulfillment_df = param_df[
            [
                "flow_name",
                "page_name",
                "parameter_name",
                "initial_prompt_fulfillment",
            ]
        ]
        param_reprompt_event_handler_df = param_df[
            [
                "flow_name",
                "page_name",
                "parameter_name",
                "reprompt_event_handlers",
            ]
        ]
        event_handler_df = self.get_event_handler_df(
            page_df, param_reprompt_event_handler_df
        )

        fulfillment_df = pd.concat(
            [
                page_df.drop(
                    columns=[
                        "parameters",
                        "route_groups",
                        "routes",
                        "event_handlers",
                    ]
                ).rename(columns={"entry_fulfillment": "fulfillment"}),
                event_handler_df.rename(
                    columns={"trigger_fulfillment": "fulfillment"}
                ),
                route_df.rename(
                    columns={"trigger_fulfillment": "fulfillment"}),
                param_initial_prompt_fulfillment_df.rename(
                    columns={"initial_prompt_fulfillment": "fulfillment"}
                ),
            ],
            ignore_index=True,
        ).dropna(subset=["fulfillment"], axis="index")
        return fulfillment_df