Change architecture of Ruby app to be more object oriented, readable
Your code is not very clear indeed, as you said the name of the classes don't reflect what they do.

GetUserId sends the message to the user, I can't infer that just by the name of the class.

You know the steps of your program, which is good, but you haven't separated them in your program, so, the first step would be to create each of these steps in an independent way and then create a class that coordinates what has to be called. I think the handle method can do this coordination, it doesn't need to be as clean as you did.

Also, try to create classes that have states and operations, this way it is more object-oriented IMO. In terms of DDD, you are creating Service classes, you can try to create Entity classes.

For example (just a draft):

slack_api = SlackAPI.new

user = ::Slack::User.new(reporter_email, reporter_name, ticket_number, slack_api.user_id)
message = ::Slack::Message.new(user)

slack_api.send_message!(message)


(I've introduced here a class that will handle the communication with the Slack API.)

User:

class Slack::User
  def initialize(email, name, ticket_number, id)
    @id = id
    @email = email
    @name = name
    @ticket_number = ticket_number
  end
end


Message:

class Slack::Message
  def initialize(user_id, name, ticket_number)
    @user_id = user_id
    @name = name
    @ticket_number = ticket_number
  end
end