[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
创建实例 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监视挂接相同。返回的实例公开方法,如configure、forRequest和sendEvent。 与Web SDK不同,直接在实例上调用方法,例如alloy.sendEvent({ ... }),而不是将命令名称作为字符串传递。
创建自定义实例 custom-instance
如果您不需要每个可选组件,请使用createCustomInstance并仅传递所需的组件。 components导出包含每个可选组件:
组件
添加
components.consentsetConsent方法和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