Смена ответственного по определенным схемам

У клиента много разных офисов и не все сотрудники работаю в амо.

Если секретарь офиса который работает в амо не ответил на звонок, то звонок распределяется на других сотрудников или в другой офис.

Но аналитика в амо числится именной за тем офисом в который позвонили т.к. ответственный будет именно тот сотрудник в чей офис позвонили.

Стандартной интеграцией создали контакт/сделку или нашли существующий контакт/сделку и по завершению звонка не важно кто ответил на звонок будет ответственный тот кто закреплен за этим офисом.

Нужно заменить, точное название схемы, без пробелов, и id пользователей(ответственных секретарей).

Добавить код можно в завершающие этапы звонков:

  • Пропущен входящий
  • Завершен входящий разговор
const SipuniAmoCrm = require('@sipuni/amocrm');

const SCHEME_TO_RESPONSIBLE = { // сопоставление названия схемы и ID ответственного в амо по ней
    "Входящая №1": 123456,
    "Исходящая №1": 123456,

    "Входящая №2": 341235,
    "Исходящая №2": 341235,

    "Входящая №3": 55577788,
    "Исходящая №3": 55577788,

    
};

module.exports = async (args) => {

    if (!SCHEME_TO_RESPONSIBLE[args.call_args.tree_name]) {
        return `схема ${args.call_args.tree_name} не в списке`;
    }

    const amoApi = new SipuniAmoCrm({ domain: args.settings.domain, accessToken: args.crm_auth });
    const leadCreated = args.context.already_created_deal;
    const leadId = parseInt(args.context.deal_id);
    const contactCreated = args.context.contact_created;
    const contactId = parseInt(args.context.contact_id);

    let lead;
    let contact;

    if (leadCreated) {
        lead = amoApi.leads.update({
            "id": leadId,
            "responsible_user_id": SCHEME_TO_RESPONSIBLE[args.call_args.tree_name],
        });
    }
    if (contactCreated) {
        contact = amoApi.contacts.update({
            "id": contactId,
            "responsible_user_id": SCHEME_TO_RESPONSIBLE[args.call_args.tree_name],
        });
    }

    if (contact) {
        if (lead) {
            return {
                contactId,
                leadId,
                "new_responsible_id": SCHEME_TO_RESPONSIBLE[args.call_args.tree_name],
            };
        } else {
            return {
                contactId,
                "new_responsible_id": SCHEME_TO_RESPONSIBLE[args.call_args.tree_name],
            };
        }
    } else {
        if (lead) {
            return {
                leadId,
                "new_responsible_id": SCHEME_TO_RESPONSIBLE[args.call_args.tree_name],
            };
        }
    }
};