mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 19:17:48 +00:00 
			
		
		
		
	 0a2fd7b1f4
			
		
	
	0a2fd7b1f4
	
	
	
		
			
			<img width="989" alt="Screenshot 2025-02-05 at 6 34 12 PM" src="https://github.com/user-attachments/assets/ae811842-23f7-4bbc-8a42-7cbe4849d287" /> View heatmaps for last 30 days based on the filter.
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* global axios */
 | |
| import ApiClient from './ApiClient';
 | |
| 
 | |
| const getTimeOffset = () => -new Date().getTimezoneOffset() / 60;
 | |
| 
 | |
| class ReportsAPI extends ApiClient {
 | |
|   constructor() {
 | |
|     super('reports', { accountScoped: true, apiVersion: 'v2' });
 | |
|   }
 | |
| 
 | |
|   getReports({
 | |
|     metric,
 | |
|     from,
 | |
|     to,
 | |
|     type = 'account',
 | |
|     id,
 | |
|     groupBy,
 | |
|     businessHours,
 | |
|   }) {
 | |
|     return axios.get(`${this.url}`, {
 | |
|       params: {
 | |
|         metric,
 | |
|         since: from,
 | |
|         until: to,
 | |
|         type,
 | |
|         id,
 | |
|         group_by: groupBy,
 | |
|         business_hours: businessHours,
 | |
|         timezone_offset: getTimeOffset(),
 | |
|       },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   // eslint-disable-next-line default-param-last
 | |
|   getSummary(since, until, type = 'account', id, groupBy, businessHours) {
 | |
|     return axios.get(`${this.url}/summary`, {
 | |
|       params: {
 | |
|         since,
 | |
|         until,
 | |
|         type,
 | |
|         id,
 | |
|         group_by: groupBy,
 | |
|         business_hours: businessHours,
 | |
|         timezone_offset: getTimeOffset(),
 | |
|       },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getConversationMetric(type = 'account', page = 1) {
 | |
|     return axios.get(`${this.url}/conversations`, {
 | |
|       params: {
 | |
|         type,
 | |
|         page,
 | |
|       },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getAgentReports({ from: since, to: until, businessHours }) {
 | |
|     return axios.get(`${this.url}/agents`, {
 | |
|       params: { since, until, business_hours: businessHours },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getConversationTrafficCSV({ daysBefore = 6 } = {}) {
 | |
|     return axios.get(`${this.url}/conversation_traffic`, {
 | |
|       params: { timezone_offset: getTimeOffset(), days_before: daysBefore },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getLabelReports({ from: since, to: until, businessHours }) {
 | |
|     return axios.get(`${this.url}/labels`, {
 | |
|       params: { since, until, business_hours: businessHours },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getInboxReports({ from: since, to: until, businessHours }) {
 | |
|     return axios.get(`${this.url}/inboxes`, {
 | |
|       params: { since, until, business_hours: businessHours },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getTeamReports({ from: since, to: until, businessHours }) {
 | |
|     return axios.get(`${this.url}/teams`, {
 | |
|       params: { since, until, business_hours: businessHours },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getBotMetrics({ from, to } = {}) {
 | |
|     return axios.get(`${this.url}/bot_metrics`, {
 | |
|       params: { since: from, until: to },
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   getBotSummary({ from, to, groupBy, businessHours } = {}) {
 | |
|     return axios.get(`${this.url}/bot_summary`, {
 | |
|       params: {
 | |
|         since: from,
 | |
|         until: to,
 | |
|         type: 'account',
 | |
|         group_by: groupBy,
 | |
|         business_hours: businessHours,
 | |
|       },
 | |
|     });
 | |
|   }
 | |
| }
 | |
| 
 | |
| export default new ReportsAPI();
 |