示例#1
0
    def step(
        self,
        callback_id: Union[str, Pattern, AsyncWorkflowStep,
                           AsyncWorkflowStepBuilder],
        edit: Optional[Union[Callable[..., Optional[BoltResponse]],
                             AsyncListener, Sequence[Callable]]] = None,
        save: Optional[Union[Callable[..., Optional[BoltResponse]],
                             AsyncListener, Sequence[Callable]]] = None,
        execute: Optional[Union[Callable[..., Optional[BoltResponse]],
                                AsyncListener, Sequence[Callable]]] = None,
    ):
        """Registers a new Workflow Step listener
        Unlike others, this method doesn't behave as a decorator. If you want to register a workflow step
        by a decorator, use AsyncWorkflowStepBuilder's methods.
        """
        step = callback_id
        if isinstance(callback_id, (str, Pattern)):
            step = AsyncWorkflowStep(
                callback_id=callback_id,
                edit=edit,
                save=save,
                execute=execute,
            )
        elif isinstance(step, AsyncWorkflowStepBuilder):
            step = step.build()
        elif not isinstance(step, AsyncWorkflowStep):
            raise BoltError(f"Invalid step object ({type(step)})")

        self.use(AsyncWorkflowStepMiddleware(step,
                                             self._async_listener_runner))
    def step(
        self,
        callback_id: Union[str, Pattern, AsyncWorkflowStep],
        edit: Optional[
            Union[
                Callable[..., Optional[BoltResponse]], AsyncListener, Sequence[Callable]
            ]
        ] = None,
        save: Optional[
            Union[
                Callable[..., Optional[BoltResponse]], AsyncListener, Sequence[Callable]
            ]
        ] = None,
        execute: Optional[
            Union[
                Callable[..., Optional[BoltResponse]], AsyncListener, Sequence[Callable]
            ]
        ] = None,
    ):
        """Registers a new Workflow Step listener"""
        step = callback_id
        if isinstance(callback_id, (str, Pattern)):
            step = AsyncWorkflowStep(
                callback_id=callback_id,
                edit=edit,
                save=save,
                execute=execute,
            )
        elif not isinstance(step, AsyncWorkflowStep):
            raise BoltError("Invalid step object")

        self.use(AsyncWorkflowStepMiddleware(step, self._async_listener_runner))
示例#3
0
    AsyncUpdate,
    AsyncComplete,
    AsyncFail,
    AsyncWorkflowStep,
)

logging.basicConfig(level=logging.DEBUG)

# export SLACK_SIGNING_SECRET=***
# export SLACK_BOT_TOKEN=xoxb-***
app = AsyncApp()


# https://api.slack.com/tutorials/workflow-builder-steps

copy_review_step = AsyncWorkflowStep.builder("copy_review")


@copy_review_step.edit
async def edit(ack: AsyncAck, step: dict, configure: AsyncConfigure):
    await ack()
    await configure(
        blocks=[
            {
                "type": "section",
                "block_id": "intro-section",
                "text": {
                    "type": "plain_text",
                    "text": "Create a task in one of the listed projects. The link to the task and other details will be available as variable data in later steps.",
                },
            },