Skip to content

Case study · 2026

Call Automation Platform

Every client call routed, recorded, transcribed, and filed — without anyone typing a note.

Azure Communication ServicesAzure FunctionsEvent GridAzure SpeechLive transcriptionAzure OpenAILogic AppsMicrosoft TeamsAutotask PSAAzure Static Web Apps
Notes typed by hand
0
Live and post-call
2 modes
One number
2-way
Every stage
Idempotent

The problem

What it was like before

Every support call produces work after the call ends. Someone has to remember what was agreed, write it up while it is still fresh, find the right ticket, and file it. In practice that happens at the end of the day, from memory, or not at all — and the note that reaches the client is thinner than the conversation was.

The billing consequence is worse than the documentation one. Time that is not written down is time that is not billed, and a ticket with no note is a ticket nobody can hand to a colleague.

We also had no view of calls as they were happening. Who is on a call, with whom, for how long, and whether the pipeline behind it is healthy — all of that was only knowable afterwards, by looking.

Built for

Built and run in-house at E3 IT Services, and deployable for clients

Two ways to run it

Help during the call, documentation after it

Most systems in this space only look at the recording once everyone has hung up. This one works while the conversation is still happening — and you can run either mode, or both together.

While the call is happening

Live mode

The call is transcribed as it happens and an assistant works alongside whoever is on the line, surfacing what the caller is saying and the detail behind it in real time. Nobody has to interrupt the customer to catch up.

  • Live transcription of the caller streamed to the engineer as they speak, so a detail missed is a detail scrolled back to, not asked for twice
  • An assistant reads the conversation as it runs and surfaces the account, device, error message, and recent ticket history without anyone typing a search
  • A running summary any joining participant can read, so a transferred or escalated call does not restart from the beginning
  • A supervisor can follow a live call as text and step in before it goes wrong rather than reviewing it afterwards
  • Useful as an accessibility aid too: what the caller says is available as text on screen throughout the call
Best for

Service desks, dispatch, and anyone whose calls get transferred or escalated mid-conversation.

The moment the call ends

Post-call mode

The recording is transcribed, summarised into a client-ready note, reviewed by the engineer in Teams, and filed to the right ticket. The documentation is finished before the engineer has moved on to the next call.

  • Full transcript of the conversation, searchable and retained against the call record
  • A client-ready note drafted in the language a ticket note needs, not a raw transcript dump
  • Approve or reject in Teams — nothing reaches a client record without a person agreeing to it
  • Filed automatically to the correct in-progress ticket, with the engineer correctly attributed
  • Calls without a ticket number are recorded as unfiled rather than guessed at
Best for

Any team that bills time, or any team where the note currently gets written from memory at 6pm.

Nothing new to learn

Engineers work in Teams and a browser tab they already have open. There is no separate console to log into and no training day.

One button to act on

Accept a call, transfer it, approve a note. Every decision the system asks for is a single tap on a card.

Switch it on per queue

Both modes run on the same platform, so live mode can go on for the service desk without changing how the rest of the business takes calls.

The build

How it works

The short version, before the exploded view goes component by component.

We built the platform on Azure Communication Services so the call itself is programmable. Inbound calls are answered by a function that plays the recording notice, starts recording, and consults an on-call schedule to decide which engineer to invite — weekday, weekend, and morning windows, all timezone-aware. The engineer is added to the live call and simultaneously gets an adaptive card in Teams with accept and transfer actions.

Outbound works the same way in reverse. An engineer opens a browser dialer, picks their name and a ticket number, and places the call from the company number using a VoIP token issued per session. Hold, mute, and keypad run client-side; transfers run server-side through Call Automation so the receiving engineer's own Teams client rings rather than a forwarded phone.

When the call ends, the recording is archived and the intelligence pipeline takes over: Azure Speech produces the transcript, Azure OpenAI drafts a client-ready note, and the engineer receives both in Teams with an approve or reject card. On approval, the note is posted to the correct in-progress Autotask ticket automatically.

Two details carry most of the reliability. Some platform events are raised per-resource rather than per-call, so each pipeline verifies that a recording is genuinely its own before acting on it. And every stage is idempotent, keyed on the recording identity, so a redelivered event re-files nothing.

Secrets live in Key Vault with RBAC, referenced from app settings through managed identity, so rotating a credential never means touching configuration. A separate Static Web Apps dashboard reads live health and activity across every component.

End to end

One call, start to finish

A genuine sequence, which is why these are numbered. Green marks what happens while the call is still live.

  1. 01

    Call begins

    During the call

    An inbound client call arrives, or an engineer places one from the browser dialer. Either way the platform owns the call from the first second.

  2. 02

    Notice and recording

    During the call

    The recording notice plays once on answer, and recording starts against the call connection.

  3. 03

    Routing to whoever is on call

    During the call

    An on-call schedule with weekday, weekend, and morning windows picks the engineer. They are added to the live call and sent a Teams card with accept and transfer actions.

  4. 04

    In-call control

    During the call

    Hold, mute, and keypad run in the browser. Transfers run server-side so the next engineer's Teams client rings directly. Call state, participants, and transfer status are readable live throughout.

  5. 05

    Live transcription and assistance

    During the call

    In live mode the caller is transcribed as they speak and an assistant surfaces the account, device, error, and recent ticket history alongside the conversation. Anyone joining mid-call reads a running summary instead of asking the customer to start again.

  6. 06

    Unanswered calls

    During the call

    If nobody picks up on an inbound call, the caller reaches voicemail, which is recorded and emailed. Outbound has no voicemail by design — the call simply reaches the recipient's own.

  7. 07

    Recording archived

    After the call

    The finished recording is downloaded and stored with metadata identifying the engineer, direction, destination, and ticket number.

  8. 08

    Transcript and drafted note

    After the call

    Azure Speech transcribes the call; Azure OpenAI turns the transcript into a client-ready summary written in the language a ticket note needs.

  9. 09

    Engineer review

    After the call

    Transcript and drafted note arrive in Teams with an approve or reject card. Nothing reaches the client record without a human agreeing to it.

  10. 10

    Filed to the ticket

    After the call

    On approval the note is appended to the right in-progress Autotask ticket. Without a ticket number the call is recorded as unfiled rather than guessed at.

Architecture

Every moving part

The stack pulled apart plane by plane. Filter to what runs live during a call, or what runs once it ends.

Exploded view

Six planes, 22 components. Select a layer to open it.

  • Programmable voice

    Both

    Azure Communication Services

    One number carries inbound and outbound. Calls can be answered, played to, recorded, transferred, and inspected from code.

    Browser dialer

    Live

    ACS Calling SDK

    Engineers place calls from a web page using a short-lived VoIP token, with the company number as the caller ID.

    Server-side transfer

    Live

    Call Automation

    Transfers resolve to a Teams user identity so the receiving engineer's own client rings, rather than forwarding to a phone number.

Showing all 22 components

Can we build this for you?

This platform runs E3 IT Services' own phone system, which is the honest test of whether it works. The same architecture can be built for your business — on your Azure tenant, your numbers, and your ticketing system — in either mode or both. It is a project engagement rather than a product licence, scoped and quoted like any other build.

Free consultation

Tell us what you are stuck with.

We will tell you whether it is a build problem, a configuration problem, or something you should not spend money on at all.