mirror of
https://github.com/langgenius/dify.git
synced 2025-12-19 17:27:16 -05:00
feat: add Amplitude API key to Docker entrypoint script (#29477)
Co-authored-by: CodingOnStar <hanxujiang@dify.ai>
This commit is contained in:
@@ -136,6 +136,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
||||||
APP_API_URL: ${APP_API_URL:-}
|
APP_API_URL: ${APP_API_URL:-}
|
||||||
|
AMPLITUDE_API_KEY: ${AMPLITUDE_API_KEY:-}
|
||||||
NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-}
|
NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-}
|
||||||
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
|
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
|
||||||
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
|
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
|
||||||
|
|||||||
@@ -773,6 +773,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
||||||
APP_API_URL: ${APP_API_URL:-}
|
APP_API_URL: ${APP_API_URL:-}
|
||||||
|
AMPLITUDE_API_KEY: ${AMPLITUDE_API_KEY:-}
|
||||||
NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-}
|
NEXT_PUBLIC_COOKIE_DOMAIN: ${NEXT_PUBLIC_COOKIE_DOMAIN:-}
|
||||||
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
|
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
|
||||||
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
|
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
|
||||||
|
|||||||
@@ -70,3 +70,6 @@ NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX=false
|
|||||||
|
|
||||||
# The maximum number of tree node depth for workflow
|
# The maximum number of tree node depth for workflow
|
||||||
NEXT_PUBLIC_MAX_TREE_DEPTH=50
|
NEXT_PUBLIC_MAX_TREE_DEPTH=50
|
||||||
|
|
||||||
|
# The api key of amplitude
|
||||||
|
NEXT_PUBLIC_AMPLITUDE_API_KEY=
|
||||||
|
|||||||
@@ -11,13 +11,19 @@ export type IAmplitudeProps = {
|
|||||||
sessionReplaySampleRate?: number
|
sessionReplaySampleRate?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if Amplitude should be enabled
|
||||||
|
export const isAmplitudeEnabled = () => {
|
||||||
|
const apiKey = process.env.NEXT_PUBLIC_AMPLITUDE_API_KEY
|
||||||
|
return IS_CLOUD_EDITION && !!apiKey
|
||||||
|
}
|
||||||
|
|
||||||
const AmplitudeProvider: FC<IAmplitudeProps> = ({
|
const AmplitudeProvider: FC<IAmplitudeProps> = ({
|
||||||
apiKey = process.env.NEXT_PUBLIC_AMPLITUDE_API_KEY ?? '',
|
apiKey = process.env.NEXT_PUBLIC_AMPLITUDE_API_KEY ?? '',
|
||||||
sessionReplaySampleRate = 1,
|
sessionReplaySampleRate = 1,
|
||||||
}) => {
|
}) => {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Only enable in Saas edition
|
// Only enable in Saas edition with valid API key
|
||||||
if (!IS_CLOUD_EDITION)
|
if (!isAmplitudeEnabled())
|
||||||
return
|
return
|
||||||
|
|
||||||
// Initialize Amplitude
|
// Initialize Amplitude
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
export { default } from './AmplitudeProvider'
|
export { default, isAmplitudeEnabled } from './AmplitudeProvider'
|
||||||
export { resetUser, setUserId, setUserProperties, trackEvent } from './utils'
|
export { resetUser, setUserId, setUserProperties, trackEvent } from './utils'
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import * as amplitude from '@amplitude/analytics-browser'
|
import * as amplitude from '@amplitude/analytics-browser'
|
||||||
|
import { isAmplitudeEnabled } from './AmplitudeProvider'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Track custom event
|
* Track custom event
|
||||||
@@ -6,6 +7,8 @@ import * as amplitude from '@amplitude/analytics-browser'
|
|||||||
* @param eventProperties Event properties (optional)
|
* @param eventProperties Event properties (optional)
|
||||||
*/
|
*/
|
||||||
export const trackEvent = (eventName: string, eventProperties?: Record<string, any>) => {
|
export const trackEvent = (eventName: string, eventProperties?: Record<string, any>) => {
|
||||||
|
if (!isAmplitudeEnabled())
|
||||||
|
return
|
||||||
amplitude.track(eventName, eventProperties)
|
amplitude.track(eventName, eventProperties)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,6 +17,8 @@ export const trackEvent = (eventName: string, eventProperties?: Record<string, a
|
|||||||
* @param userId User ID
|
* @param userId User ID
|
||||||
*/
|
*/
|
||||||
export const setUserId = (userId: string) => {
|
export const setUserId = (userId: string) => {
|
||||||
|
if (!isAmplitudeEnabled())
|
||||||
|
return
|
||||||
amplitude.setUserId(userId)
|
amplitude.setUserId(userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,6 +27,8 @@ export const setUserId = (userId: string) => {
|
|||||||
* @param properties User properties
|
* @param properties User properties
|
||||||
*/
|
*/
|
||||||
export const setUserProperties = (properties: Record<string, any>) => {
|
export const setUserProperties = (properties: Record<string, any>) => {
|
||||||
|
if (!isAmplitudeEnabled())
|
||||||
|
return
|
||||||
const identifyEvent = new amplitude.Identify()
|
const identifyEvent = new amplitude.Identify()
|
||||||
Object.entries(properties).forEach(([key, value]) => {
|
Object.entries(properties).forEach(([key, value]) => {
|
||||||
identifyEvent.set(key, value)
|
identifyEvent.set(key, value)
|
||||||
@@ -33,5 +40,7 @@ export const setUserProperties = (properties: Record<string, any>) => {
|
|||||||
* Reset user (e.g., when user logs out)
|
* Reset user (e.g., when user logs out)
|
||||||
*/
|
*/
|
||||||
export const resetUser = () => {
|
export const resetUser = () => {
|
||||||
|
if (!isAmplitudeEnabled())
|
||||||
|
return
|
||||||
amplitude.reset()
|
amplitude.reset()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ export NEXT_PUBLIC_SENTRY_DSN=${SENTRY_DSN}
|
|||||||
export NEXT_PUBLIC_SITE_ABOUT=${SITE_ABOUT}
|
export NEXT_PUBLIC_SITE_ABOUT=${SITE_ABOUT}
|
||||||
export NEXT_TELEMETRY_DISABLED=${NEXT_TELEMETRY_DISABLED}
|
export NEXT_TELEMETRY_DISABLED=${NEXT_TELEMETRY_DISABLED}
|
||||||
|
|
||||||
|
export NEXT_PUBLIC_AMPLITUDE_API_KEY=${AMPLITUDE_API_KEY}
|
||||||
|
|
||||||
export NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=${TEXT_GENERATION_TIMEOUT_MS}
|
export NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=${TEXT_GENERATION_TIMEOUT_MS}
|
||||||
export NEXT_PUBLIC_CSP_WHITELIST=${CSP_WHITELIST}
|
export NEXT_PUBLIC_CSP_WHITELIST=${CSP_WHITELIST}
|
||||||
export NEXT_PUBLIC_ALLOW_EMBED=${ALLOW_EMBED}
|
export NEXT_PUBLIC_ALLOW_EMBED=${ALLOW_EMBED}
|
||||||
|
|||||||
Reference in New Issue
Block a user