+def turbot_interactive_or_slash_command(event, context):
+ """Handler for Slack interactive things (buttons, shortcuts, etc.)
+ as well as slash commands.
+
+ This function simply makes a quiuck determination of what we're looking
+ at and then defers to either turbot_interactive or turbot_slash_command."""
+
+ # Both interactives and slash commands have a urlencoded body
+ body = parse_qs(event['body'])
+
+ # The difference is that an interactive thingy has a 'payload'
+ # while a slash command has a 'command'
+ if 'payload' in body:
+ return turbot_interactive(json.loads(body['payload'][0]))
+ if 'command' in body:
+ return turbot_slash_command(body)
+ return error("Unrecognized event (neither interactive nor slash command)")
+
+def turbot_interactive(payload):
+ """Handler for Slack interactive requests
+
+ These are the things that come from a user interacting with a button
+ a shortcut or some other interactive element that our app has made
+ available to the user."""
+
+ print("In turbot_interactive, payload is: {}".format(str(payload)))
+
+def turbot_slash_command(body):