Создание задачи на отвественного за контакт.

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

const TASK_DUE = 60 * 15 * 1; // 1 час в секундах
const TASK_TEXT = 'Пропущенный звонок'; // заполняем если у задачи нет текста

module.exports = async (args) => {

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

    let task = null;
    let taskIds = null;
    const contact_id = parseInt(args.context.contact_id); //Если найден/создан контакт при поступлении звонка, его ID находится в args.context.contact_id
    const contact_responsible_id = parseInt(args.context.contact_responsible_id);

    const timestamp = Math.ceil((new Date()).getTime() / 1000);

    const existingTasks = await amoApi.tasks.list({
        'filter[is_completed]': 0,
        'filter[entity_type]': 'contacts',
        'filter[entity_id]': contact_id,
        'filter[task_type_id]': 2393295, //фильтрация по касомному типу задач
        'filter[responsible_user_id]': contact_responsible_id,
    });
    if (existingTasks) {
        taskIds = existingTasks.map(function (task) { return task.id; })

    } else {
        task = await amoApi.tasks.create({
            entity_id: contact_id,
            entity_type: 'contacts',
            task_type_id: 2393295, //id кастомного типа задач
            text: TASK_TEXT,
            complete_till: timestamp + TASK_DUE,
            responsible_user_id: contact_responsible_id,
        });
    }
    return {
        taskIds,
        task,
        contact_id
    };
}