For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
가이드 및 설문조사 웹 SDK.
Amplitude의 가이드 및 설문조사 SDK를 사용하면 웹사이트 또는 애플리케이션에 가이드 및 설문조사를 배포할 수 있습니다.
SDK 설치
가이드 및 설문조사는 기존 Amplitude 구현(있는 경우)과 가장 잘 작동하도록 다양한 설치 옵션을 지원합니다.
Shopify 설치
Amplitude Shopify 플러그인을 사용하는 경우, 가이드 및 설문조사 웹 SDK를 별도로 설치하십시오. Shopify 플러그인에는 Amplitude 애널리틱스, 세션 리플레이 및 웹 실험이 포함되어 있지만 가이드 및 설문조사는 포함되어 있지 않습니다.
Amplitude 브라우저 SDK 2
Amplitude Browser SDK v2를 사용하는 경우, 가이드 및 설문조사 SDK를 스크립트와 함께 설치하거나 npm 또는 Yarn과 함께 패키지로 설치하십시오.
이 접근 방식은 Amplitude Browser SDK의 플러그인 시스템을 사용하며, 이를 통해 핵심 분석 SDK를 추가 기능으로 확장할 수 있습니다. 호출은 가이드 및 설문조사를 플러그인으로 amplitude.add(engagementPlugin())등록합니다. 가이드 및 설문조사는 분석과 함께 초기화되고, 동일한 API 키와 사용자 ID를 공유하며, 분석과 직접 통신합니다. 별도로 호출하거나 따로 init수행할 필요가 없습니다boot.
amplitude.init() 전에 amplitude.add(engagementPlugin())을 호출하세요. 이를 통해 분석 SDK가 플러그인의 초기화를 제어할 수 있으므로 가이드 및 설문조사가 부팅될 때 사용자 ID와 세션이 준비되어 있습니다.
Amplitude 스크립트 태그 아래에 스크립트 태그를 배치합니다.
<script src="https://cdn.amplitude.com/script/API_KEY.engagement.js"></script>
<script>
amplitude.add(window.engagement.plugin());
</script>
스크립트를 동기식으로 로드
할 때 스크립트 태그를 사용하여 분석 및 참여 SDK를 로드할 때는 Amplitude 애널리틱스 스크립트 태그를 설정하지 async = true마십시오. 분석 SDK는 참여 SDK보다 먼저 로드되어야 합니다. 비동기식으로 로드하면 초기화 오류가 발생할 수 있습니다.
init을 호출하기 전에 플러그인을 추가합니다.
분석 SDK가 아직 초기화되는 동안 플러그인을 추가하면 누락되거나 잘못된 사용자가 표시된 상태로 가이드 및 설문조사가 부팅될 수 있습니다. 항상 amplitude.init()을 amplitude.add(engagementPlugin())전에 호출하세요. 그래야 분석 SDK가 자체 스타트업 시퀀스에서 올바른 시점에 플러그인을 초기화할 수 있습니다.
설정에서 플러그인을 먼저 추가할 수 없다면 초기화가 완료될 때까지 기다린 후 추가하십시오.
await amplitude.init("API_KEY").promise;
amplitude.add(engagementPlugin());
이 접근 방식을 사용하면 플러그인은 플러그인을 추가하기 전에 추적된 이벤트를 수신하지 않으므로 "이벤트 추적 중" 트리거가 있는 가이드 및 설문조사는 이러한 초기 이벤트에 반응하지 않습니다.
추가 구성을 위해서는 plugin함수에 공급하십시오InitOptions. 사용 가능한 옵션을 확인하려면 SDK 초기화로 이동하십시오.
예를 들어, 플러그인이 자동으로 autoRefreshIntervalSeconds다음을 호출하므로 날짜 이후 플러그인 시간에 자동 새로 고침을 구성하는 데 boot()사용하십시오.
import { plugin as engagementPlugin } from "@amplitude/engagement-browser";
amplitude.add(
engagementPlugin({
autoRefreshIntervalSeconds: 3600,
}),
);
설치 단계가 완료되면 SDK는 기본적으로 모든 가이드 및 설문조사 이벤트를 프로젝트로 전송합니다.
가이드 및 설문조사와 분석에 동일한 API 키 사용
분석 불일치를 방지하고 정확한 데이터 수집을 보장하려면 가이드 및 설문조사와 분석 SDK 모두에 동일한 API 키를 사용하십시오. 둘 다 동일한 Amplitude 프로젝트를 참조해야 합니다. 다른 API 키를 사용하면 다음과 같은 문제가 발생할 수 있습니다.
- 잘못된 프로젝트에서 가이드 및 설문조사를 가져오는 SDK.
- 분석 데이터가 다른 프로젝트에 나타남.
- 인사이트 및 설문조사 응답이 불완전하거나 일치하지 않음.
가이드 및 설문조사에 제공하는 API 키가 Amplitude 분석 SDK를 초기화하는 데 사용된 API 키와 일치하는지 확인하십시오.
init 또는 boot를 호출할 필요가 없습니다
amplitude.add(engagementPlugin())와 함께 Amplitude Browser SDK 플러그인을 사용할 때는 engagement.init() 또는 engagement.boot()을 호출하지 마십시오. 플러그인은 초기화를 자동으로 처리합니다.
필요한 경우에만 수동으로 init 및 boot를 호출하십시오.
이 옵션은 Amplitude 애널리틱스 Browser SDK 2에서만 사용하십시오.
Amplitude Browser 통합 SDK
Amplitude Browser 통합 SDK에는 기본적으로 가이드 및 설문조사가 포함되어 있습니다. 초기화 다음 기간동안 인게이지먼트 옵션을 제공합니다.
import { initAll } from "@amplitude/unified";
initAll("YOUR_API_KEY", {
// Other Amplitude SDK options...
engagement: {
// Guides and Surveys options go here...
},
});
가이드 및 설문조사를 표시하기 전에 Amplitude 프로젝트 설정에서 가이드 및 설문조사를 활성화하십시오. 자세한 내용은 Unified SDK 설명서를 참조하십시오.
독립형 설치: 기타 Amplitude SDK, 타사 분석 공급자 및 프록시 설정
다음과 같은 경우 이 독립형 설치 경로를 사용하십시오.
- 브라우저 SDK 2 또는 브라우저 통합 SDK 이외의 Amplitude SDK를 사용하십시오.
- 타사 분석 공급자를 사용하십시오(예: 세그먼트, 힙 또는 믹스패널).
- 브라우저 SDK 2를 프록시 서버와 함께 사용하십시오.
프록시 설정에는 독립형
설치가 필요합니다. 브라우저 SDK 2를 프록시와 함께 사용하려는 serverUrl경우(분석 초기화 시 사용자 지정), 플러그인 설치 경로를 사용하지 마십시오(amplitude.add(engagementPlugin())). 이 플러그인은 프록시 구성을 지원하지 않습니다. 대신, 이 독립형 설치 경로를 init및 boot와 함께 사용하고 가이드 및 설문조사 프록시 URL을 별도로 구성하십시오. 자세한 내용은 프록시 구성을 검토하십시오.
이 설치에는 다음 단계가 필요합니다.
- 스크립트 태그를 사용하거나
npm또는yarn을 통해 가이드 및 설문조사 SDK를 추가하십시오. - 가이드 및 설문조사를 초기화하고 이를 분석 공급업체에 연결하려면
init및boot를 직접 호출하십시오.
이 설치 경로에 필요한 필수 및 권장 설정
- 필수: 가이드 및 설문조사 이벤트를 분석 공급자에게 전송하려면
boot호출에integrations를 포함하십시오. 이 기능이 없으면 가이드 인사이트, 설문조사 인사이트 및 설문조사 응답이 표시되지 않습니다. - 강력히 권장됩니다:
forwardEvent를 사용하여 이벤트 전달을 설정하여 가이드 및 설문조사에서 '이벤트 추적됨(On event tracked)' 트리거를 활성화하십시오. 이 기능이 없으면 페이지 로드 또는 기타 비이벤트 조건에서만 가이드 및 설문조사를 트리거할 수 있습니다.
SDK 초기화
번들을 완전히 초기화하고 전역 window 객체에 engagement를 등록하려면 init를 호출하십시오.
engagement.init(apiKey: string, options: { serverZone: "US" | "EU", serverUrl: string, cdnUrl: string, mediaUrl: string, logger: Logger, logLevel: LogLevel, locale: string, nonce: string, autoRefreshIntervalSeconds: number, skip: boolean, transport: { headers: Record<string, string> | (() => Record<string, string>), handleHttpRequest: (request: TransportHttpRequest) => Promise<Response> } }): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
apiKey | string | 필수입니다. 사용하려는 Amplitude 프로젝트의 API 키입니다. |
initOptions.serverZone | EU 또는 US | 선택 사항입니다. Amplitude 서버 영역을 설정합니다. EU 데이터 센터에서 생성된 Amplitude 프로젝트의 경우 이 값을 EU로 설정하십시오. 기본값: US. |
initOptions.serverUrl | string | 선택 사항입니다. API 요청에 대한 사용자 지정 서버 URL을 설정합니다. 이 옵션을 프록시 설정에 사용하십시오. 기본값: https://gs.amplitude.com (미국) 또는 https://gs.eu.amplitude.com (EU). |
initOptions.cdnUrl | string | 선택 사항입니다. 정적 자산에 대한 사용자 지정 CDN URL을 설정합니다. 이 옵션을 프록시 설정에 사용하십시오. 기본값: https://cdn.amplitude.com (미국) 또는 https://cdn.eu.amplitude.com (EU). |
initOptions.mediaUrl | string | 선택 사항입니다. 너지 이미지를 프록시하기 위한 사용자 지정 URL을 설정합니다. 방화벽이 이미지를 차단할 때 프록시 설정에 이 옵션을 사용하십시오. 기본값: https://engagement-static.amplitude.com (미국) 또는 https://engagement-static.eu.amplitude.com (EU). |
initOptions.chatUrl | string | 선택 사항입니다. AI Assistant 채팅 요청에 대한 사용자 지정 URL을 설정합니다. 이 URL은 serverUrl로 이동하지 않습니다. AI를 사용할 때 프록시 설정에 이 옵션을 사용하십시오. 기본값: https://houston-chat.prod.us-west-2.amplitude.com (US) 또는 https://houston-chat.prod.eu-central-1.amplitude.com (EU). |
initOptions.logger | 로거 인터페이스 | 선택 사항입니다. 사용자 지정 로깅 공급자 클래스를 설정합니다. 기본값: Amplitude 로거 |
initOptions.logLevel | LogLevel.None 또는 LogLevel.Error 또는 LogLevel.Warn 또는 LogLevel.Verbose 또는 LogLevel.Debug. | 선택 사항입니다. 로그 수준을 설정합니다. 기본값: LogLevel.Warn. |
initOptions.locale | string | 선택 사항입니다. 현지화에 사용할 로케일을 설정합니다. 기본값: undefined. 언어를 설정하지 않은 경우 SDK는 기본 언어를 사용합니다. |
initOptions.nonce | string | 선택 사항입니다. CSP(콘텐츠 보안 정책) 컴플라이언스 준수를 위한 논스 값을 설정합니다. 논스를 사용하면 CSP를 활성화할 때 가이드 및 설문조사에서 필요한 인라인 스타일을 실행할 수 있습니다. 기본값: undefined. |
initOptions.autoRefreshIntervalSeconds | number | 선택 사항입니다. 자동 새로 고침 간격(초)입니다. SDK는 이 간격에 따라 자동으로 새로 고침됩니다(타겟팅 데이터를 다시 가져오고 구성을 다시 로드함). 60초 이상이어야 합니다. 지정되지 않았거나, 0 또는 음수인 경우 SDK는 자동 새로 고침을 비활성화합니다. 플러그인 모드에서는 플러그인이 자동으로 관리하므로 초기화 시에 boot()이 값을 설정하십시오. |
initOptions.skip | boolean | 선택 사항입니다. 초기화를 건너뛰고 프록시를 설정하지 않습니다. 초기화하기 위해 skip없이 나중에 다시 호출한 다음, 시작하기 위해 boot()호출하십시오init. 기본값: false. |
initOptions.transport | { headers: Record<string, string> | (() => Record<string, string>), handleHttpRequest: (request) => Promise<Response> } | 선택 사항입니다. 발신 SDK 요청을 사용자 정의합니다. headers는 모든 요청에 사용자 지정 HTTP 헤더를 첨부합니다. 이는 정적 객체나 이를 반환하는 동기 함수를 허용합니다. SDK는 각 요청 전에 함수를 호출하므로 순환된 자격 증명은 최신 상태로 유지됩니다. 사용자 지정 HTTP 요청 헤더로 이동합니다. handleHttpRequest은 모든 요청에 대해 fetchSDK의 내부 기능을 대체하므로 사용자가 아웃바운드 호출을 완전히 소유할 수 있습니다. 예를 들어 를 사용하여 인증 프록시에 쿠키를 전송할 수 있습니다.credentials: "include" 사용자 지정 트랜스포트로 이동합니다. |
예: 기본 초기화
engagement.init("YOUR_API_KEY", {
serverZone: "US",
logLevel: LogLevel.Warn,
});
예: 프록시를 사용한 초기화
프록시 설정의 경우 serverUrl, cdnUrl 및 mediaUrl을 지정합니다. AI를 사용하는 경우 채팅 요청을 다른 호스트로 전송하므로 chatUrl추가하십시오:
engagement.init("YOUR_API_KEY", {
serverUrl: "https://your-proxy-domain.cloudfront.net",
cdnUrl: "https://your-proxy-domain.cloudfront.net",
mediaUrl: "https://your-proxy-domain.cloudfront.net",
chatUrl: "https://your-proxy-domain.cloudfront.net",
});
프록시를 사용할 때는 브라우저 SDK v2를 사용하는 경우에도 가이드 및 설문조사를 완전히 설치하도록 호출하십시오.window.engagement.boot integrations옵션을 통해 이벤트 처리를 설정해야 합니다.
예: CSP nonce를 사용한 초기화
콘텐츠 보안 정책(CSP) 컴플라이언스를 위해 nonce 값을 포함하십시오.
engagement.init("YOUR_API_KEY", {
nonce: "YOUR_NONCE",
});
예: 자동 새로 고침을 사용한 초기화
자동 새로고침을 활성화하여 타겟팅 데이터를 주기적으로 다시 가져오고 구성을 다시 로드하십시오.
engagement.init("YOUR_API_KEY", {
autoRefreshIntervalSeconds: 3600,
});
예: 건너뛰기를 사용한 지연된 초기화
SDK를 초기화하거나 프록시를 설정하지 않고 창 객체에 등록하는 데 skip사용합니다engagement. 초기화를 완료하기 위해 나중에 skip없이 init다시 호출한 다음, 시작하려면 boot()를 호출하십시오.
// Register the engagement object without initializing
engagement.init("YOUR_API_KEY", { skip: true });
// Later, when ready to initialize
engagement.init("YOUR_API_KEY", { serverZone: "US" });
engagement.boot({ user_id: "USER_ID" });
이 함수를 호출한 후에는 SDK 함수에 window.engagement 액세스하고 호출할 수 있습니다. 가이드 및 설문조사는 boot를 호출하기 전까지는 완전히 작동하지 않습니다.
부트 사용자
사용자에게 가이드 및 설문조사를 제공하려면 init다음에 boot를 호출하십시오. 독립형 설치의 경우 SDK 스크립트가 페이지에 로드되더라도 boot를 호출할 때까지 가이드 및 설문조사는 작동하지 않습니다.
매개변수 옵션, 유형 정의 및 사용 예제를 포함한 boot 방법에 대한 자세한 문서는 Boot를 참조하십시오.
다음 예제에서는 사용자 ID, 장치 ID 및 사용자 속성을 사용하여 boot호출합니다. 또한 가이드 및 설문조사 이벤트를 분석 공급자에게 integrations전달하도록 지정합니다.
await window.engagement.boot({
user: {
user_id: "user123",
device_id: "device456",
user_properties: {
plan: "premium",
},
},
integrations: [
{
track: (event) => {
amplitude.track(event.event_type, event.event_properties);
},
},
],
});
이벤트 전달
On event tracked 트리거를 사용하려면 분석 공급업체의 이벤트를 가이드 및 설문조사로 전달하십시오. 가이드 및 설문조사 SDK는 이러한 이벤트를 Amplitude로 전송하지 않습니다. SDK는 이를 로컬 트리거 평가에만 사용합니다.
이 설치 경로에 대해 강력히 권장됨
. Amplitude는 Amplitude Browser SDK 플러그인을 사용하지 않을 때 이벤트 전달을 설정할 것을 강력히 권장합니다. 없으면 On 이벤트 추적 트리거를 사용할 수 없으며, 이는 앱에서 사용자 행동을 기반으로 한 가이드 및 설문조사를 표시하는 기능에 제한을 줍니다.
analytics.on("track", (event, properties, options) => {
// Example for Segment Analytics
window.engagement.forwardEvent({
event_type: event,
event_properties: properties,
});
});
Segment를 사용하는 경우 이벤트 부팅 및 전달 예
구글 태그 관리자
아직 업데이트하지 않은 경우 최신 버전의 Amplitude 템플릿으로 업데이트하십시오. GTM의 템플릿 페이지에서 업데이트 아이콘을 찾으십시오.
그런 다음 태그 페이지에서 가이드 및 설문조사를 활성화합니다.
Amplitude 템플릿은 기본적으로 가이드 및 설문조사를 활성화하지 않습니다. 이 기본값은 자동 템플릿 업데이트를 사용하는 조직이 실수로 가이드 및 설문조사를 활성화하지 못하도록 방지합니다.
Google 태그 관리자는 권장되는 설치 방법이 아닙니다.
Google 태그 관리자는 가이드 및 설문조사 SDK를 테스트할 수 있는 편리한 방법이지만, Amplitude는 브라우저 SDK v2, 브라우저 통합 SDK 또는 독립형 설치 코드 경로를 통해 배포할 것을 권장합니다. GTM은 가이드 및 설문조사 제공에 영향을 주는 시기 및 순서 문제를 일으킬 수 있습니다. 코드를 통해 직접 SDK를 설치하면 타겟팅, SDK 사용, 현지화, 제품이 발전함에 따라 새로운 기능에 대한 액세스를 보다 효과적으로 제어할 수 있습니다.
설치 및 초기화 확인
가이드 및 설문조사 SDK가 귀하의 사이트 또는 개발 환경에서 실행되고 있는지 확인하려면 브라우저의 개발자 도구를 열고 콘솔에 다음을 입력하십시오.
window.engagement;
응답이 undefined인 경우 가이드 및 설문조사가 제대로 설치되지 않았습니다.
콘텐츠 보안 정책(CSP)
조직에 엄격한 콘텐츠 보안 정책(CSP)이 있는 경우 가이드 및 설문조사가 원활하게 작동하도록 몇 가지 추가 기능이 필요합니다. 다음 CSP 지시어를 정책에 추가하십시오.
script-src: https://*.amplitude.com;
connect-src: https://*.amplitude.com;
img-src: https://*.amplitude.com;
media-src: https://*.amplitude.com;
style-src: https://*.amplitude.com;
인라인 스타일을 차단하는 더 엄격한 CSP 요구 사항을 가진 환경의 경우 초기화 중에 nonce매개변수를 사용하십시오. 이 매개변수를 사용하면 가이드 및 설문조사에서 CSP 논스 값을 포함하여 필요한 인라인 스타일을 실행할 수 있습니다.
engagement.init("YOUR_API_KEY", {
nonce: "YOUR_NONCE",
});
iframe 지원 및 제한 사항
가이드 및 설문조사는 iframe을 사용하는 애플리케이션에 대한 지원을 제한적으로 제공합니다. iframe 기반 애플리케이션에서 가이드 및 설문조사를 구현할 때는 이러한 제한 사항을 고려하십시오.
iframe 내부의 요소를 타겟팅하기:
- 핀과 툴팁은 부모 애플리케이션의 iframe 내부의 요소를 대상으로 삼을 수 없습니다.
- 각 iframe에는 해당 iframe 내에 가이드나 설문조사를 표시하기 위한 자체 SDK 인스턴스가 필요합니다.
- CSS 선택기는 iframe 경계를 넘을 수 없으므로 SDK가 iframe 내에서 요소를 찾을 수 없습니다.
SDK 인스턴스 및 다단계 경험:
- 각 iframe에는 부모 애플리케이션과 동일한 API 키로 초기화된 별도의 SDK 인스턴스가 필요합니다.
- 상위 응용 프로그램과 iframe에 걸쳐 진행되는 다단계 탐색은 지원되지 않습니다.
- 각 SDK 인스턴스는 독립적으로 작동하며 서로 다른 컨텍스트에서 단계를 조정할 수 없습니다.
이벤트 트래킹 및 사용자 식별:
- iframe에서 추적되는 이벤트는 상위 애플리케이션의 이벤트와 독립적입니다.
- 모든 SDK 인스턴스에서 일관된 사용자 식별(사용자 ID 및 장치 ID)을 보장합니다.
- 각 SDK 인스턴스는 자체 상태를 유지하며 다른 인스턴스와 데이터를 공유하지 않습니다.
도구 모음 및 미리 보기:
- 각 SDK 인스턴스는 자체 디버그 및 미리보기 도구 모음을 렌더링하므로 iframe이 있는 페이지는 둘 이상의 도구 모음을 표시합니다.
- 각 도구 모음에는 인스턴스 이름(
default또는iframe: {id})이 있는 색상 배지가 표시되며 다른 도구 모음과 수직으로 겹쳐지므로 겹쳐진 도구 모음은 계속 접근 가능합니다. - 각 도구 모음은 자체 인스턴스만 제어합니다. 요소 선택 및 미리 보기는 인스턴스가 실행된 프레임에 수행되므로, 대상 요소가 포함된 프레임에 해당하는 도구 모음을 선택하세요.
권장되는 접근법:
- 상위 애플리케이션과 가이드 또는 설문조사를 표시해야 하는 각 iframe 모두에 SDK를 설치하십시오.
- 일관된 사용자 식별을 보장하려면 모든 SDK 인스턴스에 동일한 API 키를 사용하십시오.
- 단일 컨텍스트(상위 또는 특정 iframe)에서 작동하도록 가이드 및 설문조사를 디자인합니다.
설치 문제 해결
가이드 및 설문조사 구현이 작동하지 않는 경우 다음 항목을 확인하십시오.
가이드 및 설문조사 설치 확인
Amplitude Chrome 확장 프로그램을 사용하여 가이드 및 설문조사를 디버깅하세요. 이 확장기능에는 SDK 설정을 확인하고, 가이드나 설문조사가 표시되지 않는 이유를 해결하고, 이벤트 기반 트리거를 테스트하는 도구가 포함되어 있습니다.
- 브라우저의 개발자 콘솔을 열고
window.engagement를 입력합니다. 반환 값이undefined인 경우 가이드 및 설문조사 설치 작업이 성공적으로 수행되지 않았습니다. - 유효한 응답이 반환되면
window.engagement를 입력합니다.window.engagement._.user``undefined가 반환되면 Amplitude Browser SDK 플러그인 구성에 문제가 있음을 나타냅니다. - 추가 디버깅을 하려면
window.engagement._debugStatus()를 입력하십시오. 출력은 다음과 같아야 합니다.
{
"user": {
"user_id": "test-base-user-1vxxkg",
"device_id": "62c5e45a-94ab-4090-b053-3f28e848763f",
"user_properties": {
"foo": "bar"
}
},
"apiKey": "6ae8d3d7d48eadfb0b2489db692e14c9",
"stateInitialized": true,
"decideSuccessful": true,
"num_guides_surveys": 2,
"analyticsIntegrations": 1
}
다음을 확인하십시오.
user객체가 존재합니다.apiKey설정되었습니다.stateInitializedtrue입니다.decideSuccessfultrue입니다.num_guides_surveys는 페이지에 안내서나 설문조사를 표시해야 하는 경우 0이 아닌 정수입니다.
Amplitude Browser SDK 플러그인 구성 확인
Amplitude Browser SDK 2.0을 사용하는 경우 브라우저 콘솔에서 오류가 있는지 확인하십시오. 해당 항목이 없는 경우 코드가 설치 지침과 일치하는지 확인하십시오. 특히 amplitude.add(window.engagement.plugin())이 코드에 존재하는지 확인하십시오.
amplitude is not defined및 cannot read properties of undefined .add()과 같은 오류가 표시되면 가이드 및 설문조사가 Amplitude SDK가 로드되기 전에 로드될 수 있습니다. 코드를 확인하여 Amplitude Browser SDK가 가이드 및 설문조사 SDK보다 먼저 로드되는지 확인하십시오.
가이드 및 설문조사는 브라우저 SDK 2가 필요하며 기존 Amplitude JavaScript SDK를 지원하지 않습니다.
Google 태그 관리자 구성
Google 태그 관리자를 사용하는 경우, 최신 Amplitude 템플릿으로 업데이트해야 합니다.
Google 태그 관리자 사용자
지정 태그 가이드 및 설문조사가 Google 태그 관리자(GTM) 사용자 지정 HTML 태그와 함께 작동하지 않는 경우, 태그 구성에서 Support document.write 확인란을 활성화했는지 확인하십시오. 가이드 및 설문조사를 사용하려면 이 설정이 GTM을 통해 올바르게 로드되어야 합니다.
이 설정을 활성화하려면 다음을 수행하십시오.
- GTM에서 Amplitude 태그로 이동합니다.
- 고급옵션 설정 섹션을 확장합니다.
- Support document.write 확인란을 선택합니다.
- 변경 사항을 저장하고 게시합니다.
일반적인 근본 원인
다음과 같은 일반적인 오류는 가이드 및 설문조사를 실행하지 못하게 할 수 있습니다.
boot 두 번 이상 실행
두 번 이상 호출하면 예기치 않은 동작이 발생할 수 있으며, 특히 즉시 표시되어야 하는 가이드 및 설문조사의 경우에는 boot더욱 그렇습니다.
를 사용하여 가이드 및 설문조사를 구현하는 경우 amplitude.add(window.engagement.plugin())에 호출하지 마십시오boot. add()이 메서드는 매우 구체적인 매개변수 세트와 함께 이 호출을 포함합니다.
잘못된 프로젝트를 사용했습니다.
제공한 API 키를 확인하십시오.
- 브라우저 SDK를 초기화하는 데 사용하는 것과 동일한 키입니다.
- 가이드 및 설문조사 구성을 포함하는 프로젝트에 속합니다.
가이드 및 설문조사와 분석에 서로 다른 API 키를 사용하면 SDK가 잘못된 프로젝트에서 가이드 및 설문조사를 가져오게 되며 분석 데이터가 불완전하거나 일치하지 않습니다. 두 SDK가 동일한 Amplitude 프로젝트에 연결되도록 항상 동일한 API 키를 사용하세요.
현지화
초기화 다음 기간동안 locale옵션을 설정하여 가이드 또는 설문조사를 현지화합니다.
- Amplitude Browser SDK 2 플러그인 설치를 사용하고 있는 경우(
amplitude.add()를 사용하여)InitOptions로케일을 설정합니다. - 타사 분석 공급자를 사용하는 경우
engagement.init()메서드 첫 사용 후options로케일을 설정하십시오.
SDK가 초기화된 후 언어를 동적으로 업데이트하려면 다음 updateLanguage 방법을 사용하십시오. updateLanguage를 호출하면 새 로케일로 구성을 다시 가져옵니다.
engagement.updateLanguage(locale: string): Promise<void>
| 매개 변수 | 유형 | 설명 |
|---|---|---|
locale | string | 필수입니다. 현지화를 위해 설정할 새 언어 코드(예: en, es, fr)입니다. |
// Example: Update language to French
await window.engagement.updateLanguage("fr");
// Example: Update language to English
await window.engagement.updateLanguage("en");
사용자 지정 HTTP 요청 헤더
초기화 시 transport 옵션을 전달하여 가이드 및 설문조사 SDK의 모든 발신 요청에 사용자 지정 HTTP 헤더를 첨부합니다. 이 정보를 사용하여 보안 프록시 또는 송신 게이트웨이를 통해 요청을 인증하거나, 인프라에 필요한 테넌트 식별 헤더를 추가할 수 있습니다. 이 기능은 serverUrl을 통해 구성된 프록시 설정과 잘 어울립니다.
headers 헤더 키-값 쌍의 정적 객체를 허용합니다:
engagement.init("YOUR_API_KEY", {
transport: {
headers: {
"X-Corp-Auth": "your-gateway-token",
"X-Tenant-Id": "your-tenant-id",
},
},
});
회사 게이트웨이에 필요한 수명이 짧은 JWT와 같이 자격 증명이 순환되는 경우 함수를 대신 전달하십시오. SDK는 각 요청 전에 동기적으로 함수를 호출하므로 SDK를 다시 초기화하지 않아도 함수가 반환하는 헤더는 항상 최신 상태입니다. 함수는 헤더 객체를 직접 반환해야 합니다. 비동기 함수는 지원되지 않으므로, 함수 내에서 토큰을 가져오기보다는 애플리케이션이 토큰을 저장한 곳에서 읽으십시오:
engagement.init("YOUR_API_KEY", {
transport: {
headers: () => ({
// Synchronous read of a token your application keeps up to date
"X-Corp-Auth": getCurrentGatewayJwt(),
}),
},
});
다음 동작에 유의하십시오.
- 사용자 지정 헤더는 SDK 내부 헤더 뒤에 병합되므로 이름이 같은 사용자 지정 헤더가 SDK 자체 값을 재정의합니다.
Authorization설정을 피하십시오. SDK는 내부적으로 이를 사용하여 프로젝트 API 키로 일부 요청을 인증하며, 이를 재정의하면 해당 요청이 중단됩니다. - 헤더 함수에서 예외를 던지면 SDK는 경고를 기록하고 요청을 실패시키는 대신 사용자 지정 헤더 없이 요청을 전송합니다.
헤더 이상을 사용자 정의하려면(예: 쿠키 인증 프록시의 credentials정책), 사용자 지정 전송으로 이동하십시오.
맞춤형 운송
예를 들어 보안 프록시가 헤더가 아닌 credentialsfetch 옵션이 필요한 쿠키로 인증하는 등 사용자 지정 헤더만으로 충분하지 않은 경우, 초기화 시 transport.handleHttpRequest콜백을 제공하세요. 설정된 경우 SDK는 모든 발신 요청에 대해 내부 fetch로직 대신 사용자의 콜백을 호출하며, 콜백이 HTTP 호출을 완전히 제어합니다. 이는 세션 리플레이 SDK의 사용자 지정 전송 후크를 미러링합니다.
SDK는 확인된 URL(serverUrl및 관련 옵션 준수), 병합된 헤더(전체 포함) 및 직렬화된 본문을 포함하여 완전히 구성된 요청을 콜백에 전달합니다.transport.headers 콜백의 유일한 작업은 요청을 실행하고 Response를 반환하는 것입니다. 배치 처리, 직렬화, 재시도 및 오류 처리는 SDK 내에 유지되며, 이는 재시도 시도마다 한 번씩 콜백을 호출합니다.
쿠키 인증 프록시의 경우 브라우저가 사이트의 쿠키를 프록시로 전송하도록 요청을 credentials: "include" 와 함께 전달하십시오:
engagement.init("YOUR_API_KEY", {
serverUrl: "https://your-proxy-domain.example.com/gs",
transport: {
handleHttpRequest: ({ url, method, headers, body, signal, keepalive }) =>
fetch(url, {
method,
headers,
body,
signal,
keepalive,
credentials: "include",
}),
},
});
JWT 인증 프록시의 경우 SDK에서 제공한 헤더를 펼치고 고유한 헤더를 추가하세요:
engagement.init("YOUR_API_KEY", {
transport: {
handleHttpRequest: ({ url, method, headers, body, signal, keepalive }) =>
fetch(url, {
method,
headers: { ...headers, "X-Corp-Auth": getCurrentGatewayJwt() },
body,
signal,
keepalive,
}),
},
});
콜백이 수신하는 요청 객체에는 다음 필드가 있습니다.
| 필드 | 유형 | 설명 |
|---|---|---|
url | string | 해결된 요청 URL입니다. chatUrl구성을 존중합니다serverUrl. |
method | string | HTTP 메소드. |
headers | Record<string, string> | 구성된 전체 transport.headers을 포함하여 완전히 병합된 요청 헤더입니다. 이러한 내용을 변경하지 않고 전달하십시오(자신만의 내용을 추가한 경우 이를 펼칩니다). 따라서 Content-Type및 Authorization와 같은 필수 헤더가 삭제되지 않습니다. |
body | string 또는 FormData (선택 사항) | API 및 채팅 요청, AI Assistant 첨부 파일 업로드에 대한 JSON 문자열입니다. GET 요청에는 없습니다FormData. 이를 변경하지 않은 채로 전달하십시오. |
signal | AbortSignal (선택 사항) | SDK가 요청을 취소하거나 시간 초과할 수 있도록 fetch호출을 전달합니다. |
keepalive | boolean (선택 사항) | 귀하의 fetch호출을 전달하십시오. |
다음 동작에 유의하십시오.
- 향후 SDK 버전에서 추가될 필드를 포함하여 수신되는 모든 필드를 전달하여, 취소 및 페이지 종료 전달과 같은 SDK 동작이 콜백을 통해 계속 작동하도록 하십시오.
fetch호출에서 받은Response것을 수정하지 않고 반환하십시오. AI 어시스턴트 채팅 요청은 응답 본문에서 점진적으로 소비되므로 응답은 진정한 스트리밍Response이어야 합니다.- throwing
headers함수와 달리 콜백 오류는 요청을 실패시킵니다. 인증되지 않은 요청은 프록시의 인증을 우회할 수 있으므로, 콜백을 구성할 때 SDK는 결코 기본 제공 기능으로 폴백되지 않습니다fetch. - 콜백에는 핵심 API 호출, AI Assistant REST 요청, SSE 스트림 및 첨부 파일 업로드가 포함됩니다. 미디어 및 CDN 자산 로드는 다루지 않습니다. 해당 항목에는
cdnUrl및mediaUrl프록시 구성을 사용하십시오.
데스크톱 앱의 미리보기 모드
데스크톱 프레임워크 첫 사용 후 SDK를 사용하는 경우, 가이드 및 설문조사 미리보기를 지원하기 위해 추가 계측을 수행해야 합니다.
Amplitude 대시보드는 딥 링크(예: your-app://?gs-debug-id=123)를 통해 앱에 특수 쿼리 매개변수를 전달합니다. 앱 첫 사용 후 로직을 추가하여 딥 링크에서 이 쿼리 매개변수를 수신하고 이를 사용하여 _startNudgeDebugSDK 메서드를 호출하세요.
다음 프레임워크 예를 사용하십시오.
Electron
Electron 첫 사용 후 가이드 및 설문조사를 구현하려면 다음 최소한의 예제를 사용하십시오.
- 프리로드 다음 기간동안 프로세스 간 통신 기능을 등록합니다.
- 기본 프로세스에서:
gs-debug-id쿼리 매개변수를 수신하고 구문 분석합니다. - 렌더러 프로세스에서: 주 프로세스에서 오는 메시지를 수신하고 디버그 매개변수를 Engagement SDK에 전달합니다.
const { app } = require("electron");
// Handle deep link on macOS
app.on("open-url", (event, url) => {
const parsedUrl = new URL(url);
const debugId = parsedUrl.searchParams.get("gs-debug-id");
if (debugId) {
mainWindow.webContents.send("start-engagement-debug", {
debugId: debugId,
});
}
});
// Handle deep link on Windows/Linux
app.on("second-instance", (event, commandLine, workingDirectory) => {
// Find the deep link URL in command line arguments
const url = commandLine.find((arg) => arg.startsWith(PROTOCOL + "://"));
if (url) {
const parsedUrl = new URL(url);
const debugId = parsedUrl.searchParams.get("gs-debug-id");
if (debugId) {
mainWindow.webContents.send("start-engagement-debug", {
debugId: debugId,
});
}
}
});
생애주기 분석 SDK 방법
부팅
가이드 및 설문조사 SDK를 초기화하고 사용자가 사용할 수 있도록 boot호출하십시오. Amplitude Browser SDK v2 또는 Amplitude Browser Unified SDK를 사용하지 않는 경우, SDK 스크립트가 페이지에 로드되더라도 boot를 호출할 때까지 가이드 및 설문조사가 작동하지 않습니다. 이 방법은 라이브 가이드 및 설문조사에 대한 타겟팅 해결을 트리거하고 가이드 및 설문조사 SDK에서 분석 공급자로의 연결을 설정합니다. 활성 사용자를 변경해야 하는 경우가 아니면 세션당 한 번씩 호출하십시오boot.
engagement.boot(options: BootOptions): Promise<void>
| 매개 변수 | 유형 | 설명 |
|---|---|---|
options.user | EndUser, (() => EndUser), 또는 string | 필수입니다. 객체, 사용자 객체를 반환하는 함수(동적 사용자 데이터에 유용함) 또는 간단한 사용자 ID 문자열 등 다음 형식 중 하나로 표시된 사용자 정보입니다. EndUser사용자 객체에 적어도 user_id또는 device_id을 제공해야 합니다. 두 필드 모두 제공하지 않으면 메서드에서 오류를 기록하고 일찍 반환합니다. |
options.integrations | Array<Integration> | 필수입니다. 이벤트 추적을 위한 다양한 통합 기능입니다. 가이드 및 설문조사 이벤트를 분석 공급자에게 전송할 수 있도록 합니다. 통합이 없으면 가이드 인사이트, 설문조사 인사이트 및 설문조사 응답이 표시되지 않습니다. 이벤트 전달이 필요하지 않은 경우 noop로 [{ track: () => {} }]패스하십시오. |
options.autoRefreshIntervalSeconds | number | 더 이상 사용되지 않습니다. 대신 InitOptions에서 autoRefreshIntervalSeconds을 사용하십시오. 자동 새로 고침 간격(초)입니다. 활성화된 경우 SDK는 이 간격에 따라 자동으로 새로 고침(타겟팅 데이터를 다시 가져오고 구성을 다시 로드함)합니다. 60초 이상이어야 합니다. 지정되지 않았거나, 0 또는 음수인 경우 SDK는 자동 새로 고침을 비활성화합니다. init 값과 부트 값을 모두 설정한 경우 부트 시간 값이 우선합니다. |
엔드 유저 유형
EndUser이 유형에는 다음 속성이 포함됩니다.
| 속성 | 유형 | 설명 |
|---|---|---|
user_id | string | 사용자 식별자 |
device_id | string | 장치 식별자 |
user_properties | UserProperties | 사용자 지정 사용자 속성 |
country | string | 국가 위치 데이터 |
region | string | 지역 위치 데이터 |
platform | string | 플랫폼 식별자 |
필수 필드: 최소한 user_id 또는 device_id을 제공해야 합니다. 두 필드 모두 제공하지 않으면 메서드에서 오류를 기록하고 일찍 반환합니다.
연동 유형
Integration유형에는 하나의 속성이 포함됩니다.
| 속성 | 유형 | 설명 |
|---|---|---|
track | (event: Event) => void | 선택 사항입니다. 분석 공급자에게 이벤트를 추적하는 기능 |
부팅 예제
예제 1: 사용자 객체의 기본 사용법
await window.engagement.boot({
user: {
user_id: "user123",
user_properties: {
name: "John Doe",
plan: "premium",
signupDate: "2023-01-15",
},
},
integrations: [
{
track: (event) => {
amplitude.track(event.event_type, event.event_properties);
},
},
],
});
예 2: 분석 연동 사용
await window.engagement.boot({
user: {
user_id: "user123",
device_id: "device456",
user_properties: {
plan: "premium",
},
},
integrations: [
{
track: (event) => {
amplitude.track(event.event_type, event.event_properties);
},
},
],
});
예제 3: 동적 사용자 데이터에 대한 함수 공급자 사용
await window.engagement.boot({
user: () => {
return {
user_id: getCurrentUserId(),
device_id: getDeviceId(),
user_properties: getUserProperties(),
};
},
integrations: [
{
track: (event) => {
amplitude.track(event.event_type, event.event_properties);
},
},
],
});
예 4: 단순 사용자 ID
await window.engagement.boot({
user: "user123",
integrations: [],
});
부팅 사용 요구 사항
- 비동기 메서드:
boot비동기 메서드입니다. 항상 Promise로 사용하거나await처리하십시오. - 필수: 전체 가이드나 설문조사가 표시되기 전에 반드시 호출해야 합니다
boot. - 큐 처리: 부트 호출 프로세스는 SDK의 메서드 큐에서 먼저 수행됩니다.
- 세션당 단일 호출: 일반적으로 사용자 세션당
boot한 번의 호출입니다.
시스템 종료
가이드 및 설문조사 SDK를 종료합니다. 이 메서드는 모든 활성 가이드 및 설문조사를 닫고 가이드 및 설문조사가 트리거되는 것을 중단합니다. 사용자가 로그아웃할 때와 같이 SDK를 완전히 정리해야 할 때 이 방법을 사용하십시오.
engagement.shutdown(): void
shutdown()를 호출한 후에는 SDK가 더 이상 작동하지 않습니다. 가이드 및 설문조사를 다시 사용하려면 다시 호출하십시오boot().
타겟팅 새로고침
decide 엔드포인트에 새 요청을 제출하여 백엔드에서 타겟팅 평가를 다시 가져옵니다. 이 방법을 사용하여 최신 타겟팅 규칙과 사용자 상태를 기반으로 표시할 수 있는 가이드와 설문조사를 새로 고칩니다. SDK는 사용자 또는 사용자 속성이 변경될 때 타겟팅을 자동으로 새로 고칩니다. 수동으로 타겟팅을 새로 고치는 것은 서버측에서 사용자 속성을 업데이트하거나 최신 코호트 멤버십 상태가 필요한 경우에 유용합니다.
engagement.decide(): Promise<void>
자동 새로 고침 간격 설정
타겟팅 데이터의 자동 주기적 새로 고침을 구성합니다. 활성화되면 SDK는 자동으로 결정 데이터를 다시 가져오고, 최종 사용자 저장소를 새로 고치며, 지정된 간격으로 구성을 다시 로드합니다. 자동 새로 고침은 사용자 상태나 타겟팅 규칙이 변경될 수 있는 장기간 실행되는 세션에 유용합니다. 일반적인 사용 사례는 브라우저 환경보다 페이지가 덜 자주 다시 로드되는 데스크톱 애플리케이션입니다.
engagement.setAutoRefreshInterval(intervalSeconds?: number): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
intervalSeconds | number | 선택 사항입니다. 자동 새로 고침을 위한 간격(초)입니다. 활성화된 경우 60초 이상이어야 합니다. 값을 지정하지 않거나 0또는 음수를 지정하면 SDK에서 자동 새로 고침을 비활성화합니다. |
// Set auto-refresh to every hour
window.engagement.setAutoRefreshInterval(3600);
// Set auto-refresh to every 30 minutes
window.engagement.setAutoRefreshInterval(1800);
// Disable auto-refresh
window.engagement.setAutoRefreshInterval(0);
또한 다음 autoRefreshIntervalSeconds옵션을 설정하여 부팅 다음 기간동안 자동 새로 고침을 활성화할 수 있습니다.
await window.engagement.boot({
user: {
user_id: "user123",
device_id: "device456",
},
autoRefreshIntervalSeconds: 3600,
});
최소 간격
자동 새로 고침 간격은 60초 이상이어야 합니다. 60초 미만의 값을 지정하면 SDK는 자동 새로 고침을 비활성화하고 경고를 기록합니다.
SDK 메서드 스타일 지정
테마 관리
앱이 밝은 모드와 어두운 모드를 지원하는 경우 시각적 테마 모드를 구성하십시오.
engagement.setThemeMode(mode: ThemeMode): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
mode | lightMode, darkMode, auto | 필수입니다. 적용할 테마를 선택합니다. |
// Automatically detect user's system preferences
window.engagement.setThemeMode("auto");
// Set dark mode explicitly
window.engagement.setThemeMode("darkMode");
// Set light mode explicitly
window.engagement.setThemeMode("lightMode");
계측 SDK 방법
전달 이벤트
타사 분석 이벤트를 가이드 및 설문조사 SDK로 전달하여 On 이벤트 추적 트리거를 사용하는 가이드 및 설문조사를 트리거하세요.
engagement.forwardEvent(event: Event): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
event | 이벤트 | 필수입니다. 이벤트 객체입니다. event_type이 일치하는 경우 가이드 또는 설문조사를 트리거합니다. |
콜백 등록
가이드 및 설문조사 SDK를 사용하여 콜백을 등록하십시오. 가이드 또는 설문조사 버튼에 콜백 실행 동작을 설정하여 콜백을 실행합니다.
engagement.addCallback(name: string, callback: () => void): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
name | string | 필수입니다. 가이드나 설문조사에 대한 콜백 작업을 설정할 때 이 콜백을 이름으로 참조하세요. |
callback | () => void | 필수입니다. 실행할 콜백입니다. |
window.engagement.addCallback("toggle_dark_mode", () => {
setTheme("darkMode");
window.engagement.setThemeMode("darkMode");
});
라우터 구성
가이드 및 설문조사가 단일 페이지 애플리케이션(SPA)에서 URL을 처리하는 방법을 구성합니다. 이렇게 하면 다시 로드하지 않고 URL 업데이트를 수행할 수 있습니다.
engagement.setRouter(routerFn: (url: string) => void): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
routerFn | (url: string) => void | 필수입니다. URL 변경을 처리하는 함수입니다. |
// React Router v6 implementation
import { useNavigate } from "react-router-dom";
const MyComponent = () => {
const navigate = useNavigate();
React.useEffect(() => {
window.engagement.setRouter((newUrl) => navigate(newUrl));
}, []);
};
// Angular implementation
import { Component } from "@angular/core";
import { Router } from "@angular/router";
@Component({
/* ... */
})
export class AppComponent {
constructor(private router: Router) {
window.engagement.setRouter((url: string) => {
this.router.navigateByUrl(url);
});
}
}
Angular 앱의 경우 루트 AppComponent(또는 초기화기)에서 Router 서비스와 navigateByUrl을 함께 사용하십시오. 이 메서드는 setRouter예상되는 서명과 일치하는 (url: string) => void전체 URL 문자열을 허용합니다.
URL 동작 업데이트 라우터
를 setRouter()로 구성한 후 가이드 및 설문조사 인터페이스에서 URL 동작 설정을 업데이트하십시오. 가이드나 설문조사의 전체 링크 작업에 대해 URL 동작을 라우터 사용으로 변경하세요. 동일 탭 및 새 탭 URL 동작은 구성된 라우터를 사용하지 않습니다. **'라우터 사용'**만 사용자 지정 라우터 기능을 트리거합니다.
사용자 속성 설정
현재 세션의 사용자 속성을 설정합니다. 이러한 속성을 구문과 함께 가이드 및 설문조사 콘텐츠 내의 변수로 사용하십시오@{{ property.propertyName }}.
amplitude.identify()를 사용하여 사용자 속성을 공유하는 경우에는 _setUserProperties()을 사용할 필요가 없습니다.
사용자 속성이 현재 클라이언트측 세션 다음 기간동안 그리고 가이드 및 설문조사가 표시되기 전에 로드되는지 확인하십시오. 이전 세션에서 공유된 속성은 사용할 수 없습니다.
engagement._setUserProperties(userProperties: Record<string, any>): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
userProperties | Record<string, any> | 필수입니다. 사용자 속성을 키-값 쌍으로 포함하는 객체입니다. 가이드 및 설문조사 콘텐츠에서 이러한 속성을 참조하십시오. |
예제
// Supply user properties manually through engagement SDK
const userProperties = { firstName: "john" };
engagement._setUserProperties(userProperties);
// For testing, view the current user properties
engagement._.user.user_properties;
세션 속성 설정
현재 세션의 세션 속성을 설정합니다. 세션 속성은 가이드 및 설문조사가 트리거되는 시기를 제한하는 또 다른 방법을 제공합니다. 트리거 시점에 가이드 또는 설문조사는 구성된 세션 속성 조건이 일치하는 경우에만 표시됩니다.
세션 속성이 변경되면 SDK는 표시할 수 있는 가이드나 설문조사를 확인합니다. 세션 속성은 "즉시" 트리거와 함께 작동하며 세션 속성 조건이 참이 되는 즉시 콘텐츠를 표시합니다.
engagement.setSessionProperty(key: string, value: any): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
key | string | 필수입니다. 설정할 세션 속성 키입니다. |
value | any | 필수입니다. 세션 속성에 대해 설정할 값입니다. |
기능 가용성 세션 속성
은 기능 플래그가 지정된 기능입니다. 구현에서 이 기능을 사용하려면 Amplitude 지원팀에 문의하십시오.
예제
// Various session properties to control guide/survey targeting
window.engagement.setSessionProperty("subscriptionTier", "premium");
window.engagement.setSessionProperty("isFeatureXEnabled", true);
window.engagement.setSessionProperty("userScore", 85);
가이드 및 설문조사 관리 SDK 방법
보기
특정 가이드 또는 설문조사를 표시합니다. SDK는 페이지 타겟팅을 제외한 전체 타겟팅 규칙과 제한을 무시합니다. 버튼의 onclick 핸들러에서 등의 요청 시 안내서나 설문조사를 표시하는 데 show사용합니다.
engagement.gs.show(key: string, stepIndex?: number): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
key | string | 필수입니다. 가이드 또는 설문조사의 키입니다. |
stepIndex | number | 표시할 단계의 0부터 시작하는 인덱스입니다. 제공되지 않은 경우 초기 단계가 기본값입니다. |
예: 버튼 클릭 시 표시
빌더에서 가이드 또는 설문조사 트리거를 없음으로 설정한 다음, 사용자가 해당 경험을 선택할 때 버튼의 onclick 핸들러에서 show를 호출하여 경험을 엽니다.
<button onclick="window.engagement.gs.show('my-guide-key')">Open guide</button>
모두 닫기
모든 활성 가이드 및 설문조사를 닫습니다.
engagement.gs.closeAll(): void
재설정
안내서 또는 설문조사를 특정 단계로 재설정합니다.
engagement.gs.reset(key: string, stepIndex?: number)
| 매개 변수 | 유형 | 설명 |
|---|---|---|
key | string | 필수입니다. 가이드 또는 설문조사의 키입니다. |
stepIndex | number | 필수입니다. 재설정할 단계의 0부터 시작하는 인덱스입니다. 기본값은 초기 단계입니다. |
목록
모든 라이브 가이드 및 설문조사의 목록과 해당 상태를 검색합니다.
engagement.gs.list(): Array<GuideOrSurvey>
interface GuideOrSuvey {
id: number;
status: "visible" | "active";
step: number;
title: string
}
리소스 센터 SDK 메서드
응용 프로그램 코드에서 리소스 센터 위젯을 제어하십시오. 이러한 메서드는 기본 SDK 인스턴스(window.engagement)에서만 작동합니다.
리소스 센터를 엽니다.
리소스 센터 위젯을 엽니다. 필요한 경우 특정 문서에서 직접 엽니다.
engagement.rc.open(options?: { url?: string }): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
options.url | string | 선택 사항입니다. 이 URL을 사용하여 기사(콘텐츠 항목)에서 리소스 센터를 직접 엽니다. |
// Open the Resource Center
window.engagement.rc.open();
// Open the Resource Center directly on a specific article
window.engagement.rc.open({
url: "https://help.example.com/articles/getting-started",
});
리소스 센터 닫기
리소스 센터 위젯을 닫습니다.
engagement.rc.close(): void
리소스 센터 전환
리소스 센터 위젯을 열기와 닫기 대상 구간에서 전환합니다.
engagement.rc.toggle(): void
지속된 상태 지우기
리소스 센터는 열려 있거나 최소화된 상태, 검색 쿼리, 브라우저에서 마지막으로 본 페이지와 같은 상태를 저장합니다. 이 불러오기 상태를 제거하려면 호출하십시오. 그러면 다음 페이지 로드 시 리소스 센터가 새롭게 시작됩니다clearState.
engagement.rc.clearState(): void
태그별로 콘텐츠 필터링
리소스 센터 콘텐츠를 태그별로 제한하도록 필터를 설정합니다. 이 필터는 리소스 센터 검색 결과 및 오토파일럿 개인화 추천에 적용됩니다.
engagement.setResourceCenterFilter(filter: TagFilter | null): void
| 매개 변수 | 유형 | 설명 |
|---|---|---|
filter | TagFilter 또는 null | 필수입니다. 적용할 태그 필터입니다. 필터를 제거하려면 Passnull를 전달합니다. |
TagFilter이 유형은 중첩된 AND/OR 논리를 지원합니다.
type TagFilter =
| { tags: string[] }
| { and: TagFilter[] }
| { or: TagFilter[] };
// Filter to content tagged "billing" or "payments"
window.engagement.setResourceCenterFilter({
tags: ["billing", "payments"],
});
// Complex filter with AND/OR logic
window.engagement.setResourceCenterFilter({
and: [{ tags: ["billing", "payments"] }, { tags: ["enterprise"] }],
});
// Clear the filter
window.engagement.setResourceCenterFilter(null);
여러 SDK 인스턴스
동일한 페이지에서 여러 개의 격리된 가이드 및 설문조사 SDK 인스턴스를 실행하세요. 단일 페이지가 둘 이상의 Amplitude 프로젝트에서 콘텐츠를 로드해야 할 때 이 옵션을 사용하십시오. 예를 들어 자체 가이드 및 설문조사와 함께 테넌트별 경험을 포함하는 호스트 애플리케이션이 있습니다.
각 명명된 인스턴스는 고유한 API 키, 구성, 타겟팅 데이터, 최종 사용자 상태 및 분석 라우팅을 갖습니다. 기본 인스턴스인 window.engagement는 변경되지 않고 계속 작동하며 이전 버전과도 호환됩니다.
iframe과는 별개로,
여러 SDK 인스턴스가 동일한 브라우저 창에서 실행됩니다. iframe을 사용하는 응용 프로그램의 경우 iframe 지원 및 제한 사항을 검토하십시오. iframe은 별도의 window 객체를 가지고 있기 때문에 각 iframe은 여전히 자체 SDK를 설치해야 합니다.
격리 작동 방식
각 명명된 인스턴스는 다음을 자체적으로 유지합니다:
- 인스턴스의 API 키를 사용하여 가져온 구성 및 타겟팅(결정) 데이터입니다.
- Valtio 스토어 및 최종 사용자 스토어.
- 가이드 및 설문조사를 렌더링하기 위한 DOM 컨테이너입니다.
- 분석 연동 라우팅을 통해 이벤트가 인스턴스 간에 유출되지 않습니다.
- 스타일 지정 및 테마 변수.
localStorage키는 API 키에 의해 범위가 지정됩니다.
모든 인스턴스는 페이지의 단일 #engagement-wrapper 요소를 공유합니다. 기본 인스턴스는 #engagement-container로 렌더링됩니다. 각 명명된 인스턴스는 #engagement-container-{instanceName}로 렌더링됩니다.
제한 사항
- 독립형 설치 필요: SDK 번들을 로드한 후
createInstance로 명명된 인스턴스를 생성하십시오. Amplitude Browser SDK 2 플러그인 및 Amplitude Browser 통합 SDK 경로는 기본 인스턴스만 관리합니다. - 먼저 기본 인스턴스가 필요합니다.
createInstance를 호출하기 전에 기본 인스턴스(window.engagement)를 생성하고 부트하십시오. 기본 인스턴스는createInstance를 노출시킵니다. - 가이드 및 설문조사에만 해당: 명명된 인스턴스는 가이드(체크리스트 포함)와 설문조사를 지원합니다. 리소스 센터 및 도우미는 기본 인스턴스에서만 지원됩니다.
- 고유한 인스턴스 이름: 각 명명된 인스턴스는 고유한
instanceName를 가져야 합니다. 기존 이름으로 인스턴스를 생성하면 이전 이름을 덮어쓰고 경고가 기록됩니다. - 독립적 타겟팅: 각 인스턴스는 자체 타겟팅 데이터를 가져오고 트리거를 독립적으로 평가합니다. 다단계 투어는 인스턴스 간에 조정할 수 없습니다.
- 독립적인 사용자 ID: 각 인스턴스는 자체적으로 최종 사용자 상태를 관리합니다. 인스턴스가 사용자를 공유하도록 하려면 각
boot호출에 동일한user_id또는device_id을 전달하십시오.
인스턴스 생성
기본 SDK에서 createInstance 을 호출하여 명명된 인스턴스를 추가로 생성합니다. 이 메서드는 새 인스턴스로 해석되는 Promise 을 반환합니다. 반환된 인스턴스에서 boot 을 호출하여 사용자를 식별하고 인스턴스를 활성화합니다.
window.engagement.createInstance(instanceName: string, apiKey: string, options?: InitOptions): Promise<EngagementSDK>
| 매개 변수 | 유형 | 설명 |
|---|---|---|
instanceName | string | 필수입니다. 이 인스턴스의 고유 이름입니다. 기본 인스턴스용으로 예약된 $default을(를) 사용하지 마십시오. |
apiKey | string | 필수입니다. 이 인스턴스가 데이터를 전송하는 Amplitude 프로젝트의 API 키입니다. |
options | InitOptions | 선택 사항입니다. 첫 번째 인수에서 설정되는 init를 제외하고 instanceName에서 허용하는 것과 동일한 옵션입니다. 각 인스턴스는 자체 프록시 URL, 로케일, 로그 수준 및 기타 초기화 옵션을 사용할 수 있습니다. |
예: 두 번째 인스턴스 생성 및 부트
const tenantB = await window.engagement.createInstance(
"tenant-b",
"API_KEY_FOR_TENANT_B",
{
serverZone: "US",
locale: "fr",
},
);
await tenantB.boot({
user: {
user_id: "user-456",
},
integrations: [
{
track: (event) => {
amplitude.track(event.event_type, event.event_properties);
},
},
],
});
부팅 후, 기본 인스턴스에서와 마찬가지로 반환된 인스턴스에서 SDK 메서드를 호출하십시오.
tenantB.gs.show("tenant-b-onboarding");
tenantB.gs.closeAll();
tenantB.setThemeMode("darkMode");
기존 인스턴스 가져오기
기본 SDK를 호출하여 이전에 생성된 인스턴스를 이름별로 검색합니다getInstance. 인스턴스가 존재하지 않는 경우 undefined반환됩니다.
window.engagement.getInstance(instanceName?: string): EngagementSDK | undefined
| 매개 변수 | 유형 | 설명 |
|---|---|---|
instanceName | string | 선택 사항입니다. 검색할 인스턴스의 이름입니다. 이 인수를 생략하거나 전달하여 기본 인스턴스를 가져옵니다$default. |
const tenantB = window.engagement.getInstance("tenant-b");
if (tenantB) {
tenantB.gs.show("tenant-b-welcome");
}
활성 인스턴스 나열
기본 SDK를 호출하여 기본값을 포함한 모든 활성 인스턴스의 이름을 가져옵니다listInstances.
window.engagement.listInstances(): string[]
// Returns something like ['$default', 'tenant-b']
const instanceNames = window.engagement.listInstances();
명명된 인스턴스 종료
명명된 인스턴스에서 shutdown를 호출하여 이를 중지하고 레지스트리에서 제거합니다. 종료 후 getInstance는 더 이상 인스턴스를 반환하지 않습니다. 기본 인스턴스에서 shutdown를 호출해도 레지스트리에서 제거되지는 않습니다.
const tenantB = window.engagement.getInstance("tenant-b");
tenantB?.shutdown();
이 내용이 도움이 되었나요?