Добавление неотвеченного исходящего звонка во все найденные контакты методом.

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

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

    const dst_num = args.call_args.dst_num;
    const line_name = args.call_args.line_name;
    const operator_name = args.call_args.operator_name;
    const call_started_user_id = args.context.call_started_user_id ? args.context.call_started_user_id.id :
        6902296; // Если пользователь в амо не сапоставлен добавление звонка от администратора указывается конкретный id
    
    const result = await amoApi.request('GET', '/contacts', {
        'query': dst_num.slice(1),
        'limit': CONTACT_LIMIT,
        'with': 'leads'
    });

    let contacts = [];
    if (result)
        contacts = result._embedded.contacts;
    else
        return { error: "Не найден контакт" }

    // // создание заметки о пропущенном во все найденные контакты.
    const data = contacts.map(contact => {
        return {
            "entity_id": contact.id,
            "note_type": "call_out",//call_in
            "params": {
                "uniq": args.call_args.call_id,
                "duration": 0,
                "source": "Sipuni",
                "phone": dst_num,
                "call_status": 6,// Статус звонка. Доступные варианты: 1 – оставил сообщение, 2 – перезвонить позже, 3 – нет на месте, 4 – разговор состоялся, 5 – неверный номер, 6 – Не дозвонился, 7 – номер занят. Необязательный параметр
                call_result: `${dst_num} Через номер: ${line_name} `,
            },
            "created_by": parseInt(call_started_user_id),

        }
    });


    const res = await axios.post(`https://${args.settings.domain}/api/v4/contacts/notes`, data, {
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${args.crm_auth}`,
        }
    });

    return {
        notes: res.data._embedded.notes.map(note => { return { id: note.id, entity_id: note.entity_id } }),
         operator_name,
        call_started_user_id,
    };
};