The magic that makes screen pops work is Computer
Telephony Integration
(CTI). CTI is anything that helps a computer "talk" to a telephone and
it
usually takes the form of software and software APIs that you can code
to.
With CTI, your program knows when a call arrives at the phone, the
caller's
ANI (Automatic Number Identification, i.e. phone number), the caller's
DNIS
(Dialed Number Identification Service, i.e. the number that the caller
dialed), and some status information. With CTI you can answer the
phone,
place calls, and hang up a call, all programmatically without you
touching
the phone.
But CTI doesn't talk to a phone directly, it talks to a telephony
switch.
Telephony switches (many times called PBXs, Private Branch Exchange)
are
found at many small and larger companies. It's a piece of hardware with
a
T1 line to the phone company. A company's internal phones all plug into
the
switch. This saves having a bunch of separate phone lines going from
the
telephone compaany to a business and it allows a business to manage
their
phone environment. With your own switch you can do things like group
phones
so that one number can go to a group of phones, or you can reassign
numbers
without going through the phone company, or you can gather statistics
about
phone use. Phone companies do have services where they run a PBX for
you at
their office, but that's kind of pricey.
There are lots of PBX companies and lots of PBX types. I think a couple
dozen companies and dozens of different switches. But the big players
in
the United States are Nortel Networks and Lucent Technologies. Other
notable
switch vendors are Alcatel in France, Siemens in the US and Europe, and
Rockwell in Canada. Every switch has a different switch protocol,
different
CTI API and features. So writing software that can talk generically to
a wide
variety of switches is quite an undertaking.
Which brings me to what the CCT group does at Oracle. We handle the CTI
stuff
for the rest of CRM. What's our job? Our job is to write the APIs that
other
CRM groups use to telephony-enable their applications. Not only that,
but
the CCT group also handles telephony related add-on services such as
routing
calls and call management. So let's dig a bit deeper into the CCT
architecture.
|
In the center, we have the Interaction, Queueing and
Distribution (IQD)
server. This server is notified about incoming calls and either queues
them
up for various agents or distributes the call immediately. The IQD
talks to
the Routing Server (RS), which classifies calls and tells the IQD where
to
route calls. The IQD and RS are global servers -- only one of each
should
run in an enterprise. The Oracle Database is also a global server --
you can
have multiple database servers, but to all applications it should look
like
one big server (so the Oracle RDBMS handles caching and replication to
maintain the single-view model).
Each call center in an enterprise will run an Oracle Telephony Manager
(OTM). The OTM is the server that agents log into for telephony
services.
The OTM keeps track of calls, processes switch events, and invokes
switch
functionality. Each call center will probably also run an Inbound
Telephony
Server (ITS). The ITS is an adjunct that listens to calls arriving at a
switch and notifies the IQD of those calls so that the IQD can route
the
calls appropriately. I only mention it because my team is responsible
for
the ITS.
The OTM doesn't actually talk to the switch directly. All that
low-level
communication is run through the Call Center Connectors server (CCC).
From
the IQD to the ITS, all those servers run in Java (so yes, Java can be
used
to run near real-time applications that scale to hundreds of users).
The CCC
server on the other hand is a C++ server which we inherited from a
small
company we bought. The CCC server conceptually talks to a switch.
Really, it
talks to the CTI module of a switch -- and the CTI module can be a
third
party middleware server. But the CCC is as low as we code.
So again, I'm trying to answer what my team does. We have six people in
my
team and we're responsible for the CCC and ITS servers and the lower
half of
the OTM. It requires us to know several switches and their
ideosyncrasies,
C++, Java, client-server programming and some database tools. Our job
also
requires us to write a lot (technical manuals, API documentation,
application
notes), upkeep our web site, deal with other groups and customers and a
lot
of things that don't really come under "what they teach you in
college".
|