Смена ответственного по сделке в amoCRM

При ответе сотрудником, в указанных ниже схемах, производится смена ответственного по сделке, вне зависимости от того, кто является ответственным за контакт. Статус сделки должен быть "Активный"

 

const SipuniAmoCrm = require('@sipuni/amocrm');

async function updateLeadIfOpen(api, lead_id, responsible_user_id) {
   const lead = await api.leads.get(lead_id);
   if (lead
&& lead.status_id !== 142 && lead.status_id !== 143 // у закрытых сделок статус всегда будет или 142 (успешная) или 143 (неуспешная)
&& lead.responsible_user_id !== responsible_user_id
   ) {
await api.leads.update({ id: lead_id, responsible_user_id: responsible_user_id });
return lead_id;
   }
return 0;
}

module.exports = async (args) => {

        // Список разрешенных схем
const allowedTreeNames = [
          'Входящая 1',
          'Входящая 2',
          'Входящая 3'
        ];

        if (!allowedTreeNames.includes(args.call_args.tree_name)) {
           return { reason: `Схема ${args.call_args.tree_name} не в списке разрешенных` };
        }

    // Если найден/создан контакт при поступлении звонка,
    // его ID находится в args.context.contact_id

    if (!args.context.contact_id) {
         return { new_responsible_id: -1, reason: 'Нет контакта в контексте звонка' };
    }

    const amoApi = new SipuniAmoCrm({
           domain: args.settings.domain, accessToken: args.crm_auth
    });

    // Получаем ID ответившего на звонок
    const responsible_user_id = parseInt(args.context.answered_user_id, 10);

    // Получаем список сделок
    const { contact_id } = args.context;
    const result = await amoApi.request('GET', `/contacts/${contact_id}` , { with: 'leads' });
    const { leads } = result._embedded;

    // Обновляем открытые сделки
    const promises = leads.map(lead => updateLeadifOpen(amoApi, lead.id, responsible_user_id));
    const updatedLeads = await Promise.all(promises);

    return {
       updatedLeads, // массив с результатами, включает id обновленных сделок и нули для не обновлённых
       new_responsible_id: responsible_user_id,
    };
};

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0