I flödet börjar vi med att konfigurera händelseskripten på startwidgeten. Nedan kan vi se att startwidgeten har de två konfigurerade händelseskripten.
För att skapa händelseskriptkoden lägger du till ett nytt händelseskript i startwidgeten. Sedan kan du skriva koden direkt i flödesredigeraren enligt bilden nedan.
Både händelserna "Engagement Accepted" och "Disposition Saved" använder liknande kod. De är båda enkla Javascript-kodblock som använder den inbyggda HTTP-funktionen för att generera en utgående HTTPS POST-begäran.
Skriptkod för händelsen Uppdrag accepterat
I det här kodexemplet inkluderar vi uppdrags-ID:t, uppringarens telefonnummer, agentens e-post och namnet på kön. Den här koden kommer att exekveras när agenten svarar på uppdraget och börjar prata med konsumenten. Detta är ett exempel på vad som sannolikt är den minsta mängd information som krävs för att generera information om uppringare eller för att starta loggningen av det nya samtalet. Det är värt att nämna att om din ZCC Flow-konfiguration samlar in data om uppringaren i flödet/talsvar, t.ex. deras kontonummer, fall-/ärendenummer osv., är det lika enkelt som att lägga till ytterligare variabler till request_body-variabeln för att inkludera ytterligare data i denna HTTP-begäran.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"] } const result = await req.post('https://api.example.com/acceptedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Skriptkod för händelsen Disposition sparad
För händelsen Disposition sparad återanvänder vi koden som användes i det föregående exemplet, med tillägget av variabeln disposition som läggs till på rad 9. Detta kodblock kommer att exekveras när agenten väljer disposition för samtalet, vilket sker som den sista åtgärden som agenten utför i uppdraget. Genom att skicka denna begäran kan det externa systemet spåra att agenten har slutfört dispositionen av uppdraget. Precis som för händelsen Uppdrag accepterat ovan kan ytterligare variabler inkluderas efter behov beroende på ditt användningsfall.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"], "disposition_name": var_get()["global_system.Engagement.disposition"] } const result = await req.post('https://api.example.com/dispositionedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Beroende på din lösning kanske du tycker att ovanstående skript för flödeshändelser är tillräckliga, eller så kanske du behöver några av Zoom App Marketplace API-händelserna för att täcka alla de nödvändiga användningsfallen för din integrering. Du kan till exempel komplettera de två flödeshändelserna ovan genom att prenumerera på Zoom App Marketplace API-händelser för händelserna pausa/fortsätt/inaktivera mikrofon/aktivera mikrofon. Dessa ytterligare händelser skulle ge din applikation insikt i hur ofta agenter pausar samtal eller inaktiverar mikrofonen.
Både ovanstående skript för flödeshändelser och Zoom App Marketplace Webhook/Websocket-händelserna finns tillgängliga för din lösning.