feat: 增价crisp会话客服
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
'use client';
|
||||
|
||||
import useGlobalStore from '@/config/use-global';
|
||||
import { Crisp } from 'crisp-sdk-web';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
// Configuration object for Crisp
|
||||
const CRISP_CONFIG = {
|
||||
websiteId: '47fcc1ac-9674-4ab1-9e3c-6b5666f59a38',
|
||||
autoload: false,
|
||||
};
|
||||
|
||||
/**
|
||||
* Initializes and configures the Crisp chat widget.
|
||||
* Sets user email if available and loads the widget.
|
||||
*/
|
||||
const CrispChat = () => {
|
||||
const { user } = useGlobalStore();
|
||||
|
||||
useEffect(() => {
|
||||
// Configure Crisp with the provided website ID
|
||||
try {
|
||||
Crisp.configure(CRISP_CONFIG.websiteId, {
|
||||
autoload: CRISP_CONFIG.autoload,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Failed to configure Crisp:', error);
|
||||
}
|
||||
|
||||
// Set user email and load Crisp if auth_identifier exists
|
||||
if (user?.auth_methods?.[0]?.auth_identifier) {
|
||||
try {
|
||||
Crisp.setTokenId(`${user.auth_methods[0].auth_identifier}_${user.id}`);
|
||||
Crisp.user.setEmail(user.auth_methods[0].auth_identifier);
|
||||
Crisp.load();
|
||||
} catch (error) {
|
||||
console.error('Failed to set user email or load Crisp:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup function to reset Crisp on component unmount
|
||||
return () => {
|
||||
try {
|
||||
Crisp.session.reset();
|
||||
} catch (error) {
|
||||
console.error('Failed to reset Crisp session:', error);
|
||||
}
|
||||
};
|
||||
}, [user]); // Re-run effect if user changes
|
||||
|
||||
return null; // Component does not render anything
|
||||
};
|
||||
|
||||
export default CrispChat;
|
||||
Reference in New Issue
Block a user