Case study 05 — Finesse End Call gadget

Who really ended the call?

Reporting could not tell whether a call ended because the customer hung up, because the agent used the desktop, or because the agent dropped the handset. Supervisors were guessing. A small gadget made the answer exact, and then taught me a lesson about hold.

Platform
Cisco Finesse · UCCE · CUIC
Built with
JavaScript · Finesse REST API · SQL
Shipped
Production, every agent
Now at
Version 2.2

Try it. Then try to break it.

A simulation of the agent desktop, with the gadget in it. Switch to version 2.1, consult a supervisor, end the consult, then press the button again while the customer is on hold — that is the bug agents found. Then switch to 2.2 and try the same thing.

Live demo
agent desktop · call control Talking
Caller+966 5• ••• ••21 Call typeGeneral enquiries · AR callVariable10not set
What else happens on the call
CUIC report · ended by
Call in progress The report fills in when the call ends.
Event log · newest first
    Simulation with sample data. No real system is called.

    How it decides.

    1. 01The gadget replaces the stock End buttonPressing it sends a drop through the Finesse REST API and writes a call variable on the call itself.
    2. 02The report reads the call recordCustomer and system disconnects come from the call's own disposition. A set variable means the agent used the desktop. Anything else the agent ended was the handset.
    3. 03It survives real lifeIt waits for a slow-loading desktop, recovers if the agent refreshes mid-call, and follows consult and hold states instead of assuming one call leg.

    Built in a lab, hardened by agents.

    v1 · lab

    Proven on a test system

    Drop through the API, write the variable, confirm it lands in the call record. Learned the gadget has to live in a tab for the desktop's proxy to work.

    v2 · production

    Live, with its report

    Deployed for every agent, with a report showing how each call ended. Added start-up polling and mid-call refresh recovery.

    v2.1 · states

    Consult and hold aware

    The button became "end consult" during a consult and "end" on hold. Agents found the edge: ending a held call left it stuck on hold.

    v2.2 · the fix

    Retrieve first

    The button hides while the customer is on hold, so it can only end a call that is really connected. Simple, and the report stays true.

    What I take from it.

    A reporting field is a promise. If it says the agent ended the call, every supervisor conversation built on it has to be true. The interesting part of this build was not the API call; it was the three weeks afterwards, listening to agents describe a situation I had not modelled, and choosing the fix that removed the ambiguity rather than the one that covered it up.