Назначение всех задач о пропущенном на одного пользователя

В этом примере, все задачи о пропущенном назначаются на одного и того же пользователя.

Для работы функции отключите создание задач в настройках интеграции amoCRM.

При создании функции необходимо выбрать “Пропущен входящий”.

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

const AMO_USER_ID = 99999; // укажите ID пользователя в amoCRM
const TASK_DUE = 60*60*1; // 1 час в секундах

module.exports = async (args) => {

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

        const amoApi = new SipuniAmoCrm({ 
          domain: args.settings.domain, accessToken: args.crm_auth 
        });
      
        // Поиск незавершенной задачи для этого пользователя и заданного контакта
        const existing = await amoApi.tasks.list({
            'filter[responsible_user_id]': AMO_USER_ID,
            'filter[is_completed]': 0,
            'filter[entity_type]': 'contacts',
            'filter[entity_id]': args.context.contact_id,
        });

        if (!existing) {
            const timestamp = Math.ceil((new Date()).getTime()/1000);
            const task = await amoApi.tasks.create({
                entity_id: args.context.contact_id,
                entity_type: 'contacts',
                text: 'Перезвонить',
                complete_till: timestamp + TASK_DUE,
                responsible_user_id: AMO_USER_ID,
            });
        }
    }
};

В этом примере используется args.context.contact_id Интеграция Sipuni с amoCRM создает поле contact_id в объекте context, если найден существующий контакт или при создании нового контакта. Это позволяет не делать поиск контакта в этой функции.