在自定义操作中使用 API 调用响应 custom-action-enhancements
您可以在自定义操作中利用API调用响应,并根据这些响应编排历程。
重要说明 custom-action-enhancements-notes
-
响应有效负载支持标量数组:
code language-none "dummyScalarArray": [ "val1", "val2" ]
-
响应有效负载中不支持异构阵列:
code language-none "dummyRandomArray": [ 20, "aafw", false ]
配置自定义操作 config-response
-
创建自定义操作。 请参见此页面。
-
在 响应 字段中单击。
{width="80%"}
-
粘贴由调用返回的有效负载示例。 验证字段类型是否正确(字符串、整数等)。 以下是调用期间捕获的响应有效负载示例。 我们的本地端点发送会员积分数和用户档案的状态。
code language-none { "customerID" : "xY12hye", "status":"gold", "points": 1290 }
{width="80%"}
每次调用API时,系统将检索有效负载示例中包含的所有字段。
-
我们还要将customerID添加为查询参数。
{width="80%"}
-
单击 保存。
在历程中利用响应 response-in-journey
只需将自定义操作添加到历程中。 然后,您可以在条件、其他操作和消息个性化中利用响应有效负载字段。
例如,您可以添加条件以检查会员积分数。 当人员进入餐厅时,您的本地端点会发送包含用户档案忠诚度信息的调用。 如果用户档案是黄金客户,则可以发送推送。 如果在调用中检测到错误,请发送自定义操作以通知您的系统管理员。
-
添加您的事件和之前创建的忠诚度自定义操作。
-
在“忠诚度”自定义操作中,将客户ID查询参数映射到配置文件ID。 选中选项 在超时或错误的情况下添加替代路径。
-
在第一个分支中,添加条件并使用高级编辑器利用 Context 节点下的操作响应字段。
-
然后,添加推送,并使用响应字段个性化消息。 在本例中,我们使用忠诚度积分数和客户状态来个性化内容。 操作响应字段在 上下文属性 > Journey Orchestration > 操作 下可用。
note note NOTE 每个输入自定义操作的配置文件都将触发调用。 即使响应始终相同,历程仍会为每个配置文件执行一个调用。 -
在超时和错误分支中,添加条件并利用内置 jo_status_code 字段。 在我们的示例中,我们使用
http_400 错误类型。 请参阅此小节。code language-none @action{ActionLoyalty.jo_status_code} == "http_400"
-
添加将发送到贵组织的自定义操作。
测试模式日志 test-mode-logs
您可以通过测试模式访问与自定义操作响应相关的状态日志。 如果您在历程中定义了具有响应的自定义操作,您将在这些日志中看到 actionsHistory 部分,其中显示外部端点返回的有效负载(作为来自该自定义操作的响应)。 这在调试方面可能非常有用。
错误状态 error-status
jo_status_code 字段始终可用,即使未定义响应有效负载也是如此。
以下是此字段的可能值:
- http状态代码: http_
<HTTP API call returned code>
,用于实例http_200或http_400 - 超时错误:timedout
- 上限设置错误: 上限
- 内部错误: 内部错误
如果返回的http代码大于2xx或发生错误,则认为操作调用有误。 在这种情况下,历程会流向专用超时或错误分支。
表达式语法 exp-syntax
以下是语法:
#@action{myAction.myField}
下面是一些示例:
// action response field
@action{<action name>.<path to the field>}
@action{ActionLoyalty.status}
// action response field
@action{<action name>.<path to the field>, defaultValue: <default value expression>}
@action{ActionLoyalty.points, defaultValue: 0}
@action{ActionLoyalty.points, defaultValue: @event{myEvent.newPoints}}
在自定义操作响应中处理收藏集时,您可以依赖currentActionField
来访问当前项:
count(
@action{MyAction.MyCollection.all(
currentActionField.description == "abc"
)}
)
其他资源
有关更多信息,请参阅以下页面: