Your call is important for us
Published
The Cycle
As Ane Brun says in her marvelous song, “One”: It all starts with one. One call from a customer triggers the start of the cycle I described.
The call (Çağrı in Turkish)
Dispatch
Driver
So, I am still in the conceptual room but the room has already outgrown itself considerably. 4 ladies became a full department, across many cities, then outsourced to a professional Call Center company. Major cities got their own D-guy. Fleet grew, PDT8056’s were replaced with newer, 2D reading capable devices. The concept stayed the same. While this growth was under way, I continued to build the pieces of the cycle. Development jumped from one piece to another as operations needed them. At the end of the day, the applications and the SQL backend stitching them together endured.
Here is the story of the “Call”.
Caller ID
Turkey started rolling out Caller ID for landlines during 2000-2001. The company was not a multi-national back then. The boss decided everything. The boss was very excited about CLID. I was directly connected to the boss, in the Org Chart. So were 30+ people. Some chart. He asked me to research it. He wanted the magic, implemented. The agent (in Call Center, CC jargon agent is the person answering your call) greets you with “Hello Ms. Smith, how can we help you today?” In an era when CLID was practically unknown. Pure magic. But he is the boss. He does not care he is crossing the border between an app running on the desktop computer and a headset sitting on top of your desk.
Creathink, the brand inside the brand. It (me) thought and created.
The company had an Alcatel 4400 switchboard, connected to the IP network as well as the physical sets as extensions. You call ext. 4321, I picked up the headset and answered. 1234 is one of the agents. Besides, there is an application, a software telephone you can install into your computer sitting under the desk, just centimeters away from the headset on your desk. When someone dialed 4321 two things happened. The headset rang and the app popped up an answer dialog. If you have a soundcard, headphones and a mic, you are all set. Pick either one.
Did you already get the “aha” moment? Because I did, but not as quickly as you did here. Per aspera ad astra.
The Alcatel sent the CLID along with other information over the network to the app in the PC. It knows which PC, because the soft phone registers itself with the switchboard on startup. Neat little trick. Cue Burak in. I coded a tiny app in Delphi. It sat in the background, eavesdropping on the Alcatel’s UDP packets to the soft phone. Then it broadcasts its own UDP packet to the loopback adapter, 127.0.0.1. Only the applications (yes plural, foresight) on that PC, preferably written by me are alerted that there is a call, incoming, with CLID already embedded. It was named “DataBroadcast.exe”. I was not good at naming things, apparently. But problem solved. It was real magic: The CC app, “CagriKabul” (accept call in English, here it means “accept and process and record”) popped up the CLID, performed the customer lookup through phone numbers and displayed the most frequent (n) contact person names. Most of the time, with my optimizations in the customer database, the popup appeared BEFORE the headset rang!
If no phone numbers match, later in the call the agent selects a customer or even creates a new customer record and the system “learns” the new number if it is a returning customer. If a totally new customer and first call, it is already tied to the customer database anyway. The agent records who the caller is by name for the CC database, so the number of calls from that specific person is also incremented, building the top (n) list.
This is all happening to you now, in the background, automatically: It is the Algorithm feed the content providers fight today. Then, I was oblivious to how Marketing worked; I invented.
The Application
CagriKabul had to be the most easily navigated data entry application in the company. A clerk in accounting can enter the ledger items at her own pace. An agent “fights” the application while the customer provides information as fast as he speaks, expecting everything to be noted the first time, right, and preferably not repeated. I spent many hours watching agents take calls, the sequence of data arriving verbally, the exceptions, the jumps section to section like from addresses to phone numbers to contact person to other parts, how addresses are conveyed (there are many ways to dictate an address). Then the specific items for a pick up come: Persons involved, rendezvous, package details if needed and as always a “notes” field for anything I was not prepared for. All this data flowed to Dispatch (and visible if D-guy needs to check the call details) but eventually it landed with the driver.
The trace hinged on one integer number: SiraNo (SequenceNo in English). It is the call’s unique id and it travels the whole pipeline, intact. When the driver refers to call “123456” everybody in the company knows which call it is.
Later this one application was distributed to all the major cities. It used its own slice of Customer DB for faster processing. It survived split CC teams at geo-apart locations, then when most of the CC work was outsourced, the company also used it: it was perfectly optimized and no need to invent the wheel and set up data transfer protocols between two companies for data captured in another application. CagriKabul worked happily, training for it was a few hours for the CC company. Even with their high turnover, they did not complain a bit. But we did have problems with our PBX, an Alcatel 4400, in more ways than this one. An expert warned us against purchasing it, but the boss gave in to the sales pitch despite warnings. Fortunately, I was just the IT guy, not the telecom guy. But that same expert, a friend of 45 years from high school and now my neighbor, later became the CEO of the Call Center company we outsourced part of our operations to. He lived through the worst of it.
There was a feature for the D-guy there, too. The agent was able to send direct messages to the D-guy for urgent matters about calls. Not an email, more like an instant messaging app of today.
The Code
I have the source code of CagriKabul in front of me. Actually, I am filling in the blanks by reading the .pas code, sometimes laughing at the way I did things by then. Most educational content, I assure you.
I found the lines:
BCastExec.ExePath:=LoginInf.ApplicationPath;
BCastExec.ExeName:=LoginInf.ApplicationPath+'databroadcast.exe';
if not IsProcessRunning('databroadcast.exe') then begin
if FileExists(LoginInf.ApplicationPath+'databroadcast.exe') then BCastExec.Execute;
Delay(1200);
end;
So, CagriKabul made sure the app it depends on for CLID is actually running in the background.
All database access was in CagriKabulDM.pas 757 lines: the call-accept data module.
TAPITools.pas 160 lines, the telephony unit: TTAPIInfoRec = LineCallState, Origin, CallerID, CallerIDName, CalledID, CalledIDName; InitTAPI, CallNumber, ProcessNumber. Where the app sliced the CLID information for the agent.
MusteriSec.pas 16.9 KB / MusteriSecDM.pas: Select customer dialog and its DB connector code. Many options here. Search with almost any field in the Customer DB main record.
Obviously, there was a CagriListesi.pas 10.8 KB: The call list. All calls, with whom recorded what, when. So if/when a second call lands on another agent and he is ready.
There were other “helper” applications I developed in time. A CagriAnaliz.exe, Call Analysis in English. It did what it promised: It helped supervisors analyze call cancellation reasons. A CagriMonitor.exe, Call Monitoring in English. A CagriBolgeTanimlamalari.exe, Call Area Definitions in English. Where the magic pairing between the driver and zone he serves materialized.
No need to say any other CRM application is one way or the other related to this one set of applications. Other parts are not purely my code. A great team was behind all this stuff. We communicated, we designed, we matched code and protocols, we borrowed queries and stored procedures on databases we shared. It was a live environment.
First piece of the Cycle
This was how the company handled the calls. I do not remember how long it took me to come up with a working MVP. But hear this, there are 13.5 years between the oldest source file and the last build. It means I touched the application at least that long. The cutoff is the floor, it is the time I made the copy and maybe I continued to touch it. I cannot tell anymore.
Have a good one.
The Series
Çağrı was the first piece of the cycle. Where it all began is here: The world before the handhelds, with the room where calls got answered, the paper piles, the D-guy.