Добавление успешного исходящего разговора во все найденные контакты.

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

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_record_link = args.call_args.call_record_link;
    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': args.call_args.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": parseInt(args.call_args.timestamp) - parseInt(args.call_args.call_answer_timestamp),
                "source": "Sipuni",
                "link": `${call_record_link}`,
                "phone": dst_num,
                "call_status": 4, //Статус звонка. Доступные варианты: 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,
    };
};