mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 03:57:52 +00:00
feat: Adds automation view for assigning an agent (#6131)
* feat: Adds automation view for assigning an agent Co-authored-by: Tejaswini Chile <tejaswini@chatwoot.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
@@ -97,8 +97,9 @@ export const generateConditionOptions = (options, key = 'id') => {
|
||||
});
|
||||
};
|
||||
|
||||
export const getActionOptions = ({ teams, labels, type }) => {
|
||||
export const getActionOptions = ({ agents, teams, labels, type }) => {
|
||||
const actionsMap = {
|
||||
assign_agent: agents,
|
||||
assign_team: teams,
|
||||
send_email_to_team: teams,
|
||||
add_label: generateConditionOptions(labels, 'title'),
|
||||
@@ -178,7 +179,7 @@ export const getDefaultConditions = eventName => {
|
||||
export const getDefaultActions = () => {
|
||||
return [
|
||||
{
|
||||
action_name: 'assign_team',
|
||||
action_name: 'assign_agent',
|
||||
action_params: [],
|
||||
},
|
||||
];
|
||||
@@ -213,7 +214,7 @@ export const isCustomAttribute = (attrs, key) => {
|
||||
|
||||
export const generateCustomAttributes = (
|
||||
conversationAttributes = [],
|
||||
contactAttribtues = [],
|
||||
contactAttributes = [],
|
||||
conversationlabel,
|
||||
contactlabel
|
||||
) => {
|
||||
@@ -228,14 +229,14 @@ export const generateCustomAttributes = (
|
||||
...conversationAttributes
|
||||
);
|
||||
}
|
||||
if (contactAttribtues.length) {
|
||||
if (contactAttributes.length) {
|
||||
customAttributes.push(
|
||||
{
|
||||
key: `contact_custom_attribute`,
|
||||
name: contactlabel,
|
||||
disabled: true,
|
||||
},
|
||||
...contactAttribtues
|
||||
...contactAttributes
|
||||
);
|
||||
}
|
||||
return customAttributes;
|
||||
|
||||
@@ -250,8 +250,8 @@ export default {
|
||||
};
|
||||
},
|
||||
getActionDropdownValues(type) {
|
||||
const { labels, teams } = this;
|
||||
return getActionOptions({ labels, teams, type });
|
||||
const { agents, labels, teams } = this;
|
||||
return getActionOptions({ agents, labels, teams, type });
|
||||
},
|
||||
manifestCustomAttributes() {
|
||||
const conversationCustomAttributesRaw = this.$store.getters[
|
||||
|
||||
@@ -187,7 +187,7 @@ export default {
|
||||
],
|
||||
actions: [
|
||||
{
|
||||
action_name: 'assign_team',
|
||||
action_name: 'assign_agent',
|
||||
action_params: [],
|
||||
},
|
||||
],
|
||||
|
||||
@@ -30,6 +30,11 @@ export const AUTOMATIONS = {
|
||||
},
|
||||
],
|
||||
actions: [
|
||||
{
|
||||
key: 'assign_agent',
|
||||
name: 'Assign to agent',
|
||||
attributeI18nKey: 'ASSIGN_AGENT',
|
||||
},
|
||||
{
|
||||
key: 'assign_team',
|
||||
name: 'Assign a team',
|
||||
@@ -129,6 +134,11 @@ export const AUTOMATIONS = {
|
||||
},
|
||||
],
|
||||
actions: [
|
||||
{
|
||||
key: 'assign_agent',
|
||||
name: 'Assign to agent',
|
||||
attributeI18nKey: 'ASSIGN_AGENT',
|
||||
},
|
||||
{
|
||||
key: 'assign_team',
|
||||
name: 'Assign a team',
|
||||
@@ -241,6 +251,11 @@ export const AUTOMATIONS = {
|
||||
},
|
||||
],
|
||||
actions: [
|
||||
{
|
||||
key: 'assign_agent',
|
||||
name: 'Assign to agent',
|
||||
attributeI18nKey: 'ASSIGN_AGENT',
|
||||
},
|
||||
{
|
||||
key: 'assign_team',
|
||||
name: 'Assign a team',
|
||||
@@ -311,6 +326,11 @@ export const AUTOMATION_RULE_EVENTS = [
|
||||
];
|
||||
|
||||
export const AUTOMATION_ACTION_TYPES = [
|
||||
{
|
||||
key: 'assign_agent',
|
||||
label: 'Assign to agent',
|
||||
inputType: 'search_select',
|
||||
},
|
||||
{
|
||||
key: 'assign_team',
|
||||
label: 'Assign a team',
|
||||
|
||||
@@ -214,7 +214,7 @@ describe('automationMethodsMixin', () => {
|
||||
it('getDefaultActions returns the resp default action model', () => {
|
||||
const genericActionModel = [
|
||||
{
|
||||
action_name: 'assign_team',
|
||||
action_name: 'assign_agent',
|
||||
action_params: [],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -209,7 +209,7 @@ describe('automationMethodsMixin', () => {
|
||||
|
||||
it('appendNewAction appends a new condition to the automation data property', () => {
|
||||
const action = {
|
||||
action_name: 'assign_team',
|
||||
action_name: 'assign_agent',
|
||||
action_params: [],
|
||||
};
|
||||
const data = () => {
|
||||
@@ -339,6 +339,9 @@ describe('automationMethodsMixin', () => {
|
||||
};
|
||||
};
|
||||
const computed = {
|
||||
agents() {
|
||||
return agents;
|
||||
},
|
||||
labels() {
|
||||
return labels;
|
||||
},
|
||||
@@ -419,6 +422,9 @@ describe('automationMethodsMixin', () => {
|
||||
return {};
|
||||
};
|
||||
const computed = {
|
||||
agents() {
|
||||
return agents;
|
||||
},
|
||||
labels() {
|
||||
return labels;
|
||||
},
|
||||
|
||||
@@ -104,6 +104,8 @@ module ActivityMessageHandler
|
||||
end
|
||||
|
||||
def create_assignee_change_activity(user_name)
|
||||
user_name = activity_message_ownner(user_name)
|
||||
|
||||
return unless user_name
|
||||
|
||||
content = generate_assignee_change_activity_content(user_name)
|
||||
|
||||
Reference in New Issue
Block a user