API 开发人员可以通过动作菜单项 (AMI) 按实体自定义上下文菜单项。例如,在“版本”(Versions)页面中,可以选择多个版本,单击鼠标右键,然后选择“Build a PDF Report”。
动作菜单项字段
动作菜单项类型
可以创建两种类型的菜单项:
HTTP URL 示例
例如,您可以创建名为“Build PDF Report”的自定义菜单项。这将允许用户转到任何“版本”(Versions)页面,选择一个或多个版本,单击鼠标右键,然后从 Shotgun 菜单中选择“Build PDF Report”。执行此操作将启动(您必须创建的)脚本,以获取一个格式完善的报告并发送回其浏览器。工作方式如下:
通过 UI 创建菜单项
在设置菜单中,选择“动作菜单项”(Action Menu Items)以打开 AMI 管理页面。要创建新 AMI,请单击 。填写“标题”(Title)和任何其他必填字段,然后单击“创建动作菜单项”(Create Action Menu Item)。
用户单击 AMI 会发生什么情况?
Shotgun 将在新窗口或模态对话框(如果选择了该选项)中分派 POST 请求,然后将相关数据从当前页面(作为 POST 请求的一部分)发送到接收 URL。下面是一个工作流示例。
- 用户导航到“版本”(Versions)页面
- 用户选择一个或多个版本
- 用户打开上下文菜单(右键单击或单击工具栏中的配置齿轮菜单)
- 用户单击“Build PDF Report”
- Shotgun 在新窗口中将 POST 请求分派到 AMI 的 URL(如果 Shotgun 服务器使用的是 HTTPS,URL 使用的是 HTTP,将会显示浏览器警告)
- 您的脚本(位于指定的 URL)处理 POST 数据,并生成一个 PDF 文档
- 向用户发送回一个格式完善的 PDF 报告以进行查看或下载
自定义协议处理程序示例
更高级的自定义 AMI 执行涉及设置自定义协议处理程序(例如 shotgun://process_version)。这样,您可以通过本地计算机上的脚本将 Shotgun 与应用程序(如 Maya、RV 或 Cinesync)桥接起来。如果您指定非 HTTP(S) 协议,则将通过 GET 而不是 POST 将数据发送到您的 URL。您可能希望使用此项来启动内部工具以分派不同的请求。
有关自定义协议的详细信息,请参见使用自定义浏览器协议启动应用程序。
注意:我们还通过 Shotgun 集成内置了与 Maya 和其他软件包的集成。
轻量有效负载
使用自定义协议时,查询信息作为 GET 请求发送。某些操作系统和浏览器组合对允许的 GET 请求的大小限制有所不同。我们建议在自定义协议 AMI 上选中轻量有效负载复选框。在选中轻量有效负载复选框的情况下,您的脚本将收到一个事件日志条目 ID,它可以提取该 ID 以通过读取记录的 meta
字段的 ami_payload
键来从其获取完整的有效负载。
示例
下面是一些相关的示例脚本,可帮助您快速入门:
有效负载内容
用户数据
- user_id:当前登录用户的用户 ID(例如 34)
- user_login:当前登录用户的登录名(例如 joe)
实体数据
- entity_type:当前页面或视图的实体类型(例如版本)
- selected_ids:选定实体 ID 的逗号分隔列表(例如 931, 900)
- ids:当前页面查询所返回实体的所有 ID 的逗号分隔列表。这会返回所有 ID,包括那些由于分页而不可见的 ID(例如 931, 900, 904, 907)。如果在 AMI 上选中了“需要选择”(Selection required),此值将与 selected_ids 相同。
页面数据
- title:页面标题(例如“所有版本”(All Versions))
- page_id:单击其中的动作菜单项的页面的 ID(例如 1353)
- server_hostname:在其中触发 AMI 的系统的主机名。如果您有多个调用相同 AMI 的服务器(例如开发服务器和生产服务器),可能很有用
- referrer_path:在其中调用 AMI 的 URL 的规范路径
-
session_uuid:在其中调用此 AMI 的窗口的唯一标识符。此项可以与“轮询数据更新”(Poll for Data Updates)复选框以及 Python API 的
set_session_uuid
方法一起使用,以将信息发送回在其中调用 AMI 的页面。注意:此功能的更新轮询成指数级衰减并最终停止,因此如果您的 AMI 在轮询停止前未更新,您可能无法在源页面中看到任何更新 - cols:页面上所有可见列的系统字段名称的逗号分隔列表(例如 code, sg_status_list, description)
- column_display_names:页面上所有可见列的显示名称的逗号分隔列表(例如:版本(Version), 状态(Status), 说明(Description))
- view:调用 AMI 时选择的视图。可以通过设计页面模式为任何给定页面创建多个视图
- sort_column:作为排序依据的列的系统名称(例如 code)。如果有多个排序键,仅发送第一个,请参见 sort_columns
- sort_direction:(例如 asc 或 desc)如果有多个排序方向,仅发送第一个,请参见 sort_directions
- sort_columns:作为页面或视图排序依据的列的系统名称的逗号分隔列表(例如 code, created_at)。仅当有多个排序键时发送
- sort_directions:作为页面或视图排序依据的列的系统名称的逗号分隔列表(例如 code, created_at)。仅当有多个排序键时发送
- grouping_column:作为分组依据的列的系统名称(例如 code)。如果有多个分组列,仅发送第一个,请参见 grouping_columns
-
grouping_method:分组依据的方法(例如,对实体字段按
entitytype
分组,对日期字段按month
分组)。如果有多个分组方法,仅发送第一个,请参见 grouping_columns - grouping_direction:分组方向(例如 asc 或 desc)如果有多个分组方向,仅发送第一个,请参见 grouping_directions
- grouping_columns:作为数据分组依据的列的系统名称的逗号分隔列表(例如 code, created_at)。仅当有多个分组列时发送
- grouping_methods:分组方法的逗号分隔列表(例如 entity_type, month)。仅当有多个分组列时发送
- grouping_directions:分组方向的逗号分隔列表(例如 asc, desc)。仅当有多个分组列时发送
项目数据(仅当当前页面上的所有实体共用同一项目时发送)
- project_name:项目的名称(例如 Gunslinger)
- project_id:项目的 ID(例如 81)
0 评论