- 概述
- JavaScript functions
- Python 函数
- 部署并运行
使用调用活动从 Python 函数调用连接器操作,并使用 UiPath CLI 解析 Studio 活动名称后面的对象路径。
Studio 活动名称(如按 ID 获取电子邮件)是连接器对象和操作上的标签。Python 没有按活动名称进行的等效查找,因此函数直接通过 connections.invoke_activity 调用基础操作,并使用 ActivityMetadata 描述请求。
先决条件
- 连接器的 Integration Service 连接,声明为绑定。请参阅声明资源绑定。
- 经过身份验证的 UiPath CLI (
uip) 会话。
sdk.connections.retrieve() 仅返回连接元数据,例如 ID、基本 URI 和文件夹。它不会调用连接器。invoke_activity 会在内部调用 retrieve,因此两者都不需要。
解析活动的对象路径
-
列出连接器的活动以及每个活动映射到的对象:
uip is activities list uipath-microsoft-outlook365 --output tableuip is activities list uipath-microsoft-outlook365 --output table -
描述对象以获取其每项操作的具体路径:
uip is resources describe uipath-microsoft-outlook365 Message \ --connection-id <connection-id>uip is resources describe uipath-microsoft-outlook365 Message \ --connection-id <connection-id>
结果
这两个命令将活动名称解析为路径。对于按 ID 获取电子邮件:
| 活动名称 | 对象 | 操作 | 路径 |
|---|---|---|---|
| 按 ID 获取电子邮件 | Message | GETBYID | /hubs/productivity/messages/{id} |
| 获取电子邮件列表 | Message | GET | /messages |
两个命令相同,适用于任何连接器,因此,这是将活动名称转换为 ActivityMetadata 定义的一般方法。
GETBYID 是连接器的操作类型,而不是 HTTP 动词。将 method_name="GET" 传递给 ActivityMetadata。
从您的函数中调用运算
-
导入
ActivityMetadata和ActivityParameterLocationInfo:from uipath.platform import UiPath from uipath.platform.connections.connections import ( ActivityMetadata, ActivityParameterLocationInfo, )from uipath.platform import UiPath from uipath.platform.connections.connections import ( ActivityMetadata, ActivityParameterLocationInfo, ) -
描述请求,并将每个输入路由到其位置:
sdk = UiPath() payload = sdk.connections.invoke_activity( activity_metadata=ActivityMetadata( object_path="/hubs/productivity/messages/{id}", method_name="GET", content_type="application/json", parameter_location_info=ActivityParameterLocationInfo( path_params=["id"], ), ), connection_id=OUTLOOK_CONNECTION_KEY, activity_input={"id": message_id}, )sdk = UiPath() payload = sdk.connections.invoke_activity( activity_metadata=ActivityMetadata( object_path="/hubs/productivity/messages/{id}", method_name="GET", content_type="application/json", parameter_location_info=ActivityParameterLocationInfo( path_params=["id"], ), ), connection_id=OUTLOOK_CONNECTION_KEY, activity_input={"id": message_id}, ) -
将连接器响应映射到您的
Output模型。
结果
SDK 将 id 替换到路径中并发出请求:
GET /elements_/v3/element/instances/{connectionId}/hubs/productivity/messages/{id}
GET /elements_/v3/element/instances/{connectionId}/hubs/productivity/messages/{id}
instances 段携带连接 ID,而不是连接元数据中的 elementInstanceId。
带参数位置信息的路由输入
ActivityParameterLocationInfo 的每个字段都命名属于请求一部分的 activity_input 的键。
| 字段 | 将输入路由到 |
|---|---|
path_params | object_path 中的占位符,例如 {id} |
query_params | 查询字符串 |
header_params | 请求标头 |
body_fields | 请求正文 |
multipart_params | 多部分表单字段 |
将删除 parameter_location_info 中未列出的输入,不会出现错误。拼写错误的按键在连接器响应中显示为缺失参数,而不是显示为失败的调用。
连接器响应因版本而异。同一记录可以作为裸对象、列表或 items 信封到达,字段名称可以遵循提供程序的形状或展平连接器的形状。防御性地阅读您需要的字段,而不是想当然。