/** * RAYNET CRM: zalozeni poptavky (lead). * * Sluzba: https://services.csbot.cz/apps/raynet * Endpoint: POST /lead * * Navazuje na `raynet.find-company`: kdyz firma existuje, poptavka se na ni * naveze, jinak vznikne bez vazby a doplni ji obchodnik. Zakladat firmu tady * zamerne neumime - to je rozhodnuti, ktere ma udelat clovek. */ export const manifest = { id: 'raynet.create-lead', name: 'Založit poptávku', description: 'Vytvoří v RAYNETu novou poptávku. Volitelně ji naváže na už dohledanou firmu ' + 'a kontaktní osobu.', inputs: [ { id: 'topic', label: 'Předmět poptávky', type: 'string', required: true, hint: 'To, co obchodník uvidí v seznamu. Například: Poptávka z webu, {{subject}}.', }, { id: 'description', label: 'Popis', type: 'string', required: false, multiline: true, hint: 'Celý text poptávky, typicky obsah e-mailu nebo formuláře.', }, { id: 'companyId', label: 'ID firmy', type: 'number', required: false, hint: 'Vrací ho krok Dohledat firmu.', }, { id: 'personId', label: 'ID kontaktní osoby', type: 'number', required: false, hint: 'Vrací ho krok Založit nebo aktualizovat kontakt.', }, { id: 'ownerId', label: 'ID vlastníka', type: 'number', required: false, hint: 'Uživatel RAYNETu, kterému poptávka připadne. Bez něj rozhodne RAYNET.', }, { id: 'priority', label: 'Priorita', type: 'string', required: false, options: [ { value: 'LOW', label: 'Nízká' }, { value: 'NORMAL', label: 'Normální' }, { value: 'HIGH', label: 'Vysoká' }, ], }, ], outputs: [ { id: 'leadId', label: 'ID poptávky', type: 'number', required: true }, { id: 'topic', label: 'Předmět poptávky', type: 'string', required: true }, ], }; export async function run(inputs, ctx) { const { unwrap, pick, num, need } = ctx.util; const payload = { topic: inputs.topic }; if (inputs.description) payload.description = inputs.description; if (inputs.companyId !== null) payload.company = { id: inputs.companyId }; if (inputs.personId !== null) payload.person = { id: inputs.personId }; if (inputs.ownerId !== null) payload.owner = { id: inputs.ownerId }; if (inputs.priority) payload.priority = inputs.priority; const { body } = await ctx.http.post('/lead', payload); const id = need(num(pick(unwrap(body), 'id')), 'ID poptávky'); ctx.log(`Založena poptávka ${id}.`); return { leadId: id, topic: inputs.topic }; }