mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 12:08:01 +00:00
# Pull Request Template ## Description This PR introduces basic customization options for the CSAT survey: * **Display Type**: Option to use star ratings instead of emojis. * **Message Text**: Customize the survey message (up to 200 characters). * **Survey Rules**: Send surveys based on labels — trigger when a conversation has or doesn't have a specific label. Fixes https://linear.app/chatwoot/document/improve-csat-responses-a61cf30e054e ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Loom videos **Website Channel (Widget)** https://www.loom.com/share/7f47836cde7940ae9d17b7997d060a18?sid=aad2ad0a-140a-4a09-8829-e01fa2e102c5 **Email Channel (Survey link)** https://www.loom.com/share/e92f4c4c0f73417ba300a25885e093ce?sid=4bb006f0-1c2a-4352-a232-8bf684e3d757 ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Pranav <pranavrajs@gmail.com>
170 lines
3.7 KiB
JavaScript
170 lines
3.7 KiB
JavaScript
export const MESSAGE_STATUS = {
|
|
FAILED: 'failed',
|
|
SENT: 'sent',
|
|
DELIVERED: 'delivered',
|
|
READ: 'read',
|
|
PROGRESS: 'progress',
|
|
};
|
|
|
|
export const MESSAGE_TYPE = {
|
|
INCOMING: 0,
|
|
OUTGOING: 1,
|
|
ACTIVITY: 2,
|
|
TEMPLATE: 3,
|
|
};
|
|
|
|
export const CONVERSATION_STATUS = {
|
|
OPEN: 'open',
|
|
RESOLVED: 'resolved',
|
|
PENDING: 'pending',
|
|
SNOOZED: 'snoozed',
|
|
};
|
|
|
|
export const CONVERSATION_PRIORITY = {
|
|
URGENT: 'urgent',
|
|
HIGH: 'high',
|
|
LOW: 'low',
|
|
MEDIUM: 'medium',
|
|
};
|
|
|
|
export const CONVERSATION_PRIORITY_ORDER = {
|
|
urgent: 4,
|
|
high: 3,
|
|
medium: 2,
|
|
low: 1,
|
|
};
|
|
|
|
// Size in mega bytes
|
|
export const MAXIMUM_FILE_UPLOAD_SIZE = 40;
|
|
export const MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL = 5;
|
|
|
|
export const ALLOWED_FILE_TYPES =
|
|
'image/*,' +
|
|
'audio/*,' +
|
|
'video/*,' +
|
|
'.3gpp,' +
|
|
'text/csv, text/plain, application/json, application/pdf, text/rtf,' +
|
|
'application/xml, text/xml,' +
|
|
'application/zip, application/x-7z-compressed application/vnd.rar application/x-tar,' +
|
|
'application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/vnd.oasis.opendocument.text,' +
|
|
'application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,' +
|
|
'application/vnd.openxmlformats-officedocument.wordprocessingml.document,';
|
|
|
|
export const ALLOWED_FILE_TYPES_FOR_TWILIO_WHATSAPP =
|
|
'image/png, image/jpeg,' +
|
|
'audio/mpeg, audio/opus, audio/ogg, audio/amr,' +
|
|
'video/mp4,' +
|
|
'application/pdf,';
|
|
// https://developers.line.biz/en/reference/messaging-api/#image-message, https://developers.line.biz/en/reference/messaging-api/#video-message
|
|
export const ALLOWED_FILE_TYPES_FOR_LINE = 'image/png, image/jpeg,video/mp4';
|
|
|
|
// https://developers.facebook.com/docs/instagram-platform/instagram-api-with-instagram-login/messaging-api#requirements
|
|
export const ALLOWED_FILE_TYPES_FOR_INSTAGRAM =
|
|
'image/png, image/jpeg, video/mp4, video/mov, video/webm';
|
|
|
|
export const CSAT_RATINGS = [
|
|
{
|
|
key: 'disappointed',
|
|
translationKey: 'CSAT.RATINGS.POOR',
|
|
emoji: '😞',
|
|
value: 1,
|
|
color: '#FDAD2A',
|
|
},
|
|
{
|
|
key: 'expressionless',
|
|
translationKey: 'CSAT.RATINGS.FAIR',
|
|
emoji: '😑',
|
|
value: 2,
|
|
color: '#FFC532',
|
|
},
|
|
{
|
|
key: 'neutral',
|
|
translationKey: 'CSAT.RATINGS.AVERAGE',
|
|
emoji: '😐',
|
|
value: 3,
|
|
color: '#FCEC56',
|
|
},
|
|
{
|
|
key: 'grinning',
|
|
translationKey: 'CSAT.RATINGS.GOOD',
|
|
emoji: '😀',
|
|
value: 4,
|
|
color: '#6FD86F',
|
|
},
|
|
{
|
|
key: 'smiling',
|
|
emoji: '😍',
|
|
translationKey: 'CSAT.RATINGS.EXCELLENT',
|
|
value: 5,
|
|
color: '#44CE4B',
|
|
},
|
|
];
|
|
|
|
export const CSAT_DISPLAY_TYPES = {
|
|
EMOJI: 'emoji',
|
|
STAR: 'star',
|
|
};
|
|
|
|
export const AUDIO_FORMATS = {
|
|
WEBM: 'audio/webm',
|
|
OGG: 'audio/ogg',
|
|
MP3: 'audio/mp3',
|
|
WAV: 'audio/wav',
|
|
};
|
|
|
|
export const MESSAGE_VARIABLES = [
|
|
{
|
|
label: 'Conversation Id',
|
|
key: 'conversation.id',
|
|
},
|
|
{
|
|
label: 'Contact Id',
|
|
key: 'contact.id',
|
|
},
|
|
{
|
|
label: 'Contact name',
|
|
key: 'contact.name',
|
|
},
|
|
{
|
|
label: 'Contact first name',
|
|
key: 'contact.first_name',
|
|
},
|
|
{
|
|
label: 'Contact last name',
|
|
key: 'contact.last_name',
|
|
},
|
|
{
|
|
label: 'Contact email',
|
|
key: 'contact.email',
|
|
},
|
|
{
|
|
label: 'Contact phone',
|
|
key: 'contact.phone',
|
|
},
|
|
{
|
|
label: 'Agent name',
|
|
key: 'agent.name',
|
|
},
|
|
{
|
|
label: 'Agent first name',
|
|
key: 'agent.first_name',
|
|
},
|
|
{
|
|
label: 'Agent last name',
|
|
key: 'agent.last_name',
|
|
},
|
|
{
|
|
label: 'Agent email',
|
|
key: 'agent.email',
|
|
},
|
|
];
|
|
|
|
export const ATTACHMENT_ICONS = {
|
|
image: 'image',
|
|
audio: 'headphones-sound-wave',
|
|
video: 'video',
|
|
file: 'document',
|
|
location: 'location',
|
|
fallback: 'link',
|
|
};
|