docs/reference/request/payload_utils.html
def is_action(body: Dict[str, Any]) ‑> bool#Expand source code
def is_action(body: Dict[str, Any]) -> bool:
return (
is_attachment_action(body)
or is_block_actions(body)
or is_dialog_submission(body)
or is_dialog_cancellation(body)
or is_workflow_step_edit(body)
)
def is_assistant_event(body: Dict[str, Any]) ‑> bool#Expand source code
def is_assistant_event(body: Dict[str, Any]) -> bool:
return is_event(body) and (
is_assistant_thread_started_event(body)
or is_assistant_thread_context_changed_event(body)
or is_user_message_event_in_assistant_thread(body)
or is_bot_message_event_in_assistant_thread(body)
)
def is_assistant_thread_context_changed_event(body: Dict[str, Any]) ‑> bool#Expand source code
def is_assistant_thread_context_changed_event(body: Dict[str, Any]) -> bool:
if is_event(body):
return body["event"]["type"] == "assistant_thread_context_changed"
return False
def is_assistant_thread_started_event(body: Dict[str, Any]) ‑> bool#Expand source code
def is_assistant_thread_started_event(body: Dict[str, Any]) -> bool:
if is_event(body):
return body["event"]["type"] == "assistant_thread_started"
return False
def is_attachment_action(body: Dict[str, Any]) ‑> bool#Expand source code
def is_attachment_action(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "interactive_message") and "callback_id" in body
def is_block_actions(body: Dict[str, Any]) ‑> bool#Expand source code
def is_block_actions(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "block_actions") and "actions" in body
def is_block_suggestion(body: Dict[str, Any]) ‑> bool#Expand source code
def is_block_suggestion(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "block_suggestion") and "action_id" in body
def is_bot_message_event_in_assistant_thread(body: Dict[str, Any]) ‑> bool#Expand source code
def is_bot_message_event_in_assistant_thread(body: Dict[str, Any]) -> bool:
if is_event(body):
return (
is_message_event_in_assistant_thread(body)
and body["event"].get("subtype") is None
and body["event"].get("thread_ts") is not None
and body["event"].get("bot_id") is not None
)
return False
def is_dialog_cancellation(body: Dict[str, Any]) ‑> bool#Expand source code
def is_dialog_cancellation(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "dialog_cancellation") and "callback_id" in body
def is_dialog_submission(body: Dict[str, Any]) ‑> bool#Expand source code
def is_dialog_submission(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "dialog_submission") and "callback_id" in body
def is_dialog_suggestion(body: Dict[str, Any]) ‑> bool#Expand source code
def is_dialog_suggestion(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "dialog_suggestion") and "callback_id" in body
def is_event(body: Dict[str, Any]) ‑> bool#Expand source code
def is_event(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "event_callback") and "event" in body and "type" in body["event"]
def is_function(body: Dict[str, Any]) ‑> bool#Expand source code
def is_function(body: Dict[str, Any]) -> bool:
return is_event(body) and "function_executed" == body["event"]["type"] and "function_execution_id" in body["event"]
def is_global_shortcut(body: Dict[str, Any]) ‑> bool#Expand source code
def is_global_shortcut(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "shortcut") and "callback_id" in body
def is_message_event_in_assistant_thread(body: Dict[str, Any]) ‑> bool#Expand source code
def is_message_event_in_assistant_thread(body: Dict[str, Any]) -> bool:
if is_event(body):
return body["event"]["type"] == "message" and body["event"].get("channel_type") == "im"
return False
def is_message_shortcut(body: Dict[str, Any]) ‑> bool#Expand source code
def is_message_shortcut(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "message_action") and "callback_id" in body
def is_options(body: Dict[str, Any]) ‑> bool#Expand source code
def is_options(body: Dict[str, Any]) -> bool:
return is_block_suggestion(body) or is_dialog_suggestion(body)
def is_other_message_sub_event_in_assistant_thread(body: Dict[str, Any]) ‑> bool#Expand source code
def is_other_message_sub_event_in_assistant_thread(body: Dict[str, Any]) -> bool:
# message_changed, message_deleted etc.
if is_event(body):
return (
is_message_event_in_assistant_thread(body)
and not is_user_message_event_in_assistant_thread(body)
and (
_is_other_message_sub_event(body["event"].get("message"))
or _is_other_message_sub_event(body["event"].get("previous_message"))
)
)
return False
def is_shortcut(body: Dict[str, Any]) ‑> bool#Expand source code
def is_shortcut(body: Dict[str, Any]) -> bool:
return is_global_shortcut(body) or is_message_shortcut(body)
def is_slash_command(body: Dict[str, Any]) ‑> bool#Expand source code
def is_slash_command(body: Dict[str, Any]) -> bool:
return body is not None and "command" in body
def is_user_message_event_in_assistant_thread(body: Dict[str, Any]) ‑> bool#Expand source code
def is_user_message_event_in_assistant_thread(body: Dict[str, Any]) -> bool:
if is_event(body):
return (
is_message_event_in_assistant_thread(body)
and body["event"].get("subtype") in (None, "file_share")
and body["event"].get("thread_ts") is not None
and body["event"].get("bot_id") is None
)
return False
def is_view(body: Dict[str, Any]) ‑> bool#Expand source code
def is_view(body: Dict[str, Any]) -> bool:
return is_view_submission(body) or is_view_closed(body)
def is_view_closed(body: Dict[str, Any]) ‑> bool#Expand source code
def is_view_closed(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "view_closed") and "view" in body and "callback_id" in body["view"]
def is_view_submission(body: Dict[str, Any]) ‑> bool#Expand source code
def is_view_submission(body: Dict[str, Any]) -> bool:
return (
body is not None and _is_expected_type(body, "view_submission") and "view" in body and "callback_id" in body["view"]
)
def is_workflow_step_edit(body: Dict[str, Any]) ‑> bool#Expand source code
def is_workflow_step_edit(body: Dict[str, Any]) -> bool:
return body is not None and _is_expected_type(body, "workflow_step_edit") and "callback_id" in body
def is_workflow_step_execute(body: Dict[str, Any]) ‑> bool#Expand source code
def is_workflow_step_execute(body: Dict[str, Any]) -> bool:
return is_event(body) and body["event"]["type"] == "workflow_step_execute" and "workflow_step" in body["event"]
def is_workflow_step_save(body: Dict[str, Any]) ‑> bool#Expand source code
def is_workflow_step_save(body: Dict[str, Any]) -> bool:
return is_view_submission(body) and body["view"]["type"] == "workflow_step"
def to_action(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_action(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
if is_action(body):
if is_block_actions(body) or is_attachment_action(body):
return body["actions"][0]
else:
return body
return None
def to_command(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_command(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
return body if is_slash_command(body) else None
def to_event(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_event(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
return body["event"] if is_event(body) else None
def to_message(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_message(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
if is_event(body) and body["event"]["type"] == "message":
return to_event(body)
return None
def to_options(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_options(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
if is_options(body):
return body
return None
def to_shortcut(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_shortcut(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
if is_shortcut(body):
return body
return None
def to_step(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_step(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
# edit
if is_workflow_step_edit(body):
return body["workflow_step"]
# save
if is_workflow_step_save(body):
return body["workflow_step"]
# execute
if is_workflow_step_execute(body):
return body["event"]["workflow_step"]
return None
def to_view(body: Dict[str, Any]) ‑> Dict[str, Any] | None#Expand source code
def to_view(body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
if is_view(body):
return body["view"]
return None