question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

WorkflowStep can not save

See original GitHub issue

I follow this document and tried adding WorkflowStep to my Slack bot, WorkflowStep.edit works fine, but WorkflowStep.save fails anyway, I can’t find the reason, can you help me?

Reproducible in:

val step = WorkflowStep.builder()
      .callbackId("copy_review")
      .edit { req, context ->
        context.configure(withBlocks {
          section {
            blockId("intro-section")
            plainText("text")
          }
          input {
            blockId("task_name_input")
            label("Task Name")
            element {
              plainTextInput {
                actionId("task_name")
              }
            }
          }
        })
        context.ack()
      }
      .save { req, context ->
        val inputs = buildMap {
          put("taskName", WorkflowSteps.stepInput {
            it.value(req.payload.view.state.findElement("task_name").value)
          })
        }
        val outputs = buildList {
          add(WorkflowSteps.stepOutput {
            it.name("taskName").type("text").label("Task Name")
          })
        }
        context.update(inputs, outputs)
        context.ack()
      }
      .execute { req, context ->
        context.ack()
      }
      .build()
    app.step(step)

The Slack SDK version

+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt:1.22.0 (n)
+--- com.slack.api:bolt-ktor:1.22.0 (n)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (n)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0 (n)
+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0
|    |    +--- com.slack.api:slack-api-model:1.22.0 (*)
|    \--- com.slack.api:slack-app-backend:1.22.0
|         +--- com.slack.api:slack-api-model:1.22.0 (*)
|         +--- com.slack.api:slack-api-client:1.22.0 (*)
+--- com.slack.api:bolt-ktor:1.22.0
|    +--- com.slack.api:slack-api-client:1.22.0 (*)
|    +--- com.slack.api:bolt:1.22.0 (*)
+--- com.slack.api:slack-api-model-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model:1.22.0 (*)
+--- com.slack.api:slack-api-client-kotlin-extension:1.22.0
|    +--- com.slack.api:slack-api-model-kotlin-extension:1.22.0 (*)

Java Runtime version

java version "11.0.12" 2021-07-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.12+8-LTS-237)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.12+8-LTS-237, mixed mode)

OS info

ProductName:    macOS
ProductVersion: 12.2.1
BuildVersion:   21D62
Darwin Kernel Version 21.3.0: Wed Jan  5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_X86_64
image

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:11 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
seratchcommented, May 4, 2022

@Arxing Thanks for your response. hmm, I don’t have anything further to guess at this point.

I would suggest trying my example and seeing if there is any difference. Here is my App Manifest:

display_information:
  name: workflow-step-socket-mode-app
features:
  bot_user:
    display_name: workflow-step-socket-mode-app
    always_online: false
  workflow_steps:
    - name: socket-mode-step
      callback_id: socket-mode-step
oauth_config:
  scopes:
    bot:
      - workflow.steps:execute
settings:
  event_subscriptions:
    bot_events:
      - workflow_step_execute
  interactivity:
    is_enabled: true
  org_deploy_enabled: false
  socket_mode_enabled: true
  token_rotation_enabled: false

You can create a new app and then generate a new App-Level token with connections:write scope. You can install the app into your Slack workspace. Once you set SLACK_BOT_TOKEN and SLACK_APP_TOKEN env variables, the app should work for you.

If your issue can arise only with a specific app and/or a workspace, please contact our customer support agents for further help by checking the Slack server-side activity data. You can submit inquiries either by /feedback command in your Slack workspace or at https://my.slack.com/help/requests/new .

0reactions
seratchcommented, Jun 13, 2022

@Arxing You might miss the logs but I am sure that url_verification request was sent separately. Let me know if you have anything else that you need our help. Otherwise, we will close this issue in a few business days.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Is there a way to save the current record as a workflow step?
I have a Dynamics 365 Form with a related Business Process with 3 steps. The steps cannot change for business reasons nor can...
Read more >
AWS::Transfer::Workflow WorkflowStep - AWS CloudFormation
An S3 location for the destination of the file copy. A flag that indicates whether or not to overwrite an existing file of...
Read more >
JR49723: SAVING AN ITEM IN A WORKFLOW STEP ... - IBM
When trying to create an item in a workflow step, that has the same primary key value as an existing item in the...
Read more >
Workflow Builder: Steps from apps - Slack API
Click Save and you've created your app's first workflow step! Your app's step will now be available to Workflow Builder users in workspaces...
Read more >
Fixing a workflow step...can't add transitions
I chose to save a backup and hit publish. The following error then came up. publish error.png d. I don't know what that...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found