U.S. patent application number 15/346247 was filed with the patent office on 2017-02-23 for universal communication system.
The applicant listed for this patent is Telcentris, Inc.. Invention is credited to Jorge Guntanis, Bryan Hertz, Corey J. Hertz, Kevin Hertz, Robert Hertz, Curtis Kaffer, Rob Lewis, Edward W. Mallory.
Application Number | 20170054665 15/346247 |
Document ID | / |
Family ID | 47391754 |
Filed Date | 2017-02-23 |
United States Patent
Application |
20170054665 |
Kind Code |
A1 |
Hertz; Bryan ; et
al. |
February 23, 2017 |
Universal Communication System
Abstract
A computer program product stored on a non-transitory computer
readable medium comprising instructions that when executed on one
or more computers cause the one or more computers to perform
operations of providing a single client application including a
plurality of communication types, the communication types
comprising at least all of voice call, text messaging, and instant
messaging and providing via the application a single history screen
showing all recent communications of a client using the application
including all communication types employed.
Inventors: |
Hertz; Bryan; (San Marcos,
CA) ; Lewis; Rob; (San Diego, CA) ; Kaffer;
Curtis; (San Diego, CA) ; Hertz; Kevin;
(Escondido, CA) ; Hertz; Robert; (Encinitas,
CA) ; Mallory; Edward W.; (San Diego, CA) ;
Hertz; Corey J.; (San Diego, CA) ; Guntanis;
Jorge; (San Diego, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Telcentris, Inc. |
San Diego |
CA |
US |
|
|
Family ID: |
47391754 |
Appl. No.: |
15/346247 |
Filed: |
November 8, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13430606 |
Mar 26, 2012 |
9489658 |
|
|
15346247 |
|
|
|
|
61467901 |
Mar 25, 2011 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04L 51/36 20130101;
H04L 51/063 20130101; H04L 51/04 20130101; H04L 51/16 20130101;
H04W 4/14 20130101; G06Q 10/10 20130101; H04L 51/32 20130101 |
International
Class: |
H04L 12/58 20060101
H04L012/58 |
Claims
1: A computer program product, stored on a non-transitory computer
readable medium, comprising instructions that when executed on one
or more computers cause the one or more computers to perform
operations, the operations comprising: providing a single client
application including a plurality of communication types, the
communication types comprising at least all of voice call, text
messaging, and instant messaging; and providing via the application
a single history screen showing all recent communications of a
client using the application including all communication types
employed.
2: The computer program product of claim 1, wherein the
communication types additionally comprise one or more of social
networking, fax, and file transfer.
3: The computer program product of claim 1, further comprising
permitting initiating a new communication with a recipient via the
single history screen via a same communication type by selecting a
corresponding entry in the single history screen.
4: A unified communication system including a memory and a
processor configured to execute a client application, the client
application comprising: first logic configured to provide a client
interface for accessing a plurality of communication types from a
single, multi-threaded command window, the plurality comprising at
least voice call, text messaging, and instant messaging; and second
logic configured to provide via the application a single history
screen showing all recent communications of a client using the
application including all communication types employed.
5: The system of claim 4, wherein the plurality of communication
types additionally comprise one or more of social networking, fax,
and file transfer.
6: The system of claim 4, further third logic permitting initiating
a new communication with a recipient via the single history screen
via a same communication type by selecting a corresponding entry in
the single history screen.
7: An apparatus, comprising: a processor configured to execute a
single client application including a plurality of communication
types including at least voice call, text messaging, and instant
messaging; and a memory configured to store and provide access to a
single history screen showing all recent communications of a client
using the application including all communication types
employed.
8: The apparatus of claim 7, wherein the plurality of communication
types additionally includes one or more of social networking, fax,
and file transfer.
9: The apparatus of claim 7 further comprising one of a mobile
device, a handheld device, a laptop, and desktop computer.
10: The apparatus of claim 7 further comprising a client interface
configured to access the communication types via a multi-threaded
window.
11: The apparatus of claim 7 further comprising a translator
configured to automatically translate a plurality of text
messages.
12: The apparatus of claim 7 further comprising a client interface
configured to access a plurality of applications, each including a
plurality of contact information.
13: The apparatus of claim 12, wherein the plurality of contact
information is accessible from the client interface in a single
contact list.
14: The apparatus of claim 7, wherein the processor is configured
to execute instructions to enable a voice over IP (VoIP) call.
15: The apparatus of claim 7, further comprising a client interface
permitting initiating a new communication with a recipient via the
single history screen via a same communication type by selecting a
corresponding entry in the single history screen.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation application of U.S.
patent application Ser. No. 13/430,606, filed Mar. 26, 2012, now
U.S. Pat. No. 9,489,658, which claims the benefit and priority to
U.S. Provisional Patent Application No. 61/467,901, filed on Mar.
25, 2011, and the specifications and claims thereof are hereby
incorporated by reference in their entireties.
FIELD OF THE INVENTION
[0002] This invention relates to communication systems and methods,
and more particularly, a universal communicator ("UC") configured
to unify one or more forms of communication, media, and information
types.
BACKGROUND
[0003] The proliferation of telecommunication and computing
technology has spawned a variety of communication technologies and
channels. Currently, key communication channels include data,
voice, video, instant messaging, text messaging, social media,
email, file sharing, faxing, and other similar communication
channels. Voice communications have expanded beyond traditional
public telephone networks and landlines to voice communications
occurring over mobile networks and the Internet, such as Voice over
IP ("VoIP"). Additionally, new options for instant messaging and
social media communications are regularly made available to
users.
[0004] To keep up with the ever-increasing availability of
communication options, many users may be accessible to more than
one communications option. For example, users may have multiple
phone numbers at which they may be reached (e.g. home, office,
mobile, and fax.) A user may also belong to multiple instant
messaging and social media networks.
[0005] Further, each user may prefer to communicate using different
communication channels, types, or media. Further, these preferences
may differ among users, family, friends, and colleagues and/or a
user may only communicate using a certain type of communication
mechanism, such as through electronic mail or calling over a
network using VoIP. Accordingly, it may be difficult for a user to
keep track of contact information for family, friends, and
colleagues. Moreover, a user may require access to multiple forms
of communication to stay connected to other users.
[0006] Therefore, there is a need for a communication system that
unifies information, media, and different forms of
communication.
SUMMARY
[0007] Broadly, in one aspect, a computer program product, stored
on a non-transitory computer readable medium that includes
instructions that when executed on one or more computers cause the
one or more computers to provide a client application is described
and includes a plurality of communication types, provide access to
a plurality of contact information, initiate a first communication
with a first party using a first one of the communication types,
and automatically switch to a second communication with the first
party using a second one of the communication types concurrently
with a termination of the first communication.
[0008] In another aspect, a universal communication system
including a processor configured to execute a client application is
described and includes first logic configured to provide a client
interface for accessing a plurality of communication and media
types from the command window, and second logic configured to
integrate a plurality of contact information from the plurality of
media and communication types into a single contact list, where the
single contact list being accessible from the client interface. The
system further includes third logic configured to receive
executable instructions from a multi-protocol application program
interface to alter the plurality of communication and media types
and the plurality of contact information received therefrom.
[0009] In another aspect, there is described an apparatus that
includes a processor configured to execute a client application
including a plurality of communication types, and a memory
configured to store and provide access to a plurality of contact
information from a plurality of media types, where the processor is
further configured to enable a first communication with a first
party using a first one of the communication types; and
automatically terminate the first communication as a second
communication with the first party using a second one of the
communication types is initiated.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] FIG. 1 is a deployment diagram of an example universal
communication system.
[0011] FIG. 2 is a component diagram of an example client and an
example host application for a universal communication system.
[0012] FIG. 3 is an example voice over internet protocol phone
system for a universal communication system.
[0013] FIG. 4 illustrates an example of a Service Delivery Platform
(SDP).
[0014] FIG. 5 is an example workflow for the registration
process.
[0015] FIG. 6 is an example login window for a client.
[0016] FIG. 7 is an example workflow for the authentication
process.
[0017] FIG. 8 is an example of a window if the login fails.
[0018] FIG. 9 is an example workflow for the initialization
process.
[0019] FIG. 10 is an example main window of a client.
[0020] FIG. 11 shows an example contact list panel in a main window
of a client.
[0021] FIG. 12 shows an example contact options embedded panel for
a contact in a contact list.
[0022] FIG. 13 shows an example contact options hovering panel for
a contact in a contact list.
[0023] FIG. 14 is an example message window for a client.
[0024] FIG. 15 shows an example phone call status panel for a
message window.
[0025] FIG. 16 shows an example text-based message panel for a
message window.
[0026] FIG. 17 is an example translation settings interface for a
client.
[0027] FIG. 18 shows an example text-based message panel having
translated messages with the un-translated message hidden.
[0028] FIG. 19 shows an example text-based message panel having
translated messages with the un-translated message displayed.
[0029] FIG. 20 shows an example fax panel for a message window.
[0030] FIG. 21 shows an example file transfer panel for a message
window.
[0031] FIG. 22 shows an example file selector interface for a
message window.
[0032] FIG. 23 shows an example keypad panel in a main window of a
client.
[0033] FIG. 24 shows an example applications panel in a main window
of a client.
[0034] FIG. 25 shows an example service selection panel in a main
window of a client.
[0035] FIG. 26 shows an example service configuration panel in a
configuration window of a client.
[0036] FIG. 27 shows an example phone configuration panel in a
configuration window of a client.
[0037] FIG. 28 shows an example assistant configuration panel in a
configuration window of a client.
[0038] FIG. 29 shows an example audio configuration panel in a
configuration window of a client.
[0039] FIG. 30 shows an example video configuration panel in a
configuration window of a client.
[0040] FIG. 31 shows an example profile configuration panel in a
configuration window of a client.
[0041] FIG. 32 shows a general settings panel in a settings window
of a client.
[0042] FIG. 33 shows a service settings panel in a settings window
of a client.
[0043] FIG. 34 shows an appearance settings panel in a settings
window of a client.
[0044] FIG. 35 shows a general settings panel in a phone settings
panel in a settings window of a client.
[0045] FIG. 36 shows a call direction panel in a phone settings
panel.
[0046] FIG. 37 shows a caller identification panel in a phone
settings panel.
[0047] FIG. 38 shows a voicemail settings panel in a phone settings
panel.
[0048] FIG. 39 shows a call audio settings panel in a phone
settings panel of a client.
[0049] FIG. 40 shows a text-message settings panel in a settings
window of a client.
[0050] FIG. 41 shows an audio settings panel in a settings window
of a client.
[0051] FIG. 42 shows a video settings panel in a settings window of
a client.
[0052] FIG. 43 shows an event settings panel in a settings window
of a client.
[0053] FIG. 44 shows a notification settings panel in a settings
window of a client.
[0054] FIG. 45 shows a contact management window of a client.
[0055] FIG. 46 shows a contact edit panel in a contact management
window of a client.
[0056] FIG. 47 shows a message management panel in a main window of
a client.
[0057] FIG. 48 shows a voicemail management panel in a message
management panel.
[0058] FIG. 49 shows a fax management panel in a message management
panel.
[0059] FIG. 50 shows a recorded phone call management panel in a
message management panel.
[0060] FIG. 51 shows a web-based call-back panel in a main window
of a client.
[0061] FIG. 52 shows a text-message-based call-back panel in a main
window of a client.
[0062] FIG. 53 shows a caller identification panel in a main window
of a client.
[0063] FIG. 54 shows a service purchase panel in a main window of a
client.
[0064] FIG. 55 shows a credit selection panel in a service purchase
panel.
[0065] FIG. 56 shows a calling plan selection panel in a service
purchase panel.
[0066] FIG. 57 shows a text-message plan selection panel in a
service purchase panel.
[0067] FIG. 58 shows a payment panel in a service purchase
panel.
[0068] FIG. 59 shows a message history panel in a main window of a
client.
[0069] FIG. 60 shows an example history log in a transcript window
of a client.
[0070] FIG. 61 is an example workflow of overall process for
receiving an inbound phone call at the client.
[0071] FIG. 62 is an example workflow for locating the phone
settings for the inbound phone call process.
[0072] FIG. 63 is an example workflow of the process for
establishing a connection between a caller and the client.
[0073] FIG. 64 is an example work flow for the call direction
process to locate a user at different phone numbers.
[0074] FIG. 65 is an example of the process for a web-based
call-back.
[0075] FIG. 66 is an example of the process for a
text-message-based call-back.
[0076] FIG. 67 is an example workflow for uploading a file for a
file transfer.
[0077] FIG. 68 is an example workflow for downloading a file from a
file transfer.
[0078] FIG. 69 is an example workflow for the translation of
inbound and outbound messages.
[0079] FIG. 70 is an example deployment diagram for a social
marketing system.
[0080] FIG. 71 is an example database entity-relationship diagram
for a social marketing system.
[0081] FIG. 72 is an example workflow of the process for creating a
new campaign with the social marketing system.
[0082] FIG. 73 is an example workflow of the process for initiating
and executing a created campaign.
[0083] FIG. 74 is an example workflow of the process for delivering
invitations to contacts to view the campaign marketing message.
[0084] FIG. 75 is an example workflow for the process of tracking
acceptance of the invitations.
DETAILED DESCRIPTION
[0085] A computer-implemented system and method for a universal
communicator ("UC") is provided for unifying or aggregating one or
more forms of communication, media, and information. A client
having various modules may be installed on a computing device. The
modules of the client may be adapted to receive and transmit
communications by way of various communication methods. The client
may be in direct or indirect communication with a server, which
includes one or more databases and a host application having
various modules and engines that facilitate communications between
a user and one or more contacts associated with the user.
[0086] The UC may access various instant messaging services and
social networking services to which a user belongs. Examples of
instant messaging services include, without limitation, AIM,
Facebook Chat, Google Talk, ICQ, Jabber, Windows Live Messenger,
MySpace, Skype, and Yahool Messenger. Examples of social networking
services include, without limitation, Facebook, MySpace, and
Twitter.
[0087] Many services, software programs, and other media allow a
user to have a list of contacts associated with a user-referred to
as to as a "contact list" or "buddy list," which may consist of
friends, family, co-workers, and or any other person or entity
associated with a user. The UC may require secure procedures to
access the contact list. For example, a user may provide the UC
with the credentials used to access the contact lists from the
services. In one example, a username and a password may be
required.
[0088] The UC may access one or more services, such as instant
message and social networking services or electronic mail to
collect contact lists using software or a combination of software
and hardware. The UC may display contacts at one or more locations
in a client. Displaying the contacts from each software program or
service in an aggregate or unified location enables the user to
more easily communicate with the contacts by eliminating the need
to access the individual services separately.
[0089] The client may have contact management features, including
the storage of contact information for individual contacts. Contact
information includes, for example, street addresses, phone numbers,
email addresses, and instant messaging screen names. Accordingly,
the client may use the contact information to provide or perform
various digital communications including, without limitation,
telephony, instant message, text message, email, file transfer, or
fax. Thus, the UC may provide a location from which users may
communicate using a variety of communication options.
[0090] Examples of communication may include an inbound or outbound
message, respectively, received by a user at a client or sent to a
contact via the UC. Examples of communications may include voice
messages, instant messages, text messages, multimedia messages,
email messages, file transfers, and/or faxes. Examples of voice
messages may be voice- or digital-based messages received by a
recipient via a traditional landline telephone, a mobile cellular
telephone, or a voice over IP (VoIP) system; voice messages may
also be referred to as phone calls and voicemails. Examples of
instant messages may be text-, image-, video-, or sound-based
messages transmitted in real-time or substantially real-time to a
computing device over any type of network. Examples of text
messages may be text-based messages received and/or transmitted
over cellular or mobile networks using, for example, the Short
Message Service (SMS). Examples of multimedia messages may include
image-, video-, or sound-based messages transmitted over cellular
networks using, for example, the Multimedia Message Service (MMS).
Examples of electronic mail messages (email) refer to those
supported by Microsoft's Outlook and Google's Gmail. Examples of
facsimile transmissions may include transmitting content on a page
from one point to another. Examples of file transfers are those
communications in which a file, such as a computer file, may be
transferred between a user and a contact.
[0091] The UC may provide additional features relating to voice,
text, and other methods of communication. The additional features
may include management, transfer, direction, and forwarding of
calls, text messages, and instant messages; voicemail; and
automatic translation of text messages, instant messages, and email
messages.
[0092] Moreover, the UC may be configured for marketing and viral
marketing purposes, as discussed below.
I. OVERVIEW
[0093] FIG. 1 is a system diagram showing a UC 1 in an example. In
this example, the UC 1 may be configured in a client-server
architecture. The UC 1 may include a client application 2, which
may be installed on a computing device 8 of a user 19 and in data
communication with the UC 1 over a network 7.
[0094] In an example, the UC 1 may include a VoIP phone system 3,
an application server 5 that may host an application 5A for
carrying out the functions of the system, a database server 6 that
may host one or more databases 6A, and a web server 4 that may host
a web-based portal 4A for accessing various functions. In another
embodiment, the UC 1 may include the application server 5 and
application 5A and transmit and receive data from the database
server 6, the VoIP phone system 3, and/or the web portal 4. In
another embodiment, the UC 1 may include the client application
2.
[0095] The host application 5A may communicate with the VoIP phone
system 3 to provide call-related services between the client 2 and
one or more contacts or users. The databases 6A may store
information relating to, for example, users and contacts" 18A-D of
the users 19. The web portal 4A provides, for example, registration
functionality so that a user 19 may gain access to the system. The
client application 2 may send requests to the application server 5
to carry the various functions, such as sending a communication to
a contact. The host application 5A may receive requests from the
client application 2 and executes the requested feature. The host
application 5A may also communicate via one or more networks, such
as network 7, with various instant messaging services 13, social
networking services 14, web-based services 15, and/or payment
processing services 16. Any one of the services 13, 14, 15, and/or
16 may be accessed over network 17. Similarly, the host application
SA may transmit calls, messages, faxes, and files to contacts via
one or more networks.
[0096] The networks may be, for example, public switched telephone
networks, mobile networks, or IP-based networks such as the
Internet. It should also be understood that the UC 1 may be
implemented on a network of any scale (e.g. a local area network
(LAN), wide area network (WAN), metropolitan area network (MAN),
personal area network (PAN), virtual private network (VPN), campus
area network (CAN), regional area network (RAN), or global area
network (GAN)) using wired and/or wireless technologies or a
combination thereof (e.g. coaxial cable, power lines, phone lines,
optical fiber, Ethernet, radio waves, microwaves, or infrared
signal(s).
[0097] Those skilled in the art will recognize that the term
computing device, as used herein, may refer to any device
configured to process commands or operate on data, such as, a
stationary computer (e.g., a desktop computer), a portable computer
(e.g., a laptop or notebook computer), or a handheld computer
(e.g., a tablet computer, personal digital assistant, mobile phone,
etc.). A computing device may include software, hardware, or
combinations thereof. By way of example, computing device 8,
computing device 9, cellular phone 10, landline phone 11, and fax
machine 12 may all be considered types of computing devices and may
communicate with the UC 1 over a network 17. In one example, the UC
1 may communicate with contacts 18A-D over network 17 through one
or more of the computing devices. Network 17 may be similar or
different from network 7. In addition, any number of contacts may
have access to the network.
[0098] Referring now to FIG. 2, the client application 2 and the
host application 5A of the system include various modules and
engines. Module, as used herein, refers to hardware and/or software
configured at the client application 2 and/or host application 5A
that are adapted to carry out particular tasks, such as making a
phone call or sending a text message. Engine, as used herein,
refers to hardware and/or software configured at the host
application server 5 that is adapted to access various services
(e.g. instant messaging services, social networking services, and
web services) and/or exchange communications between a user 19 and
a contact 18A-D.
[0099] The modules of the client application 2 may include: an
authentication module 2A; initialization module 2B; a configuration
module 2C; a contact management module 2D; a voice message
management module 2E; a text-based message management module 2F; a
fax management module 2G; a file transfer module 2H; a translation
module 2J; and a service plan management module 2I.
[0100] The engines of the host application 5A may include: a
registration module 5B; an authentication module 5C; an information
engine 5D; a voice message engine 5N; a voice message management
engine 5D; a text message engine 5M; an instant messaging engine
5G; a social networking engine 5L; an email engine 5P; a fax engine
5I; a file transfer engine 5K; a translation engine 5H; and a
service plan management engine 5F.
[0101] With reference now to FIG. 3, an example VoIP phone system 3
for is shown. The VoIP phone system may include a VoIP gateway 3B
for managing inbound and outbound calls; an analog telephone
adapter 3C to provide analog telephone service with traditional
landline or mobile cellular phones; and a router, hub, or switch 3A
to provide IP-based telephone service with other computing
devices.
[0102] FIG. 4 illustrates an example of a Service Delivery Platform
(SDP) 60. The SDP 60 may be adapted to write applications and
programs for use with the UC 1. The SDP 60 may be a layered
technology and include one or more components. In one embodiment,
the SDP 60 may support Signaling System 7 (SS7) to couple to the
Public Switched Telephone Network (PSTN) and provide Competitive
Local Exchange Carrier (CLEC) services such as free telephone
numbers and connectivity within a local area. The SDP 60 may also
include support for the Session Initiation Protocol (SIP), which
may provide Voice over IP (VoIP), Video, and FAX, as described
herein. The SDP 60 may support the Extensible Messaging and
Presence Protocol (XMPP), which provides for application, such as
chat services including Google Talk, AIM, Yahoo Chat, Jabber,
Facebook, and MySpace IM. The SDP 60 may also support SMPP, SMS,
SMTP, and speech-based services and applications. Referring again
to FIG. 4, the SDP 60 may include a multiprotocol API including
support for billing, invoicing, provisioning, and call control.
[0103] An example UC will now be discussed in further detail in the
context of an example database, client application, and host
application implementation. It should be understood that the
description of the respective configuration and implementations are
by way of example only and alternative implementations are
possible. For example, the engines of the host application may be
embodied in multiple host applications distributed across multiple
application servers in communication with multiple databases.
II. SYSTEM DATABASE
[0104] One or more databases may be configured to store user and
contact information. The databases may include tables that store
information relating to users and their contacts, uploaded computer
files, faxes sent and received, configuration settings, and other
information that may be transmitted and received over the network.
The host application may query the database.
[0105] The databases may be provided as a database management
system (DBMS), and, in particular, as a relation database
management system (RDBMS) or an object database management system
(ODBMS). Further, the database may be accessed using a database
query language. Examples include such as SQL, MySQL, or
Oracle.III.
III. CLIENT AND HOST APPLICATIONS
[0106] The client application may be implemented as a software
application and installed on a computing device. The client
application may be implemented on any suitable development platform
using any suitable programming language known to those skilled in
the art. For example, the client application may be developed using
C++ using the QT framework by Nokia/Trolltech and/or Objective C.
The server side may be developed using PHP in the Zend framework
and/or PERL The host application may similarly be implemented as a
software application on any suitable development platform using any
suitable programming language known to those skilled in the art.
The host application may be one application installed on a single
server or multiple applications installed across multiple servers
in communication with each other. The host application may be
installed on an application server and communicate with one or more
clients operated by users of the system.
[0107] The client and the host application may communicate via HTTP
service URLs. The service URL may include an address for the
appropriate engine of the host application as well as any relevant
information necessary to carry out a requested feature. Protocols
that may be used to access the host application may include SOAP,
XML, RPC, JsonRPC, and REST. The protocols may be supported through
an Application Programming Interface, an example of which is shown
in FIG. 4.
[0108] The client and host applications may be configured to
perform the following tasks: register users; authenticate users;
configure the client and operation of the system; retrieve contact
lists from networking services; manage contacts; provide
voice-based communication (e.g. phone calls, conference calls,
video phone calls, voicemail, and the like); provide text-based
communication (e.g. text messages, instant messages, and emails);
fax documents; transfer files; and/or manage service plans.
[0109] Referring again to FIG. 2, the client application 2 and host
application 5A may include various modules and engines to carry out
the example tasks listed above. Some modules of the client may
communicate with engines at the host application to carry out the
tasks. For example, a client and host application may include the
modules and engines listed below.
[0110] A host application 5A may include a registration engine 5B
for creating new user accounts.
[0111] A client application 2 may include an authentication module
2A that communicates with an authentication engine 5C of the host
application 5A to authenticate users and provide access to the UC
1.
[0112] The host application 5A may also include an initialization
engine 5O to initialize a new session with the client 18 after a
successful login. The initialization engine 5O may retrieve contact
lists from the instant messaging 13 and social networking services
14 to which the user belongs, and may transmit those contacts to
the client 18. The contents of the contact list may be displayed
for the user.
[0113] A client application 2 may include an initialization module
2B for accessing the instant messaging services 13 and social
networking services 14 to which a user belongs in order to retrieve
contact lists from those services. The initialization module 2B may
communicate with an instant messaging engine 5G and a social
networking engine 5L of the host application 5A to retrieve contact
lists and other information.
[0114] The client application 2 may also include a configuration
module 2C for inputting client and system configuration settings.
The client configuration module 2C may communicate with an
information engine 5J of the host application 5A to store the
configuration settings in a database.
[0115] A contact management module 2D of the client application 2
may also communicate with an information engine 5S of the host
application 5A to store profile and contact information relating to
one or more users or their contacts.
[0116] The client application 2 may include a voice message
management module 2D to provide voice-based communications (e.g.
phone calls, conference calls, video phone calls, voicemails, and
the like). To send and receive phone calls, the client application
may communicate with a voice message engine 5N of the host
application 5A, which may also communicate with a calling system,
such as VoIP phone system 3. The host application 5A may also
include a voice message management engine 5D that communicates with
the voice message management module 2E of for the management of
voice-based messages (e.g., the recording, display, playback, and
deletion of voice mail or recorded phone calls).
[0117] The client application 2 may also include a text-based
message management module 2F to facilitate text-based
communications. For example, the text-based message management
module may communicate with a text message engine 5M of the host
application 5A for sending and receiving text messages; an instant
messaging engine 5G or social networking engine 5L to send and
receive instant messages; or an email engine 5P for sending and
receiving emails.
[0118] A fax module 2G of the client application 2 may communicate
with a faxing engine 5I to send and receive faxes. The fax engine
5I may communicate with a calling system, such as the VoIP system
3, to facilitate the transmission of faxes. A fax module of the
host application 5A may facilitate the storage of faxes and/or
retrieval of faxes. The faxes may be displayed by the client
application 2.
[0119] The client application 2 may also include a file transfer
module 2H in communication with a file transfer engine 5K at the
host application for uploading files, downloading files, and/or
transmitting files to contacts.
[0120] The client application 2 may additionally include a
translation module 2J that communicates with a host translation
engine 5H that may be used to automatically translate text-based
messages sent to and received at the client application 2. The host
translation engine 511 may include or communicate with a
translator, such as a translation web service.
[0121] Further, the client application 2 may include a service plan
management module 2I for purchasing credits and service plans,
which may be necessary to use certain features of the UC 1. The
host application 5A may include a service plan management module
engine 5F for collecting purchase and payment information for
processing payments. Moreover, the service plan management module
2I, which may also have a corresponding module at the host
application, may communicate with the other modules and engines of
the client and host application, respectively, to monitor or track
usage or adjust credits of a user accordingly.
[0122] The modules and engines of an example client and host
application will now be described in more detail in the context of
the tasks they are designed to perform.
[0123] A. Registration
[0124] The UC 1 may require a user 19 to register before using the
system. The registration process is similar to conventional
registration processes known to those skilled in the art. The
universal communication system may provide a portal, such as a web
page, to collect registration information from a user. Registration
information may include, for example, the name, email address,
mobile cellular phone number, and other profile and contact
information of the user.
[0125] Referring now to FIG. 5, an example registration process is
shown. A user may access a registration portal as shown in step 101
and select and submit login credentials such as a username and
password as shown in step 102. The registration portal may be one
or more web pages in communication with a web server 4. The web
server 4 may be in communication with the registration engine 5B of
the host application 5A which processes, validates, and stores the
supplied registration information. The registration engine 5B may
communicate with the database server 6 for the storage of the
registration information during the registration process.
[0126] The registration engine 5B may receive the registration
information from the registration portal and validates the
registration information at step 104. For example, the registration
module 5B may ensure that the user has provided all required
information and that the information is valid (e.g. that the
desired username is unique, the password contains a specific subset
of characters, and that the email address is formatted properly.).
In one example, an email may be sent to the user to verify
ownership of the email address provided at login. In another
example, SMS verification may be performed. A text message may be
sent to a users' phone to verify ownership of the calling device. A
code may be required to complete the verification. If the
registration information is incomplete or invalid, the registration
engine sends an error message to the user at step 104A. If the
registration information is complete and valid, the registration
engine sends a confirmation to the user at step 105. Once a user
confirms the registration in step 106, the registration engine
creates a new user record in the system database and stores the
collected registration information in the database at step 107. In
another embodiment, step 106 may be optional.
[0127] In addition to the creation of a new user record, at step
108, the registration module may select and assign a unique phone
number and email address for the registered user and stores these
attributes in the database. The email address created may be based
on the username supplied during registration (e.g.
username@xxxx.com). Because the phone number and the email address
created during registration may be associated with a new user
account, each may be referred to as the account phone number and
the account email address.
[0128] The account phone number and account email address may be
used during the operation of the UC 1 to send and receive
communications. For example, a registered user may receive an
account phone number of 123-555-0000 and an account email address
of user@xxxx.com. Phone calls and text messages originating at the
client application 2 may be associated with the account phone
number. Similarly, phone calls and text messages to the account
phone number will be received at the client application 2.
Likewise, emails sent from the client application 2 may be
associated with the account email address, and emails sent to the
account email address may be received at the client application
2.
[0129] B. Authentication
[0130] The authentication module 2A of the client application 2 may
receive and submit to the host application 5A login credentials
(e.g. username and password) of a user to begin a new login
session. The authentication engine 5C of the host application 5A
may validate and/or authenticate the received login credentials
with the login credentials stored in the system database. If the
received login credentials match the stored login credentials, a
new login session is created. In one example, the validation may
include the return of an encrypted XML file containing SIP (VoIP
and IM login data). The contact list may be populated.
[0131] Now referring to FIG. 6 and FIG. 7, an example login window
110 and authentication process 200 are shown. To login, the client
application 2 presents a login window 110 as seen in FIG. 6. The
login window may include data input elements, such as text boxes,
to receive the user login credentials (e.g. username and password).
A user may submit the login credentials via a submit button.
[0132] An example login and authentication process 200 is shown in
FIG. 7. At step 201, a user inputs and submits login credentials at
the login window as described above. Upon submission of the login
credentials, the authentication module submits a login request
containing the login credentials to the authentication engine of
the host application as shown in step 202. At step 203, the
authentication engine receives the login credentials submitted at
the client. The host application then, at step 204, queries the
database for the stored login credentials of the user and compares
queried login credentials with the supplied login credentials at
step 205 to determine if a match exists at step 206. If the login
credentials do not match, the authentication engine may transmit a
failure message to the client as seen in step 207, which may then
be displayed to the user in step 208. If the login credentials
match, the authentication engine may transmit a login success
message to the client at step 209. Finally, in step 210, the host
application opens a new session with the client during the
initialization process. FIG. 8 shows a window if the login is not
successful.
[0133] C. Initialization
[0134] After a successful login authentication, the initialization
module 2B executes an initialization process. An example
initialization process 300 is shown in FIG. 9. The initialization
engine creates a new session with the client at step 302, following
a successful authentication in step 301. The initialization engine
then, in step 303, queries the database for the instant messaging
and social networking services the user has configured the system
to access. The configuration process will be described in further
detail below.
[0135] The database supplies the initialization engine with a
result set containing the services to access and the login
credentials for those services. At step 304, the initialization
engine checks the result set for remaining services to access. If
there are remaining services to access, the initialization engine
requests the contact list from the instant messaging service or
social networking service using the login credentials stored for
that service at step 305. The service then validates the login
credentials at step 306. If the login credentials are invalid at
step 307, the service sends the initialization engine an error
message at step 307A. If the login credentials are valid, the
service sends the contact list for the user to the initialization
engine at step 308, which then sends the contact list to the client
application at step 309. Finally, the initialization engine returns
to step 310 to determine if there are any remaining services to
access.
[0136] D. Client Interface
[0137] The client interface may include various windows,
navigational elements, command input elements, and data input and
output elements for receiving commands and data from a user and
displaying information and messages to a user. The navigation,
command input, and data input and output elements may include, for
example, buttons, menus, panels, tabs, check boxes, lists, text
boxes, icons, labels, scrollbars, and other user interface
elements.
[0138] An example client interface is described below and shown in
the accompanying Figures. Following a successful authentication and
initialization, the client may display a main window 310 to a user
as seen in FIG. 10. The main window 310 may include a main panel
that includes a menu bar and a series of tabs for navigating the
client.
[0139] The menu bar may include a set of menu options, which may
further include one or more sets of sub-menu options. An example
hierarchy of menu options and sub-options is listed in FIG. 10. The
tabs of the main panel may include, for example, a contacts tab, a
keypad tab, an applications tab, and a history tab. The menu
options and tabs may be used to navigate the client and/or carry
out the features of the system.
[0140] 1. The Contacts Tab
[0141] The contacts tab displays the contact lists of a user, which
were retrieved by the system during the initialization process. As
seen in FIG. 10, the contacts of a user may be organized in groups
according to the instant messaging or social networking service to
which the contact belongs. Each group may be collapsed or expanded
to respectively hide or display the contacts belonging to that
group as shown in FIG. 11. A user may select a contact or hover a
cursor over the contact in the list to display a set of
communication options. The communications options may include:
initiating a phone call; sending a text message; sending an instant
message; sending an email; sending a fax; or sending a file to the
contact. Selecting a contact in the list may display an option
panel directly in the list of contacts as shown in FIG. 12. The
option panel may include buttons for initiating a communication
with the selected contact. Alternatively, a user may simply hover a
cursor over a contact in the list to display next to the main
window an option panel having buttons to select a communication
method as seen in FIG. 13.
[0142] Selecting a communication method may display a message
window. An example message window is shown in FIG. 14. The message
window may include a panel that lists the contacts with which a
user is currently communicating; a message panel for inputting and
displaying messages; and a button panel having buttons to initiate
a new type of communication with the current contact.
[0143] Selecting a contact entry from the current contact list of
the message window may display the conversation with the selected
contact in the message panel. For phone calls, the message panel
may display a phone call status panel as seen in FIG. 15. The phone
call status panel includes buttons to end the phone call, place the
contact on hold, mute the call, transfer the call, or display a
keypad.
[0144] For text-based messages, the message panel may display a
sequence of messages sent from and received at the client
application as seen in FIG. 16. The text-based message panel also
includes an interface element (e.g. a button) to translate inbound
and outbound text-based messages. Selecting the translation button
may display a translation settings panel as seen in FIG. 17, which
may include interface elements to set the translations options. If
translation is enabled, the text-based message window may display
the translated text-based message to the user as seen in FIG. 18.
The displayed message may also include an interface element to
display the un-translated message as it was originally sent as seen
in FIG. 19.
[0145] For faxes, the message panel may display input elements to
select and submit a fax and information for a cover page as seen in
FIG. 20. For file transfers, the message panel may display input
elements to select and upload a file as seen in FIG. 21. When
transmitting a fax or a file transfer, the client may display to
the user a file selection interface as seen in FIG. 22.
[0146] Referring again to FIG. 14, the button panel of the message
window may include buttons to initiate the following types of
communications: phone calls; text messages; instant messages;
emails; faxes; and file transfers. Selecting a button from the
button panel initiates a new communication with the current contact
according to the selected method. For example, a user currently
communicating with a contact via instant message may select the
text message button to send a text message to the contact.
[0147] 2. The Keypad Tab
[0148] The keypad tab in the example shown in FIG. 23 displays a
panel that includes a dialing pad having buttons for dialing a
phone number. Once a number has been dialed, a user may select a
button to place a phone call, send a text message, or send a fax to
the dialed number. The keypad panel also includes buttons to
navigate to voicemail, redial the last phone number, view calling
rates, or initiate a conference call.
[0149] Selecting the redial button may automatically dial the last
number entered by the user with the keypad. Selecting the callings
rates button may display, in a web page for example, the rates for
calling various countries with the system. Selecting the conference
call button displays a panel in which a user may enter two phone
numbers to initiate a 3-way conference call. Like a 2-way phone
call, a message window displays a phone call status panel for each
contact participating in the call.
[0150] 3. The Applications Tab
[0151] The applications tab includes an application panel having a
series of buttons to navigate and initiate features of the system.
An example application panel of the applications tab is seen in
FIG. 24 includes buttons to navigate to a setup manager, a settings
manager, a contact manager, a message manager, a call-back manager,
a caller identification manager, and a service plan manager.
[0152] i. The Setup Manager
[0153] The setup manager button of the applications tab may display
a configuration window that steps through a series of setup panels
to gather configuration information from a user. The configuration
panels may exhibit navigation elements to move back and forth
between the configuration panels of the configuration window. As
seen in FIG. 25 through FIG. 31, the configuration panels may
include: a service selection panel; various service configuration
panels; a phone setup panel; an assistant setup panel; panels for
audio and video setup; and a profile panel.
[0154] Referring to FIG. 25, the service selection panel may
include selection options to indicate which instant messaging and
social networking services the system will access. Accordingly, the
service configuration panel, as seen in FIG. 26, includes data
input elements for collecting the login credentials for each
instant messaging or social networking service the user has
selected. The technical details relating to the access of various
instant messaging and social networking services will be described
in further detail below.
[0155] The phone setup panel, as seen in FIG. 27, may include text
boxes for inputting the various phone numbers (e.g. mobile, home,
work, fax, etc.) that belong to a user. The supplied phone numbers
are stored in the system and may be used when initiating phone
calls to the user.
[0156] The assistant setup panel shown in FIG. 28 may include data
input elements for selecting options relating to the communication
assistant.
[0157] The audio setup panel may include data input elements for
selecting the audio devices used by the system as seen in FIG. 29.
For example, a user may select the device used to input and output
audio.
[0158] The video setup panel seen in FIG. 30 may include data input
elements for enabling video for video phone calls and selecting a
video input device. Additionally, the video setup panel may include
a preview panel for testing video input to the client.
[0159] The profile panel of FIG. 31 may include data input elements
for inputting profile information relating to the user (e.g. name,
location, gender, birthday, and the like). The profile information
is stored in the system.
[0160] ii. The Settings Manager
[0161] The settings button in the "Apps" tab may display a settings
window that includes various panels having data input elements for
configuring the client. The settings panels may be similar to the
setup manager panels and may include: a general settings panel; a
service settings panel; an appearance settings panel; a phone
settings panel; a text message settings panel; an audio settings
panel; a video settings panel; an events settings panel; and a
notification settings panel.
[0162] The general settings panel displays data input elements for
configuring the client. Example general settings are shown in FIG.
32.
[0163] The service settings panel displays the instant messaging
and social networking services a user has configured the system to
access. The service settings panel may also include control
elements and data input elements for adding or modifying the
services a user has configured the system to access. Example
service settings are shown in FIG. 33.
[0164] The appearance settings panel displays data input elements
for configuring the visual appearance of the client interface.
Example appearance settings may be seen in FIG. 34.
[0165] Referring now to FIG. 35 through FIG. 39, the phone settings
panel may include data input elements for configuring the handling
of inbound phone calls. Phone settings selected in the settings
window will be applied to all inbound phone calls from all
contacts. Phone settings may also be specified on a group basis or
a contact-by-contact basis in the contact manager as described
below. The phone settings panel, as seen in FIG. 35, may also
include a series of tabs relating to various phone settings. The
phone settings tabs may include: a general phone settings tab; a
call direction tab; a caller identification tab; a voicemail tab;
and an audio tab.
[0166] As seen in FIG. 35, the general phone settings tab may
display options for managing the handling of inbound calls to the
client. For example, the general phone settings tab may include an
assistant setting, a call screening setting, a call prevention
setting, and a personalization setting. The assistant setting may
be enabled to instruct the voice message engine of the host
application how to handle inbound phone calls. For example, the
voice message engine may answer inbound phone calls for a user,
screen inbound phone calls, direct inbound phone calls to other
phone numbers, record voicemails, or receive faxes. Enabling the
call screening setting instructs the voice message engine of the
host application to request the name of the inbound caller and play
the name for a user before the user accepts the call at the client.
Additionally, the voice message engine may record the phone call or
direct the phone call to voice mail. The call prevention setting
may be enabled to prevent a user from receiving phone calls at the
client. If the call prevention setting is enabled, the system may
play an audio clip selected by a user. The audio clip may be a
generic sound, such as a busy signal, the computer-generated name
produce by a text-to-speech module, or an audio clip recorded by
the user.
[0167] The call direction settings tab, as shown in FIG. 36, may
display a panel for configuring the direction of inbound calls when
a user is unavailable at a particular phone number. The call
direction panel includes a hierarchical list of phone numbers at
which the user may be reached. If the user is unavailable at one
particular number, the system will initiate a call to the next
number in the list until the user answers. The call direction panel
includes data input elements for inputting phone numbers at which
the user may be reached. In addition, the call direction panel
includes data input elements for selecting the amount of time the
inbound call will ring before the system initiates a call to the
next phone number in the list. Moreover, the call direction panel
also includes a data input element to: enable or disable the call
direction feature; enable or disable particular phone numbers in
the list; and instruct the system to call all numbers
simultaneously rather than sequentially. The technical features of
the call direction feature will be described in further detail
below.
[0168] Referring to FIG. 37, the caller identification settings tab
includes a panel for configuring a caller identification option.
The caller identification panel includes data input elements for
selecting what number is displayed when the client directs an
inbound phone call to a landline or mobile cellular phone of the
user. A user has the option of displaying the phone number of the
inbound caller or the account phone number. For example, if the
system receives a call at the account phone number and directs the
call to the cellular phone of a user, the caller identification of
the cellular phone may display either the phone number of the
inbound caller or the account phone number of the user. The caller
identification panel may also include a text box for inputting the
number displayed to contacts when placing a call from the client.
By default, the number displayed for outbound calls may be the
account phone number.
[0169] The voicemail settings tab, as shown in FIG. 38, includes a
panel for configuring the voicemail options of the system. The
voicemail settings panel may include: options for specifying a
voicemail greeting; an option to specify how long an inbound phone
call will ring before being directed to voicemail; and an option to
specify a voicemail personal identification number. The voicemail
greeting options may include a standard voicemail greeting; a
standard voicemail greeting using the name of the user; an audio
clip of a text-based greeting converted by a text-to-speech module;
or an audio clip recorded by the user upload to the system.
[0170] Finally, the audio tab includes a panel for setting audio
options for callers when an inbound call is ringing and when a
contact is placed on hold as seen in FIG. 39. A user may select a
standard audio option or a custom audio option.
[0171] The text settings panel may include input elements for
configuring the handling of text messages received at the client.
For example, a user may instruct the system to forward text
messages received at the client based on the status of the user.
The forwarded text messages may be sent to the email address or
mobile cellular phone number of the user. Example text message
settings may be seen in FIG. 40.
[0172] The audio settings panel includes input elements for
configuring the audio devices of the computing device and input
elements to specify call protection methods. Example audio and
security settings may be seen in FIG. 41.
[0173] The video settings panel includes input elements for
enabling video phone calls and input elements for configuring and
testing the video device of the computing device. Example video
settings may be seen in FIG. 42.
[0174] The event settings panel includes input elements for
configuring the handling of particular events that occur during use
of the system. For example, a user may select audio clips to play
when an incoming call is received, when a phone call ends, and when
an instant message is received. Example event settings may be seen
in FIG. 43.
[0175] The notification settings panel includes input elements for
configuring notifications initiated by the system to inform a user
of certain events. For example, the system may send to the user an
email or text message when a new voicemail, fax, or text message is
received at the client. Example event settings may be seen in FIG.
44.
[0176] iii. The Contact Manager
[0177] The contact manager button may display a contact window that
may be used to edit information relating to the contacts of a user.
As shown in the example window of FIG. 45, the contact manager
window may include a group listing panel, a contact listing panel,
an information panel, and a search panel.
[0178] The group panel may list the current contact groups of a
user. Selecting a group from the group list may display all
contacts for that group in the contact listing panel. Selecting a
contact from the contact list may display the profile and contact
information for the contact in the information panel. A user may
select a contact edit button or phone settings edit button to
modify the stored information and phone settings for a contact.
[0179] Selecting the contact edit button displays an edit panel as
shown in FIG. 46. The edit panel of the contact window may include
data input elements with which a user may enter profile and contact
information such as name, phone number, instant message
"screennames," email addresses, street addresses, and the like.
Selecting the phone settings edit button displays an edit panel
having data input elements for selecting the phone settings for a
particular contact. In the example shown, the phone settings
displayed are the same as those mentioned above for the general
settings manager. As discussed above, phone settings may be set
globally for all contacts, or on a contact-by-contact basis in the
contact manager.
[0180] iv. The Message Manager
[0181] The message manager provides the user with a list of stored
voicemails, faxes, and recorded phone calls. The message manager
may display a message management panel having a series of message
tabs for displaying the stored messages as shown in FIG. 47. The
message manager tabs may include a voicemail tab, a fax tab, and a
recorded phone call tab. A user may select each tab to display the
list of stored messages for each type of message.
[0182] An example voicemail tab is shown in FIG. 48. Selecting the
voicemail tab may display a list of voicemails the system has
stored for a user. A user may select a voicemail to display a
playback panel. The playback panel includes buttons a user may
select to play or delete the voicemail.
[0183] An example fax tab is shown in FIG. 49. Selecting the fax
tab displays a list of faxes the system has stored for a user. The
fax entries in the list may include a button to display the fax or
the delete the fax. A fax may be stored in database server 6 and
streamed to the client application 2. Alternatively, the fax may be
downloaded by the computing device 2.
[0184] An example of a recorded phone tab is shown in FIG. 50.
Selecting the recorded phone call tab similarly displays a list of
phone calls that have been recorded and stored in the system.
Selecting a recorded phone call may also display a playback panel
having buttons to play or delete the recorded phone call.
[0185] v. Call-Back
[0186] The call-back button of the applications tab displays a call
back panel that includes tabs for accessing the web call-back
feature and the text-call back feature as seen in FIG. 51. The web
call-back tab displays a panel, as shown in FIG. 51, having text
boxes to input a phone number of the user and a phone number of a
contact. The user may select a button to initiate the call-back
call.
[0187] The text message call-back feature may require prior setup
before a user may use a text-message enabled device to initiate a
call-back via text message. Accordingly, the text message call-back
tab may display a panel, as shown in FIG. 52, having a text box to
input the phone number of the text-message enabled device that will
be used to initiate a text message call-back. The user may then
select a button to store the phone number in the system for use
when initiating the outbound call to the user.
[0188] The technical details of the call-back feature will be
described in further detail below.
[0189] vi. Caller Identification Display
[0190] The caller identification display button of the applications
tab displays a panel, as shown in FIG. 53 that includes a text box
to input a phone number to be presented to caller identification
systems when placing an outbound call at the client. The technical
details of the caller identification display will be described in
further detail below.
[0191] vii. The Service Plan Manager
[0192] The service plan manager button displays a service plan
manager panel having buttons to purchase credits, calling plans, or
text messaging plans that may be required to use the system as seen
in FIG. 54. The service plan manager may also include the ability
to purchase a virtual number. In a number in other embodiments,
selecting the credit button displays a credit purchase panel having
buttons to purchase variable amounts of credits such as, for
example, $5, $10, and $20 worth of credits as seen in FIG. 55.
Similarly, the calling plan purchase button and the text plan
purchase button displays respective panels that include buttons to
select a calling plan or a texting plan as seen in FIG. 56 and FIG.
57.
[0193] Selecting a credit amount, calling plan, or texting plan
will then display a purchase panel having input elements to collect
payment and billing information from the user. An example purchase
panel is shown in FIG. 58. The purchase information panel includes
buttons to cancel the order or submit the order. Selecting the
cancel button may return the user to the service plan manager
panel. Selecting the submit button transmits the payment and
billing information to the host application for processing. The
technical details of the service plan management feature will be
described in more detail below.
[0194] 4. The History Tab
[0195] The history tab includes a list of all communications
initiated or received at the client (e.g. inbound and outbound
phone calls, text messages, text messages, email messages, faxes,
and file transfers). An example history tab is shown in FIG. 59. A
user may select an entry from the list to initiate a new phone call
to the contact or display a transcript of the messages sent during
the communication, as seen in FIG. 60. The system logs each
text-based message sent and received by a user at the client.
Selecting an entry for a text-based communication may display the
transcript in a transcript window.
[0196] E. Configuration
[0197] The configuration module of the client receives information
to configure the client according to the preferences of a user. The
configuration module of the client also receives and stores
personal and contact information of a user. Data associated with a
contact may be stored in a database. If information about a contact
is changed, any new information or the entire set of information
may be passed through the API to store in the database. The contact
information may be retrieved any time the UC 1 is available. In
other embodiments, the information may be made inaccessible.
[0198] The configuration module of the client may communicate with
an information engine of the host application to store user
selected options and settings, profile information, and contact
information in the system database.
[0199] F. Contact Management
[0200] The contact management module of the client receives
information relating to user contacts and contact options and
submits this information to the host application for storage in the
system database. User contact information includes profile and
contact information such as the street addresses, email addresses,
phone numbers, and instant message "screennames."
[0201] The contact management module of the client may also
communicate with an information engine of the host application to
store user contact profile information, contact information, and
contact options in the system database.
[0202] G. Voice-Based Communication
[0203] The voice message management module of the client provides a
variety of features relating to phone calls. The voice message
management module may send to and receive calls from contacts
having landline, mobile cellular, or VoIP phone numbers. The voice
message management module of the client may also acquire, display,
retrieve, and playback voicemail messages for a user.
[0204] In addition, the voice message management module of the
client provides advanced features that include: handling of
incoming calls at the client; transferring calls at the client to
landline or mobile phone numbers; providing options for
notifications of voicemail; eavesdropping on the recording of voice
mails; directing inbound calls at the client according to a
hierarchy of phone numbers; customizing the path of incoming calls
for particular contacts; and initiating calls between landline or
mobile phones from the client.
[0205] The voice message engine of the host application facilitates
the communication of voice-based messages using VoIP. Those skilled
in the art recognize that VoIP refers to the delivery of voice or
facsimile communications over packet-switched networks, such as the
Internet. The voice message engine provides voice-based
communication between a user at a client and contacts who may be
using traditional land line, mobile cellular, or VoIP telephony
systems.
[0206] The voice message management module of the host application
facilitates the storage, query, retrieval, and transmission to the
client of voicemails and recorded phone calls. The technical
details regarding various voice-based communications will now be
described.
[0207] 1. Outbound Phone Calls
[0208] i. 2-Way Outbound Phone Calls
[0209] An example process illustrating the steps of an outbound
phone call is now described. First, an advanced Network Address
Translation ("NAT") and firewall detection is performed. This
enables the client application to place a call and includes
leveraging ICE, STUN, TURN and HTTP tunneling.
[0210] ii. 3-Way Conference Phone Calls
[0211] An example process of an outbound, 3-way conference call is
now described. A 3-way conference call is created by building two
unique calls and then initiating a "refer" to connect them together
following a standard SIP call flow.
[0212] iii. Video Communications
[0213] Video calls may be made using the same process as the 2-way
outbound call described above. In addition, known video codecs,
such as H.264, are used to handle the video content.
[0214] 2. Inbound Phone Calls
[0215] i. Receiving Phone Calls
[0216] An example overall process 400 for receiving a phone call at
the client is shown in FIG. 61. At step 401, the voice message
engine of the host application receives an inbound phone call from
the phone system. Upon receiving a phone call, the voice message
engine first retrieves the phone settings for the user in order to
determine how to handle the call. An example process 500 for
retrieving the phone settings is shown in FIG. 62. Once the phone
settings have been retrieved, the voice message engine may
determine how to handle the inbound call.
[0217] In step 403, the voice message engine determines if the
block call setting is enabled. If so, the voice message engine
plays the blocked call audio for the caller at step 403A. The
blocked call audio may be a standard busy signal, computer
generated speech, or an audio file uploaded by the user. If the
blocked call setting is not enabled, the voice message engine
determines if the assistant setting is enabled in step 404.
[0218] If the assistant setting is enabled, in step 404A, the voice
message engine informs the user of options for answering the
call--either directing the call to voicemail, as shown in step
404C, or executing the standard inbound call process, as shown in
step 405, which may include screening the call or locating the
user.
[0219] Referring now to FIG. 62, an example process for retrieving
the phone settings of a user is shown. As mentioned above, the
voice message engine retrieves the phone settings when an inbound
call is received at step 501. In step 502, the voice message engine
determines if the inbound caller is a known contact according the
caller identification information. If the inbound call is not a
known contact, the voice message engine will query the database for
the general phone settings of the user in step 502A.
[0220] However, if the inbound call is a known contact, the voice
message engine, in step 503, determines if the user has stored
contact-specific phone settings in the system. If contact-specific
phone settings exist, the voice message engine queries the database
for the phone settings of the known contact in step 504A. If no
contact-specific phone settings exist, the voice message engine, in
step 505, determines if group-specific phone settings exist for the
group to which the contact belongs. If group-specific phone
settings exist at step 506, the voice message engine queries the
database for the phone settings of the group in step 506A. However,
if no contact-specific phone settings and no group-specific phone
settings are stored for the known contact, the voice message engine
queries the database for the general phone settings stored for the
contact in step 506B.
[0221] With reference to FIG. 63, an example process for the
standard inbound phone call process 600 is shown. In step 601, the
voice message phone system receives an inbound phone call with the
assistant setting disabled. The voice message engine then
determines, in step 602, whether the call screening setting is
enabled. If the call screening setting is enabled, the voice
message engine determines, in step 602A, if the inbound call is the
first time the contact has called the user. If so, the voice
message engine acquires identifying information from the contact,
such as a name, and stores this identifying information in the
database at step 602B before proceeding to step 603.
[0222] The voice message engine also proceeds to step. 603, if call
screening is not enabled or the contact is not a first time caller.
In step 603, the voice message engine determines if the user
location setting is enabled. If so, the voice message engine
executes the user location process in step 603A and as shown in
FIG. 64. If not, the voice message engine determines establishes a
connection with the client application in step 604 and the proceeds
to determine whether the user has answered the inbound call in step
605.
[0223] If the user has not answered the inbound call, the voice
message engine directs the call to voicemail in step 605B. If the
user does answer the inbound call, the voice message engine again
determines, in step 605A, if the call screening setting is enabled.
If the call screening setting is not enabled, the voice message
engine connects the inbound caller to the user in step 607. If the
call screening setting is enabled, the voice message engine plays
the identifying information stored for the contact in step 606, and
provides the user the option to accept or reject the call in step
608. If the user accepts the call, the voice message engine
connects the inbound caller with the user in step 607. If the user
rejects the call, the voice message engine directs the inbound
caller to voicemail in step 605B.
[0224] ii. User Location
[0225] The UC 1 includes a feature that will initiate and direct
phone calls to a hierarchy of phone numbers at which the user may
be reached. An example process 700 for directing phone calls is
shown in FIG. 64. In step 701, the voice message engine receives an
inbound phone call to the user at the client where the user locate
setting is enabled. In step 702, the voice message engine queries
the database for the ordered list of phone numbers at which the
user may be reached, and the database supplies the voice message
engine with a resulting set of phone numbers at step 703.
[0226] In step 703, the voice message engine initiates an outbound
phone call to the user at the current number in the list. The voice
message engine monitors how long the phone call rings at the
current number and determines, in step 704, if the time exceeds the
maximum ring time for that phone number. If the ring time exceeds
the limit, the voice message engine moves on to the next phone
number in the list in step 704 and initiates an outbound call to
the next phone number in the set in step 706. If the ring time does
not exceed the limit and the user answers the phone call, the voice
message engine connects the user with the inbound call at step
708.
[0227] In step 705, the voice message engine will direct the
inbound call to voicemail if there are no remaining phone numbers
in the list.
[0228] iii. Transferring Phone Calls
[0229] Phone calls may be transferred using the "refer" message as
discussed above concerning conference calls.
[0230] 3. Call-Back
[0231] Call-back is a feature of the DC whereby the system will
initiate two outbound phone calls--one to a user and one to a
contact--and bridge the two outbound calls to provide a connection
between the user and the contact. The DC provides two options for a
call-back, a web call-back and a text message call-back.
[0232] The web call-back feature accepts two phone numbers at the
client--the phone number of the user and the phone number of the
contact. The system then initiates a phone call to the user at the
supplied user phone number and a phone call to the contact at the
supplied contact phone number. The outbound calls are then bridged
so that the user may communicate with the contact.
[0233] The text message call-back feature allows a user to send a
text message containing the contact number to call, and the system
will initiate two outbound calls to bridge the calls and establish
a connection with the contact. Like the web call-back feature, one
outbound call is initiated to the supplied contact phone number.
The other outbound call of the text message callback feature is
initiated to the phone number at which the text message
originated.
[0234] i. Web Call-Back
[0235] An example web call-back process 800 is shown in FIG. 65. In
step 801, a user enters a user phone number at the client as
discussed above in reference to FIG. 51. The user phone number is
the phone number at which the system may call the user. Next, in
step 802, the user enters a contact phone number or selects a
contact to call at the client also as mentioned above in reference
to FIG. 51. The user then, in step 803, submits these numbers to
the voice message engine of the host application. The voice message
engine then initiates two outbound phone calls--one to the user at
the user number and one to the contact at the contact phone
number--as seen in step 804 and step 805. The voice message engine
then bridges the two outbound phone calls to establish a connection
between the user and the contact at step 806. Once the phone calls
are bridged and the user and the contact answer the respective
outbound phone calls, each may begin communicating.
[0236] ii. Text-Message Call-Back
[0237] The text-message call-back feature of the UC may require a
user to register the phone number with which the user will be
requesting text-message call-backs. Shown in steps 901 through step
908 is an example of the text-message call-back process 900 of FIG.
66.
[0238] In step 901, the user enters a call-back phone number at the
client as mentioned above with reference to FIG. 52. In step 902,
the user submits the call-back number to the host application, and
the host application stores the call-back number in the appropriate
user table of the database as seen in step 903. Once the call-back
number is stored in the database, the user may initiate a call-back
via text message.
[0239] As seen in step 904, a user submits a text message to a
call-back phone number associated with the universal communication
system. The text message includes the number of the contact the
user desires to call. In step 905, the voice message engine of the
host application receives the text message and queries the database
for the call-back number of the user. As above, the voice message
engine then initiates an outbound call to the user at the call-back
number in step 906 and an outbound call to the contact at the
number contained in the text message in step 907. The voice message
engine then bridges each outbound phone call to establish a
connection between the user and the contact at step 908.
[0240] H. Text-Based (Non-Voice) Communication
[0241] The client and the host application are adapted to
facilitate text-based communications, including text messages,
instant messages, and email messages. Accordingly, the client
includes a text-based message management module that communicates
with a text message engine, an instant message engine, and an email
message engine of the host application.
[0242] The text-based message management module of the client sends
from the client and receives at the client text messages, instant
messages, and email messages between a user and a contact.
[0243] 1. Text Messaging
[0244] The text messaging engine of the host application
facilitates the transmission of text messages via a network between
a user at a client and a contact using a computing device capable
of receiving text messages, such as a mobile cellular phone. Those
skilled in the art will recognize that the text message engine may
transmit text messages via a cellular network and/or an IP-based
network such as the Internet.
[0245] If a user enables text forwarding, the server may perform
additional steps when an inbound message is received. First, the
server may determine if the user is online, away, or offline. The
server may look at a user's preferences to determine how deliver a
message. The server may redirect messages, when a user is
offline.
[0246] 2. Instant Messaging
[0247] The instant messaging engine of the host application
communicates via a network with one or more instant messaging
services to facilitate communication between a user at a client and
a contact using an instant messaging service. Similarly, the social
networking engine of the host application communicates with one or
more social networks to facilitate communication between a user at
a client and a contact using a social network service.
[0248] I. Faxing
[0249] The fax management module of the client receives faxes at
the client, transmits faxes from the client, displays a list of
received faxes at the client, and requests received faxes stored in
the system database from the host application.
[0250] The fax module of the host application retrieves fax
documents stored in the system and transmits the fax documents to
the client for display. The fax engine of the host application
facilitates the transmission of facsimile documents between a user
at a client and a contact. The fax engine may transmit a fax to a
traditional fax machine via a public switch telephone network
(PSTN) or electronically via an IP-based network such as the
Internet.
[0251] The fax management module of the host application
facilitates the storage, query, retrieval, and transmission to the
client of faxes received.
[0252] J. File Transfer
[0253] The file transfer module of the client receives a file
selection from a user, uploads the file to the server, and provides
the user with a link to the file which may then be sent to contacts
and used to download the file.
[0254] The file transfer engine of the host application facilitates
the transmission of files between a user at a client and a contact.
The file transfer engine receives a file from a client and stores
the file on the server. The file transfer engine also creates a
uniform resource identifier (URI) (e.g., a uniform resource locator
(URL)) that represents a path to the file residing on the server.
The file transfer engine provides the user at the client with the
identifier, and the user may then transmit the identifier to a
contact by text message, instant message, or email. A contact may
use the identifier to download the file.
[0255] 1. Uploading a File
[0256] An example file upload process 1000 is shown in FIG. 67. At
step 1001, a user at a client selects a contact to receive a file
transfer. At step 1002, the user submits to the client a file
transfer request to the selected user. The user may initiate a file
transfer to a contact using any of the methods described above.
[0257] At step 1005, the file transfer module of the client sends a
file upload request to the file transfer engine of the host
application. The upload request may be, for example, an HTTP
request having the following format:
https://filetransfer.voxox.im/upload_step/[UNIQUE_ID]/[VOXOX_ID]/-
[RECIPIENT]. In this example, [UNIQUE_ID] is a unique identifier
generated by the file transfer module; [VOXOX_ID] is the username
of the user uploading the file at the client; and [RECIPIENT] is a
URI for the recipient of the file.
[0258] The file upload request is used to display a file upload
interface, as shown in step 1003, for selecting a file to upload.
The file upload interface may be, for example, an HTML-based form
having file selection controls. An example file selection interface
is shown in FIG. 22. The file transfer engine of the host
application may receive the file transfer request and serve the
file selection form to the client. At step 1004, the user selects a
file to transfer at the file selection interface.
[0259] At step 1005, the file transfer module of the client submits
the file to the file transfer engine of the host application. The
file transfer module may submit the file via, for example, an HTTP
POST request having the following format:
https://filetransfer.voxox.im/upload_step2; and having the
following variables: $file; $uid; $voxox_id; and $recipient. In
this example, $file is the file to be transferred; $uid is the same
unique identifier generated by the file transfer module; $voxox_id
is the username of the user uploading the file; and $recipient is
the same URI for the recipient of the file as mentioned above.
[0260] At step 1006, the file transfer engine of the host
application receives the file and saves the file on the system
server. The file transfer engine may save the file with the
following internal naming format: [FILE MD5 CHECKSUM]-[UPLOAD
TIMESTAMP]. In this example, the [FILE MD5 CHECKSUM] is the result
of the MD5 hashing algorithm with the upload file as input; and the
[UPLOAD TIMESTAMP] is the time at which the file was uploaded.
[0261] In addition to saving the file on the system, the file
transfer engine creates a new entry in the file transfer history
table of the database at step 1007. The file transfer engine may
also include the following information in the new entry: a unique
identifier for the new entry; the username of the sender; a URI for
the recipient; an upload timestamp; the internal filename generated
by the file transfer engine; the actual filename of the file as
uploaded; and the number of times the file has been downloaded.
[0262] At step 1008, the file transfer engine generates a download
link, which may be used to retrieve the file. The download link may
be in the following format:
https://filetransfer.voxox.im/download/[FILENAME]/[USERNAME MD5
CHECKSUM]. In this example, the [FILENAME] is the internal or real
filename of the uploaded file; and the [USERNAME MD5 CHECKSUM] is
the result of the MD5 hashing algorithm with the username of the
user that uploaded the file as input. Following the generation of
the download link, the file transfer engine sends the download link
to the user at the client in step 1009, and the client displays the
download link to the user in step 1010.
[0263] 2. Downloading a File
[0264] An example file download process 1100 is shown in FIG. 68.
At step 1101, a user at a computing device sends a download request
to the file transfer engine of the host application. The download
request may be in the form of the download link as described above.
At step 1102, the file transfer engine receives the download
request, and the file transfer engine checks that the file exists
on the system server in step 1103. If the file does not exist, the
file transfer engine sends an error message to the user at the
computing device in step 1105.
[0265] At step 1104, the file transfer engine determines if the
number of times the file has been downloaded exceeds the maximum
number of downloads allowed. The file transfer engine queries the
file transfer database for the entry associated with the file
indicated in the download link. The file transfer engine then
extracts from the resulting entry the number of times the file has
been downloaded. If the number of times the file has been actually
downloaded exceeds the maximum number of allowable downloads, the
file transfer engine will send an error message to the user in step
1104, as mentioned above. If the number of times the file has been
downloaded is less than the number of maximum allowable downloads,
the file transfer engine sends download information to the user at
the computing device as seen in step 1106. If the user confirms the
download of the file in step 1107, the file transfer engine of the
host application serves the file to the user in step 1108 and the
file transfer engine will update the file transfer entry in the
database at step 1109.
[0266] K. Translation
[0267] A client may use a translation module at the client to
translate inbound and outbound text-based messages. The translation
module of the client provides an interface with which the user may
configure the translation module. An example translation
configuration interface is shown in FIG. 17. A user may enable or
disable the translation of both inbound and outbound messages. When
translation is enabled, a user may select the source text language
and the target language for the inbound and outbound messages. The
source text language is the language of the text to be translated,
and the target language is that of the resulting translated
text.
[0268] The translation engine of the host application receives the
translation settings from the translation module of the client and
automatically translates text-based messages (e.g. text messages,
instant messages, and email messages) exchanged between the client
and a contact. The translation engine utilizes a translator, such
as an Internet web-service, to perform the translation of the
messages.
[0269] An example translation process 1200 for inbound and outbound
text-based messages is shown in FIG. 69. The translation process
begins after a user has enabled the translation of inbound and
outbound messages at step 1201. In step 1202, a text based message
is sent from the client, which is then sent to the host application
at step 1204. In step 1203, a text-based message from a contact is
received at the host application. At step 1205, if translation is
enabled, the translation module sends a message to the translator
at step 1206. At step 1207, the translator sends the translated
message to the translation module. At step 1208, the translation
module sends the text-based message to one of several engines. At
step 1210, one of several engines sends message to contact. One of
several engines may also send the message to the text-based message
management module of the client at step 1209, and then the message
may be displayed to the user at step 1211.
[0270] Referring again to step 1205, if translation is not enabled,
steps 1208-1211 may be performed as shown and described above.
[0271] L. Service Plan Management
[0272] The service plan management module of the client and the
host application monitor usage of the system and collect and
process payment information for subscribing to usage plans or for
purchasing credits, which may be required to use certain features
of the system. Accordingly, the service plan management module may
communicate with other modules of the client and with the host
application to track and record credits used during operation of
the system.
[0273] The service plan management module of the host includes a
payment processing engine and a usage monitoring module. The
payment processing engine communicates with a payment processor to
facilitate the purchase of additional credits or to charge for
monthly service plans. The payment processor may be a conventional
online payment processing service. The usage monitoring module
monitors the amount of credits consumed and purchased by a user and
updates the database accordingly. The usage monitoring module may
receive instructions from other modules and engines of the host
application to modify the amount of available credits for a
user.
IV. SOCIAL MARKETING
[0274] The universal communication system may also be adapted as a
marketing system to provide marketing opportunities for users
interconnected by one or more instant messaging services. As
described above, the marketing system collects the login
credentials for the instant messaging and social networking
services to which a user belongs. The marketing system also stores
the user information and characteristics, which is used to match
users with marketing campaigns. A marketing campaign is created and
stored in the system, and each marketing campaign includes
marketing data that defines the scope of the campaign and the
characteristics of target users. A marketing message is also
created and associated with each marketing campaign. When the
campaign is launched, the marketing system matches users with
campaigns according to the selected user criteria for the campaign.
The marketing system then sends an invitation to each user to view
the marketing message via the instant messaging and social
networking services. Finally, the social marketing system tracks
the instances in which an invitee opts to view the marketing
message.
[0275] A. Overview
[0276] An example social marketing system is shown in FIG. 70. A
social marketing system includes an application server 1304, a
database server 1305, and a delivery agent 1306. A user 1301 at a
client 1302 communicates with the application server 1304 via a
network 1303. The client may be, for example, a traditional
computing device having the universal communication client
discussed above, a web-based application, a mobile application for
a cellular phone, and the like. The network may be, for example, an
IP-based network, such as the Internet, or mobile cellular
networks.
[0277] The application server includes a social marketing engine
1304a for processing campaigns, identifying matching contacts, and
generating campaign invitations for the contacts. The application
server also maintains an invitation queue 1304b for pending
invitations.
[0278] The database server 1305 includes a database 1305a for
storing the user information, campaign information, and tracking
information used by the social marketing system.
[0279] The delivery agent polls the queue for pending invitations
and delivers invitations to contacts (invitees) 1312 over network
1311 to view marketing messages for marketing campaigns. The
delivery agent may be, for example, a mail transfer agent (MTA), an
instant message gateway, a text message gateway, or a phone system.
Accordingly, an invitee might receive an invitation to view a
marketing message in an email, an instant message, a text message,
or a phone message.
[0280] B. Marketing Database
[0281] The database of the social marketing system includes
multiple tables defined by a database schema to store information
relating to users, social marketing campaigns, and tracking
information for campaigns. An example database schema is shown in
FIG. 71.
[0282] An example database schema may include: a user table for
storing user account information; a user characteristics table for
storing the characteristics of each user; a network services table
for storing the instant messaging and social networking services
accessible by the social marketing system; a user networks table
for storing the instant messaging services and social networking
services to which a user belongs; a networks contacts table for
storing the contact information for the instant messaging contacts
and social networking contacts of a user; a campaign table for
storing campaign information; a campaign conditions table for
storing the characteristics of the target users for the campaign; a
campaign message table for storing the marketing message for each
campaign; a campaign invitation method table for identifying the
invitation method (e.g. instant message, text message, email, etc.)
for each campaign; an invitation table for storing the invitations
to contacts during active campaigns; an invitation status table for
storing the status of each invitation; a tracking status table that
stores information relating to viewership of the marketing message;
and a tracking information table for storing information relating
each invitee that views the marketing message.
[0283] C. Campaign Creation
[0284] Creating a campaign is the first step in using the social
marketing system. An example campaign creation process 1500 is
shown in FIG. 72. At step 1501, a user inputs the campaign
information into the system. Campaign information includes, for
example, the desired delivery method (e.g. email, instant message,
text message, or phone message), the desired characteristics of
target contacts, the scope and timing of the campaign, and the
like. During the creation of a campaign, a user also creates a
marketing message associated with the campaign. As mentioned above,
the marketing message may be text-based or audio-based and
presented to a contact at a landline or mobile cellular phone or at
a computing device in an email, instant message, web page, and the
like.
[0285] Once a user has entered the campaign information at step
1502, the database of the social marketing system creates new
entries in the campaign tables to store the campaign information
and the marketing message, as seen in step 1503.
[0286] D. Campaign Execution
[0287] Following the creation and storage of a campaign, the system
may then execute the campaign to send marketing invitations to
contacts. An example campaign execution process 1600 is shown in
FIG. 73.
[0288] In step 1601, the social marketing engine queries the
database for campaigns to execute. For each campaign to execute in
step 1602, the social networking engine queries the database for
contacts matching the conditions set up stored for the campaign, as
shown in step 1603. Matching criteria may include, for example,
personal information (e.g. name, address, age, sex, interests, and
the like), relevance of the subject matter of the marketing message
to contact profile information, permission of contacts to receive
marketing invitations, and other metrics. As seen in step 1604,
user may also selectively remove contacts from the list of matching
contacts to prevent those contacts from receiving an invitation. At
step 1605, the process determines if there are more users at step
1605. If there are no more users, the process proceeds back to step
1602. If there are more users at step 1605, step 1606 is executed
until frequency conditions are not met.
[0289] For each contact in the result set of matching contacts, the
social marketing engine will determine, as seen in step 1606, if
the campaign frequency conditions are met. Frequency conditions
refer to the numbers of times a campaign invitation will be
delivered to a contact. Frequency conditions may also refer to the
number of times the social networking engine will reattempt the
invitation in the case of a failed delivery.
[0290] If the frequency conditions have not been met, the social
marketing engine will create a new invitation for the contact and
store the invitation in the invitation queue at step 1607.
[0291] E. Campaign Delivery
[0292] Following the creation of a campaign and the addition of
invitations to the invitation queue, the invitations may be
delivered to the contacts. An example invitation delivery process
1700 is shown in FIG. 74. At step 1701, the delivery agent queries
the application server for pending invitations in the invitation
queue. At step 1702, the application server queries the database
for invitations that have not been delivered. For example, the
application server may query the database for invitations having a
status of "NOT SENT."
[0293] If no pending invitations remain, step 1701 is executed. If
pending invitations remain at step 1703, the delivery agent then
retrieves a pending invitation from the result set, as shown in
step 1704, and determines in step 1705 whether the invitation has
exceeded the maximum number of delivery attempts. If the delivery
attempts for the invitation exceed the maximum allowable delivery
attempts, the delivery agent submits an update request to the
application server in step 1705a. Then, in step 1705b, the
application server updates the invitation entry in the database
setting the status of the invitation to, for example, "FAILED."
[0294] However, if the number of delivery attempts is below the
maximum, the delivery agent, in step 1706, sends an update request
to the application server to update the status of the invitation.
The application server may then, in step 1707, update the
invitation entry in the database and set the status of the
invitation as, for example, "IN PROGRESS". Next, in step 1709, the
delivery agent sends the invitation to the contact according to the
defined delivery method. For example, if the delivery agent is an
email server, the agent sends an email to the contact at the email
address associated with the contact in the database. Alternatively,
if the delivery agent is an instant message gateway, the agent
sends an instant message to the contact using, for example, XMPP as
mentioned above, at the "screenname" associated with the contact in
the database.
[0295] Following a successful delivery of an invitation, the
delivery agent may send an update request to the application
server, as seen in step 1708, to update the invitation entry in the
database. Upon receipt of the update request, in step 1710, the
application server may update the invitation entry in the database
and set the status of the invitation to, for example,
"DELIVERED."
[0296] F. Campaign Feedback and Tracking
[0297] The social marketing system may also be designed to track
how many contacts accept the marketing invitation and view the
marketing message. An example tracking process 1800 is shown in
FIG. 75. At step 1801, an invitee accepts the invitation delivered
by the delivery agent. As mentioned above, invitations may be in
the form of an HTTP URL that the invitee may click to view the
marketing message in a web page. Accordingly, clicking the
invitation link may send a request to the application server to
view the marketing message for the campaign, as shown in step 1802.
In this example, the URL may also include encrypted information for
tracking when an invitee clicks on the invitation link, such as the
name of the campaign and the name of the invitee.
[0298] Upon receipt of a request to view a marketing message, the
social networking engine validates the encrypted information, as
seen in step 1803. If the encrypted information is invalid, the
social networking engine will ignore the request to view the
marketing message at step 1805. However, if the encrypted
information is valid, the social networking engine, in step 1806,
updates the database and creates new entries in the click tracker
table and the click tracker information table to store tracking
information relating to the request.
[0299] If the database update is successful in step 1807, the
social networking engine forwards the invitee to the marketing
message as in step 1809. For example, the social networking engine
may forward the invitee to a web page containing the marketing
message as in step 18. However, if the database update was
unsuccessful, the social networking engine will send an error
message to the user as shown in step 1808.
V. CONCLUSION
[0300] The invention illustratively disclosed herein suitably may
be practiced in the absence of any element, part, step, component,
or ingredient which is not specifically disclosed herein.
[0301] While in the foregoing detailed description this invention
has been described in relation to certain preferred embodiments
thereof, and many details have been set forth for purposes of
illustration, it will be apparent to those skilled in the art that
the invention is susceptible to additional embodiments and that a
certain of the details described herein can be varied considerably
without departing from the basic principles of the invention.
* * * * *
References