0
点赞
收藏
分享

微信扫一扫

如何在 SAP Spartacus 中编写 ASM-Compatible 的代码

要编写与 ASM 兼容的代码,开发人员需要使用 UserIdService 中的 takeUserId() 函数来确定 OCC 调用中使用的 userId。 这通常在一个服务中完成,该服务调度一个在有效负载中包含 userId 的 Action.

在 Spartacus 官方支持 ASM 场景之前,在代表经过身份验证的用户发送的请求中,OCC userId 是特殊的 ​​current​​ OCC 用户,由 OCC_USER_ID_CURRENT 常量表示。 这可以在以下示例中看到:

/**
* Retrieves user's addresses
*/
loadAddresses(): void {
this.store.dispatch(new UserActions.LoadUserAddresses(OCC_USER_ID_CURRENT));
}

如何在 SAP Spartacus 中编写 ASM-Compatible 的代码_后缀

借助 Spartacus 中的官方 ASM 支持,确定 OCC userId 的正确方法是调用 UserIdService.takeUserId()。 使用前面的示例作为起点,Spartacus 现在确定 OCC 用户 ID,如下所示:

/**
* Retrieves user's addresses
*/
loadAddresses(): void {
this.userIdService.takeUserId().subscribe((userId) => {
this.store.dispatch(new UserActions.LoadUserAddresses(userId));
});
}

小窍门:如果 OCC_USER_ID_CURRENT 直接在服务中使用,这意味着它可能会被对 takeUserId() 的调用所取代。

为了支持 Spartacus 中的 ASM 以及未来可能的其他功能,facade service 在调用各种操作时不能简单地使用这个 ​​current​​ 的特殊 userId. 需要应用一些逻辑来确定正确的 OCC userId 以传递给触发后端调用的操作。 因此,确定正确 OCC userId 的逻辑集中在 UserIdService 的 takeUserId() 函数中。

当客户支持代理登录时,ASM UI 中会出现一个会话超时计时器。 默认值为 600 秒(10 分钟),但可以更改会话超时持续时间,如下例所示:

provideConfig({
asm: {
agentSessionTimer: {
startingDelayInSeconds: 720,
},
},
});

在此示例中,会话计时器的持续时间已设置为 720 秒(12 分钟)。

ASM客户搜索中的结果数量可以自定义,如下例所示:

provideConfig({
asm: {
customerSearch: {
maxResults: 20,
},
},
});

在 Spartacus UI 启动 ASM 模式的方法:

要在 Spartacus 店面中调用 ASM UI,请将 ​​?asm=true​​​ 后缀添加到 URL。 例如,对于 ​​electronics​​ 示例商店,可以使用以下 URL 在主页上调用 ASM UI:

​https://{hostname}/electronics-spa/en/USD/?asm=true​

目前 Spartacus 暂时不支持对 ASM 进行扩展。

ASM Customer Emulation 不适用于 Spartacus 中的 CMS 内容规则和限制。 如果存在通常基于客户 ID 或客户组 ID 应用的内容规则或限制,则在 ASM Customer Emulation 期间不会应用这些规则和限制。 相反,CMS endpoint 根据允许客户支持代理查看的内容提供内容。

为了显示 CMS 内容,Spartacus 依赖于 OCC 的 CMS endpoint. 发送请求时,CMS 端点不接受可以定义模拟用户(即客户)的 userId 参数。 CMS 端点仅将经过身份验证的用户识别为请求的发送者,并且在 ASM Customer Emulation 会话中,经过身份验证的用户是客户支持代理(Customer Support Agent)。

OCC CMS 端点不接受 userId 参数,因此模拟客户不可能在 ASM 模拟会话期间触发 CMS 规则和限制(rules and restrictions).

举报

相关推荐

0 条评论