X Tutup
# ------------------------------------------------ # instead of slack_bolt in requirements.txt import sys sys.path.insert(1, "..") # ------------------------------------------------ import logging logging.basicConfig(level=logging.DEBUG) from slack_bolt import App, Ack app = App() @app.middleware # or app.use(log_request) def log_request(logger, body, next): logger.debug(body) return next() @app.command("/hello-bolt-python") def test_command(body, client, ack, logger): logger.info(body) ack("I got it!") res = client.dialog_open( trigger_id=body["trigger_id"], dialog={ "callback_id": "dialog-callback-id", "title": "Request a Ride", "submit_label": "Request", "notify_on_cancel": True, "state": "Limo", "elements": [ {"type": "text", "label": "Pickup Location", "name": "loc_origin"}, { "type": "text", "label": "Dropoff Location", "name": "loc_destination", }, { "label": "Type", "name": "types", "type": "select", "data_source": "external", }, ], }, ) logger.info(res) @app.action("dialog-callback-id") def dialog_submission_or_cancellation(ack: Ack, body: dict): if body["type"] == "dialog_cancellation": # This can be sent only when notify_on_cancel is True ack() return errors = [] submission = body["submission"] if len(submission["loc_origin"]) <= 3: errors = [ { "name": "loc_origin", "error": "Pickup Location must be longer than 3 characters", } ] if len(errors) > 0: # or ack({"errors": errors}) ack(errors=errors) else: ack() # @app.action({"type": "dialog_submission", "callback_id": "dialog-callback-id"}) # def dialog_submission_or_cancellation(ack: Ack, body: dict): # errors = [] # submission = body["submission"] # if len(submission["loc_origin"]) <= 3: # errors = [ # { # "name": "loc_origin", # "error": "Pickup Location must be longer than 3 characters" # } # ] # if len(errors) > 0: # # or ack({"errors": errors}) # ack(errors=errors) # else: # ack() # # @app.action({"type": "dialog_cancellation", "callback_id": "dialog-callback-id"}) # def dialog_cancellation(ack): # ack() # @app.options({"type": "dialog_suggestion", "callback_id": "dialog-callback-id"}) @app.options("dialog-callback-id") def dialog_suggestion(ack): ack( { "options": [ { "label": "[UXD-342] The button color should be artichoke green, not jalapeƱo", "value": "UXD-342", }, {"label": "[FE-459] Remove the marquee tag", "value": "FE-459"}, { "label": "[FE-238] Too many shades of gray in master CSS", "value": "FE-238", }, ] } ) if __name__ == "__main__": app.start(3000) # pip install slack_bolt # export SLACK_SIGNING_SECRET=*** # export SLACK_BOT_TOKEN=xoxb-*** # python dialogs_app.py
X Tutup