[Alpha]{class="badge informative"}

安装服务器SDK

服务器SDK在npm上作为@adobe/alloy-node包提供。 使用npm或运行时使用的包管理器将其安装在服务器项目中:

npm install @adobe/alloy-node

此包作为ECMAScript模块发布,并在任何满足要求的服务器端JavaScript运行时中运行。 使用import加载它:

import { createInstance } from "@adobe/alloy-node";
NOTE
本指南中的示例使用Node.js。 如果使用其他运行时,请将Node.js特定的代码(如process.env和node:http模块)替换为运行时的等效代码。 请参阅运行时支持。

创建实例 create-instance

createInstance函数返回SDK的一个实例,该实例包含每个可用的可选组件(Consent和Personalization)。 大多数实施都使用此函数。

import { createInstance } from "@adobe/alloy-node";

const alloy = createInstance({ name: "alloy" });

createInstance函数接受具有以下属性的可选对象:

属性
类型
描述
name
字符串
SDK添加到其日志消息的前缀,如[alloy]。 默认为"alloy"。 如果在同一进程中运行多个实例并希望将其日志分开,请设置不同的名称。
monitors
数组
监视挂接对象的数组。 每个对象都可以包含SDK在运行时调用的函数,如onInstanceCreated、onInstanceConfigured和onBeforeCommand。 这些挂接的工作方式与Web SDK监视挂接相同。
platformServices
对象
替换SDK用于网络、存储和Cookie的一个或多个内置服务。 大多数实施不需要此属性。 查看平台服务。

返回的实例公开方法,如configure、forRequest和sendEvent。 与Web SDK不同,直接在实例上调用方法,例如alloy.sendEvent({ ... }),而不是将命令名称作为字符串传递。

创建自定义实例 custom-instance

如果您不需要每个可选组件,请使用createCustomInstance并仅传递所需的组件。 components导出包含每个可选组件:

组件
添加
components.consent
setConsent方法和defaultConsent配置选项。
components.personalization
能够使用sendEvent的personalization选项请求个性化。
import { createCustomInstance, components } from "@adobe/alloy-node";

// Includes consent, but not personalization
const alloy = createCustomInstance({
  components: [components.consent]
});

上下文、数据收集、标识和库信息组件始终包括在内。 如果省略了一个可选组件:

  • 组件提供的方法仍存在于实例上,但在调用时它们会拒绝。 例如,setConsent拒绝并显示一个错误,其消息包括The setConsent command does not exist。
  • 组件提供的配置选项被configure拒绝。 例如,defaultConsent导致configure拒绝并显示Unknown field错误。
  • 组件在其他方法中读取的选项将被忽略。 例如,即使您设置了personalization选项,sendEvent也不会请求个性化。

createCustomInstance接受相同的name、monitors和platformServices属性作为createInstance。

发送测试事件 test-event

设置身份验证后,可通过配置实例并发送一个事件来确认安装是否正常工作。 将凭据存储在环境变量中,而不是源代码中。

import { createInstance } from "@adobe/alloy-node";

const alloy = createInstance();

await alloy.configure({
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
  edgeCredentials: {
    clientId: process.env.ADOBE_CLIENT_ID,
    clientSecret: process.env.ADOBE_CLIENT_SECRET,
    scopes: process.env.ADOBE_SCOPES.split(",")
  }
});

const result = await alloy.sendEvent({
  xdm: {
    eventType: "web.webpagedetails.pageViews",
    identityMap: {
      Email: [{ id: "test-visitor@example.com", primary: true }]
    }
  }
});

console.log("Event sent", result);

如果事件成功,则promise解析。 如果失败,promise将拒绝并显示描述问题的错误,例如凭据无效或缺少主身份。 将debugEnabled设置为true以将每个步骤记录到控制台。

IMPORTANT
此测试从顶级实例发送事件,在进程的生命周期内保持单个标识。 在您的应用程序中,改为对每个访客请求的forRequest句柄调用方法。 查看实例和请求。

后续步骤 next-steps

recommendation-more-help
experience-platform-help-collection