Module slack_bolt.workflows.step.utilities.async_configure

Expand source code
from typing import Optional, Union, Sequence

from slack_sdk.web.async_client import AsyncWebClient
from slack_sdk.models.blocks import Block


class AsyncConfigure:
    """`configure()` utility to send the modal view in Workflow Builder.

        async def edit(ack, step, configure):
            await ack()

            blocks = [
                {
                    "type": "input",
                    "block_id": "task_name_input",
                    "element": {
                        "type": "plain_text_input",
                        "action_id": "name",
                        "placeholder": {"type": "plain_text", "text": "Add a task name"},
                    },
                    "label": {"type": "plain_text", "text": "Task name"},
                },
            ]
            await configure(blocks=blocks)

        ws = AsyncWorkflowStep(
            callback_id="add_task",
            edit=edit,
            save=save,
            execute=execute,
        )
        app.step(ws)

    Refer to https://api.slack.com/workflows/steps for details.
    """

    def __init__(self, *, callback_id: str, client: AsyncWebClient, body: dict):
        self.callback_id = callback_id
        self.client = client
        self.body = body

    async def __call__(
        self,
        *,
        blocks: Optional[Sequence[Union[dict, Block]]] = None,
    ) -> None:
        await self.client.views_open(
            trigger_id=self.body["trigger_id"],
            view={
                "type": "workflow_step",
                "callback_id": self.callback_id,
                "blocks": blocks,
            },
        )

Classes

class AsyncConfigure (*, callback_id: str, client: slack_sdk.web.async_client.AsyncWebClient, body: dict)

configure() utility to send the modal view in Workflow Builder.

async def edit(ack, step, configure):
    await ack()

    blocks = [
        {
            "type": "input",
            "block_id": "task_name_input",
            "element": {
                "type": "plain_text_input",
                "action_id": "name",
                "placeholder": {"type": "plain_text", "text": "Add a task name"},
            },
            "label": {"type": "plain_text", "text": "Task name"},
        },
    ]
    await configure(blocks=blocks)

ws = AsyncWorkflowStep(
    callback_id="add_task",
    edit=edit,
    save=save,
    execute=execute,
)
app.step(ws)

Refer to https://api.slack.com/workflows/steps for details.

Expand source code
class AsyncConfigure:
    """`configure()` utility to send the modal view in Workflow Builder.

        async def edit(ack, step, configure):
            await ack()

            blocks = [
                {
                    "type": "input",
                    "block_id": "task_name_input",
                    "element": {
                        "type": "plain_text_input",
                        "action_id": "name",
                        "placeholder": {"type": "plain_text", "text": "Add a task name"},
                    },
                    "label": {"type": "plain_text", "text": "Task name"},
                },
            ]
            await configure(blocks=blocks)

        ws = AsyncWorkflowStep(
            callback_id="add_task",
            edit=edit,
            save=save,
            execute=execute,
        )
        app.step(ws)

    Refer to https://api.slack.com/workflows/steps for details.
    """

    def __init__(self, *, callback_id: str, client: AsyncWebClient, body: dict):
        self.callback_id = callback_id
        self.client = client
        self.body = body

    async def __call__(
        self,
        *,
        blocks: Optional[Sequence[Union[dict, Block]]] = None,
    ) -> None:
        await self.client.views_open(
            trigger_id=self.body["trigger_id"],
            view={
                "type": "workflow_step",
                "callback_id": self.callback_id,
                "blocks": blocks,
            },
        )