US11102155B2 - Systems and methods for navigating nodes in channel based chatbots using natural language understanding - Google Patents
Systems and methods for navigating nodes in channel based chatbots using natural language understanding Download PDFInfo
- Publication number
- US11102155B2 US11102155B2 US16/876,378 US202016876378A US11102155B2 US 11102155 B2 US11102155 B2 US 11102155B2 US 202016876378 A US202016876378 A US 202016876378A US 11102155 B2 US11102155 B2 US 11102155B2
- Authority
- US
- United States
- Prior art keywords
- user
- node
- classifier
- channel
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 169
- 230000006854 communication Effects 0.000 claims abstract description 644
- 238000004891 communication Methods 0.000 claims abstract description 642
- 238000012545 processing Methods 0.000 claims description 50
- 230000002457 bidirectional effect Effects 0.000 claims description 27
- 238000003860 storage Methods 0.000 claims description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000003066 decision tree Methods 0.000 claims description 12
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000012706 support-vector machine Methods 0.000 claims description 8
- 238000007477 logistic regression Methods 0.000 claims description 7
- 238000005304 joining Methods 0.000 claims description 6
- 238000007637 random forest analysis Methods 0.000 claims description 4
- 238000012417 linear regression Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 143
- 238000010295 mobile communication Methods 0.000 description 107
- 230000000875 corresponding effect Effects 0.000 description 104
- 239000010410 layer Substances 0.000 description 80
- 230000004044 response Effects 0.000 description 77
- 230000008569 process Effects 0.000 description 72
- 238000003058 natural language processing Methods 0.000 description 66
- 239000003795 chemical substances by application Substances 0.000 description 53
- 239000013598 vector Substances 0.000 description 39
- 230000014509 gene expression Effects 0.000 description 37
- 239000008186 active pharmaceutical agent Substances 0.000 description 32
- 230000009466 transformation Effects 0.000 description 28
- 238000007726 management method Methods 0.000 description 23
- 230000007246 mechanism Effects 0.000 description 22
- 230000007175 bidirectional communication Effects 0.000 description 18
- 230000001149 cognitive effect Effects 0.000 description 18
- 101000633429 Homo sapiens Structural maintenance of chromosomes protein 1A Proteins 0.000 description 17
- 102100029538 Structural maintenance of chromosomes protein 1A Human genes 0.000 description 17
- 238000001514 detection method Methods 0.000 description 17
- 230000003993 interaction Effects 0.000 description 15
- 241000220225 Malus Species 0.000 description 13
- 238000000605 extraction Methods 0.000 description 13
- 230000010354 integration Effects 0.000 description 13
- 235000021016 apples Nutrition 0.000 description 12
- 230000008859 change Effects 0.000 description 12
- 230000002085 persistent effect Effects 0.000 description 12
- 230000009471 action Effects 0.000 description 10
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 230000008520 organization Effects 0.000 description 10
- 238000012552 review Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 8
- 230000003190 augmentative effect Effects 0.000 description 8
- 230000000977 initiatory effect Effects 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 5
- 230000008093 supporting effect Effects 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- 235000009434 Actinidia chinensis Nutrition 0.000 description 4
- 235000009436 Actinidia deliciosa Nutrition 0.000 description 4
- 101001056234 Homo sapiens Sperm mitochondrial-associated cysteine-rich protein Proteins 0.000 description 4
- 102100026503 Sperm mitochondrial-associated cysteine-rich protein Human genes 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 241000271567 Struthioniformes Species 0.000 description 3
- IOYNQIMAUDJVEI-BMVIKAAMSA-N Tepraloxydim Chemical compound C1C(=O)C(C(=N/OC\C=C\Cl)/CC)=C(O)CC1C1CCOCC1 IOYNQIMAUDJVEI-BMVIKAAMSA-N 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 239000003973 paint Substances 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 238000004886 process control Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 241000269350 Anura Species 0.000 description 2
- 235000011299 Brassica oleracea var botrytis Nutrition 0.000 description 2
- 235000017647 Brassica oleracea var italica Nutrition 0.000 description 2
- 241000269333 Caudata Species 0.000 description 2
- 235000005979 Citrus limon Nutrition 0.000 description 2
- 244000131522 Citrus pyriformis Species 0.000 description 2
- 240000004244 Cucurbita moschata Species 0.000 description 2
- 235000009854 Cucurbita moschata Nutrition 0.000 description 2
- 235000009852 Cucurbita pepo Nutrition 0.000 description 2
- 235000007688 Lycopersicon esculentum Nutrition 0.000 description 2
- 241000270295 Serpentes Species 0.000 description 2
- 240000003768 Solanum lycopersicum Species 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008451 emotion Effects 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 235000020354 squash Nutrition 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 230000000699 topical effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 244000298697 Actinidia deliciosa Species 0.000 description 1
- 244000099147 Ananas comosus Species 0.000 description 1
- 235000007119 Ananas comosus Nutrition 0.000 description 1
- 241000219310 Beta vulgaris subsp. vulgaris Species 0.000 description 1
- 241001436672 Bhatia Species 0.000 description 1
- 240000003259 Brassica oleracea var. botrytis Species 0.000 description 1
- 244000308180 Brassica oleracea var. italica Species 0.000 description 1
- 235000021538 Chard Nutrition 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 108091028043 Nucleic acid sequence Proteins 0.000 description 1
- 241001296119 Panteles Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 239000002386 air freshener Substances 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000003599 detergent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000005911 diet Nutrition 0.000 description 1
- 230000037213 diet Effects 0.000 description 1
- 244000013123 dwarf bean Species 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 235000013410 fast food Nutrition 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 235000021331 green beans Nutrition 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000013150 knee replacement Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 235000021251 pulses Nutrition 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- H04L67/322—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H04L67/42—
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Definitions
- the present disclosure relates generally to secure mobile communications platforms that provide primary communication channels. Users connect to primary communication channels and, in so doing, engage in secure bidirectional communication with enterprise data sources associated with such channels, thereby enabling the enterprise data sources to respond directly or broadcast messages to users.
- Enterprise data sources use different types of communication systems to connect with end users, such as consumers.
- end users such as consumers.
- enterprise data sources rely on electronic mail (email), telephone, etc., to communicate with consumers, who in turn can respond to the enterprise data sources.
- email communication systems are more than two decades old, not secure, typically laced with spam, a primary deliverer of viruses, cluttered, are error prone, and are a cause for disconnects between enterprise data sources and consumers.
- An enterprise data sources will appreciate that call centers do not improve the situation. A consumer must listen to numerous recorded messages, navigate through countless menus, and start over if there is a single incorrect number entered.
- the consumer once lucky enough to reach a live operator, is often transferred, often more than once, each time providing countless security credentials in order to provide some modicum of security to the call.
- typical communication systems do not facilitate direct and secure performance of transactions with consumers.
- Systems and methods are provided for receiving identification information from remote user devices associated with users.
- the identification information serves to obtain corresponding stored user profiles for the users.
- Primary communication channels are generated for each user based upon such profiles.
- such primary communication channels are already preexisting and the act of “generating” a primary communication channel, from the user perspective, means joining the primary communication channel, and, from the enterprise data source perspective, means adding the user to the pre-existing primary communication channel.
- Each such primary channel is limited to communication with, and facilitates electronic communication between, a single corresponding enterprise data source (e.g., businesses) and users.
- a primary communication channel is associated with an automated human interface module including a plurality of nodes.
- a user posts a message including a text communication that is processed by a decision module using Natural Language Processing (NLP) technology configured to recognize an intent of the text communication received from a user and thereby identify a node within the plurality of nodes that best matches the text communication received from the user.
- NLP Natural Language Processing
- the text communication is processed by a plurality of classifiers in order to identify the best matching node, and to send the text communication to the identified node.
- One aspect of the present disclosure provides a method including, at a server system comprising one or more processors and memory, joining a first user to a primary communication channel that is associated with an automated human interface module.
- the automated human interface module includes a plurality of nodes.
- the primary communication channel facilitates electronic communication between a corresponding enterprise data source and a remote user device associated with the first user.
- the method includes receiving a first message that is posted by the first user.
- the first message comprises a first text communication.
- the method includes sending the first text communication to a decision module associated with a plurality of classifiers.
- the decision module is configured to identify a first node within the plurality of nodes.
- the first node is a node that best matches with the first text communication in accordance with the plurality of classifiers.
- the method includes processing, with each respective classifier of the plurality of classifiers, the first text communication thereby producing a respective classifier result for each respective classifier of the plurality of classifiers, and thereby producing a plurality of classifier results.
- Each respective classifier result of the plurality of classifier results identifies a respective node of the plurality of nodes that best matches with the first text communication in accordance with a corresponding classifier in the plurality of classifiers.
- the method also includes collectively considering, with the decision module, the plurality of classifier results thereby identifying the first node within the plurality of nodes and sending the first message comprising the first text communication to the first node of the plurality of nodes.
- collectively considering the plurality of classifier results includes determining a majority vote among the plurality of classifier results.
- collectively considering the plurality of classifier results includes determining a weighed vote among the plurality of classifier results.
- the plurality of classifiers includes two or more classifiers.
- the plurality of classifiers includes six classifiers.
- each classifier in the plurality of classifiers is independently selected from the group consisting of: a Na ⁇ ve Bayes, a decision tree, a logistic regression, a support vector machine, a random forest, and an artificial neural network.
- a classifier in the plurality of classifiers is a support vector machine, a clustering algorithm, a neural network, a decision tree, a logistic regression, a linear regression module, or a k-nearest neighbor classifier.
- processing the first text communication includes processing the first text communication to (a) identify one or more named entities in the first text communication and (b) identify one or more intents in the first text communication.
- the processing the first text communication includes processing the first text communication for identifying a language of the first text communication in a set of languages.
- processing the first text communication includes a first processing step including processing the first text communication with each respective classifier of a first subset of the plurality of classifiers, and producing a respective first classifier result, with each respective classifier of the subset of the plurality of classifiers, thereby producing a first subset of the plurality of first classifier results.
- the method also includes collectively considering, with the decision module, the first subset of the first classifier results and identifying, based on the collectively considering the first subset of the first classifier results, a first parameter associated with the first text communication.
- processing the first text communication further includes a second processing step including processing the first text communication with each respective classifier of a second subset of the plurality of classifiers in accordance with the first parameter associated with the first text communication and producing a respective second classifier results, with reach respective classifier of the second subset of the plurality of classifiers, thereby producing a second subset of the plurality of second classifier results.
- the second subset of the respective second classifier results is used to identify the first node within the plurality of nodes.
- the automated human interface module prepares a second message responsive to the first message.
- the method further includes receiving the second message that is posted by the automated human interface module.
- the second message includes a second communication responsive to the first message and sending the second message to the first user.
- the first message includes an application programming interface token identifying the first user
- the second message includes the first application programming interface token identifying the first user.
- the method further includes using the application programming interface token to send the second message to the first user within the automated human interface module thereby facilitating a secure bidirectional conversation between the remote user device associated with the first user and the corresponding enterprise data source associated with the primary communication channel.
- the method further includes presenting to the user, in addition to sending the second message, one or more labels associated with the second message.
- Another aspect of the present disclosure provides a non-transitory computer readable storage medium storing instructions, which when executed by a computer system, cause the computer system to perform the method described above.
- Yet another aspect of the present disclosure provides a server system including one or more processors, memory, and one or more programs.
- the one or more programs are stored in the memory and are configured to be executed by the on one or more processors.
- the one or more programs include instructions for performing the method described above.
- FIG. 1 illustrates a system topology that includes a secure mobile communications platform, a plurality of remote user devices associated with users of the secure mobile communications platform, and a plurality of enterprise data sources that communicate with the plurality of users through primary communication channels and optional sub-channels using the secure mobile communications platform in accordance with an aspect of the present disclosure.
- FIG. 2 illustrates a secure mobile communications platform in accordance with an embodiment of the present disclosure.
- FIG. 3 illustrates an enterprise data source, in accordance with an embodiment of the present disclosure.
- FIG. 4 illustrates a remote user device, in accordance with an embodiment of the present disclosure.
- FIGS. 5A, 5B, 5C, 5D, 5E, 5F, 5G, 5H, 5I, 5J, 5K, 5L, 5M, 5N, 5O, and 5P collectively provide a flow chart of processes and features of a system for enabling users to connect to primary communication channels through on-line catalogs and, in so doing, engage in secure bidirectional communication with enterprise data sources, in accordance with various embodiments of the present disclosure.
- elements in dashed boxes are optional.
- FIG. 6 illustrates an example user profile database in accordance with some embodiments of the present disclosure.
- FIG. 7 provides an illustration of a graphical user interface running on a remote user device in accordance with some embodiments of the present disclosure.
- FIG. 8 illustrates an enterprise data source description for an enterprise data source in accordance with some embodiments.
- FIG. 9 illustrates a user interface that enables a user to select which sub-channels of a primary channel are invoked in accordance with an embodiment of the present disclosure.
- FIG. 10 illustrates the secure bidirectional communication that occurs on one such sub-channel in accordance with an embodiment of the present disclosure.
- FIG. 11 illustrates a hierarchical tree in which the primary communication channel 210 is a root node and the plurality of sub-channels are child nodes, in which the hierarchical tree has a depth of four.
- FIG. 12 illustrates the format of a post request to a sub-channel in accordance with one aspect of the present disclosure.
- FIG. 13 , FIG. 14 , and FIG. 15 illustrate how a user, at a remote user device, may peruse a description of available enterprise data sources obtained from a catalog and request to establish a primary channel with a selected enterprise data source in accordance with an aspect of the present disclosure.
- FIG. 16 illustrates an electronic file cabinet that is automatically populated with message attachments associated with users in sub-channels in accordance with an embodiment of the present disclosure.
- FIG. 17 provides an illustration of a graphical user interface running on a remote user device in accordance with some embodiments of the present disclosure.
- FIG. 18 and FIG. 19 each illustrate a user interface that enables a user to select which sub-channels of a primary channel are invoked in accordance with an embodiment of the present disclosure.
- FIG. 20 illustrates a communication module which provides several different application programming interface functions in accordance with an embodiment of the present disclosure.
- FIG. 21 illustrates several different application programming interface functions provided by an instance of a communications module running on a secure mobile communication platform where each such respective function has a number of data elements that serve as input to the function in accordance with an embodiment of the present disclosure.
- FIG. 22 illustrates a plurality of automated human interface modules (“automated messaging bots”) in accordance with an embodiment of the present disclosure.
- FIG. 23 illustrates a multimedia human interface module in accordance with an embodiment of the present disclosure.
- FIG. 24 illustrates a sample aggregated report from a survey chat bot that collects numeric survey data in accordance with an embodiment of the present disclosure.
- FIG. 25 illustrates a sample aggregated report from a survey chat bot that collects text based feedback in accordance with an embodiment of the present disclosure.
- FIG. 26 provides an exemplary hyperspace function diagram in accordance with an embodiment of the present disclosure.
- FIG. 27 illustrates an example bot definition file that is compiled into a bot in accordance with an embodiment of the present disclosure.
- FIG. 28 illustrates a context extraction chat flow model in accordance with an embodiment of the present disclosure.
- FIGS. 29A, 29B, 29C, and 29D collectively provide a flow chart of processes and features of a system for navigating a plurality of nodes within a primary communication channel using natural language understanding, in accordance with various embodiments of the present disclosure.
- elements in dashed boxes are optional.
- FIGS. 30A and 30B illustrate user interfaces that enable a user to send and receive messages within a primary channel in accordance with an embodiment of the present disclosure.
- the present disclosure relates generally to the field of secure mobile communications in which enterprise data sources are listed as primary communication channels in searchable catalogs. Users connect to primary communication channels through such catalogs and, in so doing, engage in secure bidirectional communication with enterprise data sources thereby enabling the enterprise data sources to respond directly to users.
- first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first subject could be termed a second subject, and, similarly, a second subject could be termed a first subject, without departing from the scope of the present disclosure. The first subject and the second subject are both subjects, but they are not the same subject. Furthermore, the terms “subject” and “user” are used interchangeably herein.
- the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context.
- the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event],” depending on the context.
- FIGS. 1 through 4 collectively illustrate the topology of the system in accordance with the present disclosure.
- FIGS. 1 and 2 there is a secure mobile communications platform 200 ( FIGS. 1 and 2 ), enterprise data sources 102 that provide customer services and products to users through the secure mobile communications platform 200 ( FIGS. 1 and 3 ), and remote user devices 104 associated with users that consume such customer services and products ( FIGS. 1 and 4 ).
- secure mobile communications platform 200 can in fact constitute several computers that are linked together in a network or be a virtual machine in a cloud computing context.
- the exemplary topology shown in FIG. 1 merely serves to describe the features of an embodiment of the present disclosure in a manner that will be readily understood to one of skill in the art.
- a secure mobile communications platform 200 comprises one or more computers.
- the secure mobile communications platform 200 is represented as a single computer that includes all of the functionality of the secure mobile communications platform 200 .
- the disclosure is not so limited.
- the functionality of the secure mobile communications platform 200 may be spread across any number of networked computers and/or reside on each of several networked computers and/or by hosted on one or more virtual machines at a remote location accessible across the communications network 106 .
- One of skill in the art will appreciate that a wide array of different computer topologies is possible for the secure mobile communications platform 200 and all such topologies are within the scope of the present disclosure.
- a secure mobile communications platform 200 comprises one or more processing units (CPU's) 274 , a network or other communications interface 284 , a memory 192 (e.g., random access memory), one or more magnetic disk storage and/or persistent devices 290 optionally accessed by one or more controllers 288 , one or more communication busses 112 for interconnecting the aforementioned components, and a power supply 276 for powering the aforementioned components.
- Data in memory 192 can be seamlessly shared with non-volatile memory 290 using known computing techniques such as caching.
- Memory 192 and/or memory 290 can include mass storage that is remotely located with respect to the central processing unit(s) 274 .
- memory 192 and/or memory 290 may in fact be hosted on computers that are external to the secure mobile communications platform 200 but that can be electronically accessed by the secure mobile communications platform over an Internet, intranet, or other form of network or electronic cable (illustrated as element 106 in FIG. 2 ) using network interface 284 .
- the memory 192 of the secure mobile communications platform 200 stores:
- communications module 204 -S is a web application.
- communications module 204 runs on native device frameworks, and is available for download onto remote user device 104 running operating systems (e.g., iOS, DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks).
- operating systems e.g., iOS, DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks).
- channels 210 support “channel based bidirectional communication,” which is a two-way, duplex, communication, for example, a business to consumer (B2C) communication.
- the channel based bidirectional communication comprises communication of content associated with multiple topics or subjects via multiple primary communication channels 210 .
- the channel based bidirectional communication comprises performance of one or more transactions via the channels.
- channels 210 are configured for mobile chat that replaces electronic mail (email) for business to consumer communication. This mobile chat takes the form of conversations, each having a conversation identifier, and each limited to the enterprise data source and a single end user.
- the primary channels 210 are implemented in a cloud computing environment.
- cloud computing environment refers to a processing environment comprising configurable computing physical and logical resources, for example, networks, servers, storage, applications, services, etc., and data distributed over a network, for example, the Internet.
- the cloud computing environment provides on-demand network access to a shared pool of the configurable computing physical and logical resources.
- one or more of the above identified data elements or modules of the secure mobile communications platform 200 is stored in one or more of the previously described memory devices, and correspond to a set of instructions for performing a function described above.
- the above-identified data, modules or programs (e.g., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations.
- the memory 192 and/or 290 optionally stores a subset of the modules and data structures identified above. Furthermore, in some embodiments the memory 192 and/or 206 stores additional modules and data structures not described above.
- an enterprise data source 102 includes a server computer having one or more processing units (CPU's) 352 , a network or other communications interface 370 , a memory 357 (e.g., random access memory), a user interface 356 , the user interface 356 including a display 358 and input 360 (e.g., keyboard, keypad, touch screen), one or more communication busses 362 for interconnecting the aforementioned components, and a power system 368 for powering the aforementioned components.
- CPU's processing units
- a network or other communications interface 370 e.g., random access memory
- a user interface 356 e.g., random access memory
- the user interface 356 including a display 358 and input 360 (e.g., keyboard, keypad, touch screen)
- communication busses 362 e.g., keyboard, keypad, touch screen
- power system 368 for powering the aforementioned components.
- FIG. 3 optionally combines two or more components, or optionally has a different configuration or arrangement of the components.
- an enterprise data source 102 may use any number of computers to support the disclosed systems and methods.
- the various components shown in FIG. 3 are implemented in hardware, software, firmware, or a combination thereof, including one or more signal processing and/or application specific integrated circuits.
- memory 357 of the enterprise data source 102 preferably comprises:
- FIG. 3 details a primary communication source 102 which includes a primary communication channel 210 and optionally a plurality of sub-channel 212 .
- End users associated with remote user devices 104 participate in conversations in channels 210 .
- Each such conversation is between a single end user and the enterprise data source 102 .
- each channel 210 may host a plurality of such conversations.
- each conversation 2220 has an identifier and only one end user has access rights to the conversation whereas the enterprise data source 102 has access rights to all the conversations.
- a channel 210 hosts ten or more conversations 2220 , one hundred or more conversations 2220 , or one thousand or more conversations 2220 .
- FIG. 4 provides a description of a remote user device 104 associated with an end user in accordance with the present disclosure.
- Remote user device 104 has one or more processing units (CPU's) 402 , peripherals interface 470 , memory controller 468 , a network or other communications interface 420 , a memory 407 (e.g., random access memory), a user interface 406 , the user interface 406 including a display 408 and input 410 (e.g., keyboard, keypad, touch screen), an optional accelerometer 417 , an optional GPS 419 , optional audio circuitry 472 , an optional speaker 460 , an optional microphone 462 , one or more optional intensity sensors 464 for detecting intensity of contacts on the device 104 (e.g., a touch-sensitive surface such as a touch-sensitive display system 408 of the device 102 ), optional input/output (I/O) subsystem 466 , one or more optional optical sensors 474 , one or more communication busses 412 for interconnecting the a
- the input 410 is a touch-sensitive display, such as a touch-sensitive surface.
- the user interface 406 includes one or more soft keyboard embodiments.
- the soft keyboard embodiments may include standard (QWERTY) and/or non-standard configurations of symbols on the displayed icons.
- Device 104 optionally includes, in addition to accelerometer(s) 417 , a magnetometer (not shown) and a GPS 419 (or GLONASS or other global navigation system) receiver for obtaining information concerning the location and orientation (e.g., portrait or landscape) of device 104 .
- accelerometer(s) 417 e.g., a magnetometer (not shown)
- GPS 419 e.g., GLONASS or other global navigation system
- device 104 is only one example of a multifunction device that may be used by end users when engaging with the secure mobile communications platform 200 , and that device 104 optionally has more or fewer components than shown, optionally combines two or more components, or optionally has a different configuration or arrangement of the components.
- the various components shown in FIG. 4 are implemented in hardware, software, firmware, or a combination thereof, including one or more signal processing and/or application specific integrated circuits.
- Memory 407 optionally includes high-speed random access memory and optionally also includes non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices. Access to memory 407 by other components of device 100 , such as CPU(s) 407 is, optionally, controlled by memory controller 468 .
- Peripherals interface 470 can be used to couple input and output peripherals of the device to CPU(s) 402 and memory 407 .
- the one or more processors 402 run or execute various software programs and/or sets of instructions stored in memory 407 to perform various functions for device 102 and to process data.
- peripherals interface 470 , CPU(s) 402 , and memory controller 468 are, optionally, implemented on a single chip. In some other embodiments, they are, optionally, implemented on separate chips.
- RF (radio frequency) circuitry 108 of network interface 420 receives and sends RF signals, also called electromagnetic signals.
- RF circuitry 108 converts electrical signals to/from electromagnetic signals and communicates with communications networks and other communications devices via the electromagnetic signals.
- RF circuitry 420 optionally includes well-known circuitry for performing these functions, including but not limited to an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a CODEC chipset, a subscriber identity module (SIM) card, memory, and so forth.
- RF circuitry 108 optionally communicates with networks 106 .
- circuitry 108 does not include RF circuitry and, in fact, is connected to network 106 through one or more hard wires (e.g., an optical cable, a coaxial cable, or the like).
- networks 106 include, but are not limited to, the World Wide Web (WWW), an intranet and/or a wireless network, such as a cellular telephone network, a wireless local area network (LAN) and/or a metropolitan area network (MAN), and other devices by wireless communication.
- WWW World Wide Web
- LAN wireless local area network
- MAN metropolitan area network
- the wireless communication optionally uses any of a plurality of communications standards, protocols and technologies, including but not limited to Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), high-speed downlink packet access (HSDPA), high-speed uplink packet access (HSDPA), Evolution, Data-Only (EV-DO), HSPA, HSPA+, Dual-Cell HSPA (DC-HSPDA), long term evolution (LTE), near field communication (NFC), wideband code division multiple access (W-CDMA), code division multiple access (CDMA), time division multiple access (TDMA), Bluetooth, Wireless Fidelity (Wi-Fi) (e.g., IEEE 802.11a, IEEE 802.11ac, IEEE 802.11ax, IEEE 802.11b, IEEE 802.11g and/or IEEE 802.11n), voice over Internet Protocol (VoW), Wi-MAX, a protocol for e-mail (e.g., Internet message access protocol (IMAP) and/or post office protocol (POP)), instant messaging (e.g.
- audio circuitry 472 , speaker 460 , and microphone 462 provide an audio interface between a user and device 104 .
- the audio circuitry 472 receives audio data from peripherals interface 470 , converts the audio data to an electrical signal, and transmits the electrical signal to speaker 460 .
- Speaker 460 converts the electrical signal to human-audible sound waves.
- Audio circuitry 472 also receives electrical signals converted by microphone 462 from sound waves. Audio circuitry 472 converts the electrical signal to audio data and transmits the audio data to peripherals interface 470 for processing. Audio data is, optionally, retrieved from and/or transmitted to memory 407 and/or RF circuitry 420 by peripherals interface 470 .
- power system 418 optionally includes a power management system, one or more power sources (e.g., battery, alternating current (AC)), a recharging system, a power failure detection circuit, a power converter or inverter, a power status indicator (e.g., a light-emitting diode (LED)) and any other components associated with the generation, management and distribution of power in portable devices.
- a power management system one or more power sources (e.g., battery, alternating current (AC)), a recharging system, a power failure detection circuit, a power converter or inverter, a power status indicator (e.g., a light-emitting diode (LED)) and any other components associated with the generation, management and distribution of power in portable devices.
- power sources e.g., battery, alternating current (AC)
- AC alternating current
- a recharging system e.g., a recharging system
- a power failure detection circuit e.g.,
- the device 104 optionally also includes one or more optical sensors 473 .
- Optical sensor(s) 473 optionally include charge-coupled device (CCD) or complementary metal-oxide semiconductor (CMOS) phototransistors.
- CMOS complementary metal-oxide semiconductor
- Optical sensor(s) 473 receive light from the environment, projected through one or more lens, and converts the light to data representing an image.
- imaging module 431 also called a camera module
- optical sensor(s) 473 optionally capture still images and/or video.
- an optical sensor is located on the back of device 104 , opposite display system 408 on the front of the device, so that the touch screen is enabled for use as a viewfinder for still and/or video image acquisition.
- another optical sensor 473 is located on the front of the device 104 so that the user's image is obtained (e.g., to verify the identity of the user, etc.).
- memory 407 of the remote user device preferably comprises:
- FIGS. 1 through 4 exemplarily illustrate a business to consumer architecture of a channel based bidirectional communication and transaction system (secure mobile communications platform “SMCP” 48 ) for facilitating channel based communication and transactions with consumers in real time.
- the SMCP 48 is accessible by consumers, using their remote user devices 104 , via an ionic framework comprising a web browser application that implements, for example, the hypertext markup language 5 (HTML5) content presentation technology, or a mobile application installed on consumer devices, for example, tablet computing devices such as the iPhone® of Apple Inc., Android devices, WINDOWS® devices of Microsoft Corporation, BLACKBERRY® devices of BlackBerry Limited, etc.
- HTML5 hypertext markup language 5
- the SMCP 48 provides a communications module 204 -E that provides a graphical communication interface comprising a public business application programming interface for enterprise data sources to communicate with users (e.g., consumers), and referring to FIG. 4 , a communication module 204 -C for users (e.g., consumers) to communicate with the enterprise data sources 102 .
- the enterprise data sources 102 e.g., business entities
- the users e.g., consumers
- Block 502 One aspect of the present disclosure provides a method performed at a secure mobile communications platform 200 (e.g. server system) comprising one or more processors and memory in which there is received, for each respective user in a plurality of users, identification information from a remote user device 104 associated with the respective user.
- the identification information for each respective user in the plurality of users comprises a unique identifier 218 for the respective user.
- the unique identifier 218 is a unique identification number assigned to the user after the user has enrolled with the secure mobile communications platform. In some such embodiments, the user does not have access to the unique identifier 218 .
- the user chooses a login and enrolls in the secure mobile communications platform 200 whereupon the user is assigned the unique identifier 218 which is stored on the user device 104 associated with the user and/or in the profile associated with the user.
- the unique identifier 218 is stored in an encrypted format. Then, when the user logs into the secure mobile communications platform 200 , the unique identifier 218 is automatically sent to the secure mobile communications platform 200 (or retrieved from the user's profile) as part of the login in process of block 502 .
- the unique identifier is a login chosen by the user and assigned to the user once the uniqueness of the login has been verified (e.g., no other user has already chosen the login and the login is deemed to be robust enough to serve as a login).
- the unique identifier of the respective user is used to obtain characteristic information from a user profile corresponding to the respective user that is stored across one or more data stores.
- the secure mobile communications platform 200 retrieves characteristic information of each of the users (e.g., consumers, also referred to herein as “end users”) using the unique identifier from one or more databases (e.g., user profile database 224 ), for example, by performing a database lookup based on the unique identifier.
- the characteristic information comprises, for example, demographic information, consumer preferences on different subjects or topics, location information, etc., of each of the users. For instance, referring to FIG.
- user profiles are stored in user profile database 224 of secure mobile communications platform 200 .
- the user profile is stored on the remote user device 104 (e.g. in encrypted format).
- FIG. 6 provides more details of a user profile database in accordance with some embodiments of the present disclosure.
- a user profile 602 is stored for each user.
- a user profile 602 for a respective user includes the unique identifier 218 of the user (e.g., a contact number of the user), the name 604 of the user, the geographic address (e.g., street address) 606 of the user, as well as one or more E-mail and/or social media addresses of the user.
- the profile details the primary communication channels 210 to which the user has subscribed. For those embodiments where sub-channels are used and for the primary communication channels 210 in which the user is able to select which sub-channels 212 are invoked, a description of the sub-channels the user has invoked are also included in the profile of the user 602 . Such a situation is illustrated in FIG. 9 where the primary channel 210 associated with the enterprise data source “ZAGAT” is illustrated and the user is able to turn off and on the sub-channels “Discover Best Places” 212 - 1 , “Latest Buzz” 212 - 2 , “and “New Openings” 212 - 3 .
- the user does not get to select which sub-channels 212 of a primary communication channel are invoked and in such instances information regarding sub-channels 22 for such primary communication channels 210 is not stored in the user profile.
- FIGS. 18, 19, and 20 provide additional examples of this feature.
- the user profile of a user additionally stores the identifier of each conversation in each sub-channel that the user is presently participating in.
- a respective plurality of primary communication channels 210 is generated for each respective user in the plurality of users based upon the information stored in the user profile 602 for the respective user.
- these primary communication channels 210 already existed, with other users connected to them, and the generating involves joining the user to such primary communication channels 210 .
- Each primary communication channel 210 in each respective plurality of primary communication channels (1) enables one-to-one communication between a corresponding enterprise data source 102 in a plurality of enterprise data sources and a respective user in the plurality of users and (2) facilitates electronic communication between the single corresponding enterprise data source 102 and the single respective user.
- user A associated with remote user device 104 - 1 logs into the secure mobile communications platform 200 .
- the user profile of the user 602 is obtained. From the user profile 602 , a list of primary communication channels 210 that the user is associated with is obtained.
- Each of these primary communication channels 210 is generated (e.g., activated). In some embodiments, no action takes place when generating the plurality of communication channels 210 other than to display a representation of these channels on the display of the corresponding remote user device. For instance, referring to FIGS. 7 and 17 , generating the plurality of primary communication channels for a first user involves displaying an icon for each of the primary channels.
- FIGS. 7 and 17 each provide an illustration of a graphical user interface 702 provided by communication module 204 -C on a remote user device 104 after completion of block 506 in accordance with some embodiments of the present disclosure. An icon 702 is provided for each primary communication channel 210 .
- Such primary communication channels 210 are interchangeably referred to herein as “Pypes.” Further, it is quite likely that a number of other users are already engaged with these primary communication channels 210 when the first user log in.
- a count icon 704 is displayed that numerically indicates the number of such messages that have been posted to the primary channel since the last time the user has checked the channel. For instance, referring to FIG. 7 , two messages have been posted on conversations in the primary channel “Pypestream” since that last time the user has opened the icon for that primary channel on the remote user device 104 . Further referring to FIG. 7 , a message has been posted in a conversation for the primary channel “Target” since that last time the user has opened the icon for “Target” on the remote user device 104 .
- the user can request to establish a primary channel 210 with any enterprise data source 102 (e.g. business entity) by using the secure mobile security platform 200 .
- the client side version of communications module 204 -C lists a description 208 of available enterprise data sources 102 obtained from catalog module 206 of the secure mobile security platform 200 .
- a user may enter an alphanumeric query for enterprise data sources 102 of interest using prompt 1302 . Referring to FIGS. 14 and 15 , as the user enters the alphanumeric query, enterprise data sources 102 from the digital catalog 206 that match the partial query are displayed.
- the secure mobile communications platform 200 generates revenue by charging each enterprise data source 102 (e.g., business entity) a fee, for example, a monthly fee for listing them in the digital catalog 206 .
- FIG. 8 illustrates a non-limiting example of a portion of an enterprise data source description 208 that is stored in the catalog module 206 of secure mobile communications platform 200 for each enterprise data source 102 in some embodiments.
- the enterprise data source description 208 includes an enterprise data source identifier 374 (e.g., “business identifier”) that uniquely identifies the enterprise.
- the identifier 374 is a unique number or expression associated with the corresponding enterprise data source 102 .
- the enterprise data source description 208 includes an enterprise data source name 376 for the enterprise data source 102 .
- the enterprise data source name 376 is the name that is displayed to users of remote user devices 104 .
- the enterprise data source description 208 further includes a super administrator identifier 378 for the enterprise data source 102 .
- the super administrator is able to participate in the primary channel 210 and each of the sub-channels 212 associated with the enterprise data source 102 .
- the enterprise data source description 208 further includes an identification of the primary communication channel administrators 380 for the enterprise data source 102 . Each such primary communication channel administrator is able to participate in the primary channel 210 associated with the enterprise data source 102 .
- the enterprise data source description 208 further includes an identification of the sub-channel administrators 392 for the primary channel 210 for the enterprise data source 102 . Each such sub-channel administrator is able to participate in the one or more designated sub-channels associated with the enterprise data source 102 . In some embodiments, as illustrated in FIG.
- the identity of the super administrator 378 , primary communication channel administrators 380 , and sub-channel administrators 392 are independent of each other.
- the super administrator(s) 378 may be the same or different person(s) than the primary communication channel administrators 380 which, in turn, may the same or different persons than the sub-channel administrators 392 .
- an enterprise data source 102 is a store, a chain of stores, a government institution or service, a corporate entity, an organization, or a social organization.
- each primary channel 210 includes one or more sub-channels.
- the sub-channels 212 of the primary channels associated with a user are generated.
- these sub-channels 212 already existed, with other users connected to them, and the generating involves adding a conversation to the sub-channel between the user and the enterprise data source that other users may not participate in.
- Each of the plurality of sub-channels forms a corresponding hierarchical tree in which the corresponding primary communication channel is a root node and the plurality of sub-channels are child nodes.
- FIG. 9 illustrates such a hierarchical tree.
- the primary channel 210 “Zagat” is the root node and the sub-channels “Discover Best Places” 212 - 1 , “Latest Buzz” 212 - 2 , and “New Openings” 212 - 3 are child nodes.
- At least one sub-channel in each of the corresponding hierarchy of sub-channels enables secure bidirectional conversation between (i) a remote user device 104 associated with the first user and (ii) the enterprise data source 102 associated with the primary communication channel 210 of the corresponding hierarchical tree, thereby facilitating secure exchange of a plurality of messages between the corresponding enterprise data source 102 and the remote user device 104 associated with the first user within the at least one sub-channel 212 .
- Each such conversation includes only a single user associated with a remote user device 104 although a sub-channel may host any number of conversations, each such conversation between the corresponding enterprise data source and a respective user.
- FIG. 10 illustrates the secure bidirectional communication that occurs on one such sub-channel 212 in the form of a conversation.
- Message 1002 originates from the user associated with a particular remote user device 104 .
- This message is communicated in the sub-channel 212 to the corresponding enterprise data source 102 .
- the enterprise data source 102 responds to message 1002 with messages 1004 , which are routed only to the particular remote user device 104 that originated message 1002 . That is, messages in the sub-channel illustrated in FIG. 10 are limited to the particular associated remote user device 104 and the particular enterprise data source associated with the sub-channel.
- the communications module 204 -C operating on remote user device 104 renders a graphical communications interface 1006 , for example, in an electronic mail (email) layout on the remote user device 104 for enabling bidirectional communication of messages and content between the user and the enterprise data source 102 in real time through a sub-channel 212 .
- the content comprises, for example, one or more of messages (e.g., messages 1002 - 1 , 1004 - 1 , 1004 - 2 , and 1004 - 4 of FIG. 10 ) image content (e.g., image 1004 - 3 of FIG.
- the graphical communications interface 1006 combines a peer to peer chat application with an email layout on the consumer device to create the graphical communication interface.
- the secure mobile communication platform 200 encodes each of the messages and the content using strong encryption technologies, for example, public-key cryptography with a private key such as a personal identification number (PIN) and a two-factor authentication, and facilitates a secure transmission and a secure reception of the messages and the content through the sub-channel 210 via the rendered graphical communication interface 1006 .
- strong encryption technologies for example, public-key cryptography with a private key such as a personal identification number (PIN) and a two-factor authentication
- the secure mobile communications platform 200 securely stores the encoded messages and the encoded content in one or more databases and/or in the consumer devices.
- the secure mobile communications platform 200 uses different types of encoding methods for secure storage and secure transmission of the messages and the content.
- the secure mobile communications platform 200 offers different levels of security based on a user's security needs.
- the secure mobile communications platform 200 provides a RSA® hardware certificate, a RSA SECURID® of the EMC corporation, or a one-time key or token to consumers who require a high level of security.
- the secure mobile communications platform 200 receives and sends requests for establishing primary communication channels 210 between enterprise data sources 102 and users via the communications module 204 -C of FIG. 4 .
- a depth of the hierarchical tree associated with a primary communication channel in the plurality of primary communication channels is N, where N is a positive integer greater than one (e.g., N is 2, 3, 4, or greater than 4).
- FIG. 10 illustrates a hierarchical tree with a depth of two, where the primary channel 210 is the root node and each of the sub-channels 212 are direct child nodes to the primary channel.
- the present disclosure is not so limited.
- some sub-channels 212 may be child nodes to other child nodes 212 leading to hierarchical trees with depths of 3 or greater.
- FIG. 11 illustrates a hierarchical tree in which the primary communication channel 210 is a root node and the sub-channels in the plurality of sub-channels 212 are child nodes, in which the hierarchical tree has a depth of four.
- Sub-channels 212 - 5 , 212 - 6 , and 212 - 7 are respective child nodes to sub-channels 212 - 2 , 212 - 3 , and 212 - 4 which, in turn, are respective child nodes to sub-channel 212 - 1 which, in turn, is a sub-node to primary channel 210 .
- FIG. 1 In the hierarchical tree illustrated in FIG.
- secure bidirectional communication occurs between (i) a remote user device 104 associated with the first user and (ii) the enterprise data source 102 associated with the primary communication channel 210 of the corresponding hierarchical tree on one or more of the sub-channels 212 .
- the secure mobile communications platform 200 generates one or more sub-channels 212 from each of the established primary channels 210 associated with each user's unique identifier based on the received characteristic information for communicating with each of the users and for facilitating one or more transactions with each of the consumers within the generated sub-channels 212 .
- the secure mobile communications platform 200 provides complete transaction support inside a sub-channel 212 .
- enterprise data sources 200 e.g., business entities
- a user participating in a private (secure) conversation with the enterprise data source can reply to a transaction message, for example, an electronic commerce (e-commerce) offer message by purchasing the ecommerce offer as disclosed in the examples below.
- e-commerce electronic commerce
- the secure mobile communications platform 200 implements e-commerce using one or more payment infrastructures, for example, STRIPE® of Stripe, Inc., PAYPAL® of PayPal, Inc., etc.
- an enterprise data source 102 e.g., business entity
- a promotions team establishes a primary channel 210 with a consumer (e.g., user).
- the secure primary communications platform 200 retrieves characteristic information of the consumer (e.g., user profile 602 of the user) from one or more databases (e.g., user profile database 224 ) using the consumer's unique identifier 218 , for example, the consumer's contact number.
- the consumer indicates, e.g., through user preferences/interests 610 in their user profile 602 of FIG.
- the secure mobile communication platform 200 generates a sub-channel 210 for exclusive offers named, for example, “Special”, and the promotions team of STARWOOD® Hotel sends the exclusive deals and the exclusive packages with discounts to the consumer via a conversation in the sub-channel 212 .
- the secure mobile communication platform 200 allows the user (e.g. consumer) to perform a transaction, for example, buying of an exclusive package based on an exclusive deal within the generated sub-channel 212 using one or more payment infrastructures. Because other users cannot participate in the conversation, the transaction cannot be repudiated and privacy is ensured.
- any enterprise data source 102 e.g., business entity
- the secure primary communications platform 200 allows the enterprise data source 102 to send deals and packages to a user (e.g., consumer) in real time, and allows the consumer to make purchases therewithin.
- a user e.g., consumer
- an enterprise data source 102 for example, the W® Miami Hotel of Starwood Hotels & Resorts Worldwide, Inc., offers a three-night package for $500 to the first 500 consumers who opt in to purchase the package.
- the W® Miami Hotel establishes a primary channel 210 with each of the users (e.g., consumers) via the secure primary communications platform 200 . If the consumers indicate an inclination to avail offers from the W® Miami Hotel via the established primary communication channel, the secure primary communications platform 200 generates a sub-channel 212 , for example, an eShop sub-channel (by adding a conversation to the sub-channel for the user) and transmits a communication of the three-night package for $500 through this conversation hosted on the eShop sub-channel.
- a sub-channel 212 for example, an eShop sub-channel (by adding a conversation to the sub-channel for the user) and transmits a communication of the three-night package for $500 through this conversation hosted on the eShop sub-channel.
- the secure primary communications platform 200 facilitates a transaction service within the eShop sub-channel 212 , when the consumer opts in to buy the three-night package, thereby facilitating a transaction or trading of the three-night package within the eShop sub-channel in real time.
- the secure primary communications platform 200 identifies a new user (e.g., consumer) based on a location of the remote user device 104 associated with the new user, for example, via a positioning system and sends a hotel deal to the new user for a night stay using the sub-channel 212 .
- the secure primary communications platform 200 generates revenue from a percentage of a transaction amount associated with each transaction made within the sub-channel 212 .
- the secure mobile communication platform (“SMCB”) 200 provides a spam free communication experience to users (e.g., consumers) as the SMCB 200 does not allow transactions to be performed in the primary channel 210 in typical embodiments.
- the SMCB 200 provides a channel permissions mechanism that sets a semaphore flag for the sub-channel 212 , for example, to true or false. By design, the SMCB 200 does not allow or display transactions in the primary communication channel.
- the SMCB 200 provides access control lists (ACLs) to enterprise data sources 102 for fine grained control of what can occur in the primary channel 210 or the sub-channels 212 .
- ACLs access control lists
- the SMCB 200 sends deals and packages through conversations hosted by the eShop sub-channel 212 . If a user receives an offer in a non-eShop sub-channel, then that would be considered as spam, which is prevented by the SMCB 200 .
- the SMCB 200 does not send messages or chats in the primary channel 210 .
- the SMCB 200 sends general information related to the enterprise data source 102 , for example, updated sub-channel news, names of new sub-channels, log or information tracking subscriptions to the sub-channels, disconnections from the sub-channels, etc., through the primary channel 210 .
- an enterprise data source 102 e.g., business entity
- the EQUINOX® organization of Equinox Holdings, Inc. offers a discount on a package for spinning classes.
- the SMCB 200 establishes a primary channel 210 with a user (e.g., consumer) and transmits general information related to the enterprise data source 102 through the established primary channel 210 . If the user indicates an inclination to avail themselves of offers from the EQUINOX® organization via the established primary channel 210 , the SMCB 200 generates a sub-channel 212 , for example, an eShop sub-channel (e.g.
- the SMCB 200 therefore generates and uses live, real time primary channels 210 and sub-channels 212 to deliver product and services to users (e.g., consumers) on a transaction basis.
- an enterprise data source 102 uses the same sub-channel to communicate with multiple users. While the enterprise data source 102 can review messages sent by each of these users, each respective user cannot see messages sent by the enterprise data source 102 to other users nor can they see messages originated by other users. Accordingly, in some embodiments a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 in the plurality of primary communication channels comprises (e.g. hosts) a first secure bidirectional conversation between (i) a first remote user device 104 associated with the first user and (ii) the enterprise data source 102 associated with the primary communication channel of the corresponding hierarchical tree, thereby facilitating secure exchange of the first plurality of messages.
- the first sub-channel 212 comprises (e.g. hosts) a second secure bidirectional conversation between (i) a second remote user device associated with a second user and (ii) the enterprise data source associated with the primary communication channel of the corresponding hierarchical tree, thereby facilitating secure exchange of a second plurality of messages.
- the first user cannot see any of the messages in the second plurality of messages.
- the second user cannot see any of the messages in the first plurality of messages.
- the enterprise data source 102 can see all the messages in the first plurality of messages and the second plurality of messages.
- this above-described one-to-one aspect of the communication between a given enterprise data source 102 and respective users is imposed using application program interface (“API”) keys and tokens, where the API key identifies a particular enterprise data source resource 102 , such as a particular sub-channel 212 belonging to a particular enterprise data source resource 102 and the API token indicates the identity of source message or content.
- API application program interface
- the enterprise data source 102 wishes to post content on a particular sub-channel 212
- a content post request is made, which includes the message or content to be posted to the sub-channel 212 .
- the post request further includes the API key thereby identifying the correct sub-channel 212 of the enterprise data source 102 and the API token, thereby identifying the originator of the content or message (here, the enterprise data source 102 ).
- the API token not only serves to identify the originator of the content, it also serves to designate what access privileges the originator of the content or message have over the sub-channel 212 .
- the post request will further include a chatroom identifier (e.g., conversation identifier) and/or chatroom consumer identifier (e.g., conversation user identifier). In typical embodiments, only one user will have access to such a chatroom (conversation), thereby establishing the one-to-one communication between an enterprise data source 102 and an end user.
- a first message in a first plurality of messages is posted by the enterprise data source 102 , where the first message is (a) associated with an application programming interface key identifying the sub-channel of the enterprise data source and (b) a first application programming interface token identifying the first user.
- a second message in the second plurality of messages is posted by the enterprise data source 102 .
- the second message is associated with (a) the application programming interface key identifying the sub-channel of the enterprise data source and (b) a second application programming interface token identifying a second user associated with a second remote user device.
- the first application programming interface token and the application programming interface key are used to route the first message to the first remote user device within the sub-channel 212 .
- the second application programming interface token and the application programming interface key are used to route the second message to the second remote user device within the sub-channel.
- the first message is in a first conversation hosted by the sub-channel and the second message is in a second conversation hosted by the sub-channel.
- FIG. 12 illustrates the format of an example post request in accordance with one aspect of the present disclosure.
- the post request includes a unique identifier representing a specific chatroom (conversation) 1202 , the content of the message 1204 , the content of the message if using controls 1206 , the identifier of the author of the post 1208 , the name of the author of the post 1210 , a chatroom (conversation) identifier that identifies a chatroom (conversation) 1212 to which the message is to be posted, an identifier of the consumer (end user) of the message 1214 , and optionally, an identifier of the administrator 1216 of the sub-channel 212 that is hosting the specific chatroom (conversation).
- messages posted on sub-channels are encrypted at the originating device (e.g., remote user device 104 or enterprise data source 102 ) using private information. For instance, if the message is posted by the end user, private information associated with the end user, or the end user's remote device, is used to encrypt the message. If the message is posted by the enterprise data source, private information associated with the enterprise data source is used to encrypt the message.
- a sub-channel 212 in a hierarchy of sub-channels is associated with a sub-channel identifier, and an application programming interface key, and a message in the plurality of messages is sent in the sub-channel when the first user or the enterprise data source sending the respective message includes the sub-channel identifier, the application programming interface key, and an API key.
- the API key serves to specify the access rights of the message originator.
- each of the sub-channels 212 associated with a given enterprise data source 102 is used to perform a different customer service task. For instance, referring to FIG. 9 , one sub-channel 212 may be used to offer a service such as “discovering best places,” another sub-channel 212 may be used to offer the “latest buzz” while still another sub-channel 212 may be used to offer “new openings.”
- Each such sub-channel may host a number of conversations, each conversation between the enterprise data source and a different end user.
- the enterprise data source 102 is associated with (e.g., participates in) each of the conversations.
- Each conversation is with only a single user of a remote user device 104 .
- the sub-channel 212 is associated with a sub-channel identifier and the conversation within the sub-channel is associated with an application programming interface key.
- a message is sent within (posted to) the conversation in the sub-channel when the user (associated with the remote user device 104 ) or the enterprise data source 102 (that is associated with the sub-channel) sending the respective message includes the sub-channel identifier, the application programming interface key, and an access token.
- the access token serves to identify the access rights of the message originator to the conversation.
- API keys designate a number of operations available in the secure mobile communication platform 200 , including but not limited to, defining an enterprise data source 102 within the secure mobile communication platform 200 , defining each primary communication channel 210 associated with the enterprise data source 102 , defining each sub-channel 212 associated with the enterprise data source, connecting a user to a primary communication channel 210 , and so forth.
- Each sub-channel 212 can be set up to access data in a manner that is independent of other sub-channels.
- a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 makes use of a first database (or other form of information such as an external system that accesses data) associated with the corresponding enterprise data source 102 .
- this first database may be related to a payment system used by the enterprise data source 102 to obtain payment for goods and/or services provided to users.
- a second sub-channel 212 in the corresponding plurality of sub-channels associated with the respective primary communication channel 210 makes use of a second database (or other form of information such as an external system that accesses data) associated with the corresponding enterprise data source.
- the first database is other than the second database.
- the second database may be related to a system used for tracking customer complaints or the shipment information for customer orders.
- Sub-channels 212 support numerous chat rooms, with each such chat room consisting of a conversation between an enterprise data source 102 and a single user. That is, each such conversation in a sub-channel is between (i) the enterprise data source 102 , or a proxy for the enterprise data source 102 , and (ii) a single user associated with a remote user device 104 . Messages placed in such conversations by the enterprise data source 102 are delivered to the remote user device 104 of the associated user, who is typically allowed to consume the message only once.
- the messages in a conversation in a sub-channel are created by automated human interface modules associated with a sub-channel.
- Such automated human interface modules parse messages and other responses by a user in a conversation and use this input to determine suitable reply messages to send to the user.
- the automated human interface module may refer the conversation to another automated human interface module or to the queue of a live operator of the sub-channel.
- Block 522 of FIG. 5C illustrates how this is accomplished in accordance with one embodiment.
- a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective first primary communication 210 channel in a plurality of primary communication channels hosts a first conversation between the enterprise data source 102 corresponding to the first primary communication 210 and a first user.
- the first conversation has a first human intervention status.
- messages in the first conversation from the remote user device 104 associated with the first user are processed by a first automated human interface module.
- messages in the first conversation from the remote user device 104 associated with the first user are placed in a queue for processing by a human associated with the corresponding enterprise data source 102 of the first sub-channel 212 .
- a user input specifically triggers the change from automated to non-automated.
- the user might say “I want to talk with an operator”, and that might result in reclassifying further messages in the conversation such that they are routed to a non-automated agent (human call center representative, etc.).
- This routing could in principle change back and forth many times during a conversation, between an automated agent (the first human intervention status of the conversation is deemed automated) and a non-automated (human) agent (the first human intervention status of the conversation is deemed non-automated).
- conversations may concurrently be held on a sub-channel, of which only one is with a particular end user.
- the status of each of these conversations may be different. For instance, consider the case where there are seven conversations concurrently being held on a given sub-channel. In this example, four of the conversations may be deemed automated and serviced by an automated human interface module whereas the remaining three may be deemed non-automated and serviced by a human operator.
- a trained classifier is used to monitor conversations on a sub-channel 212 for the purpose of changing the status of such conversations from automated to non-automated. For instance, such a trained classifier may parse the messages posted by users for certain keywords such as “operator” or other words or events that have been determined to be associated with a need for human intervention. For instance, the user may have looped through several different nodes of an automated human interface module and may be getting frustrated.
- classifiers are trained based on the broad aggregate of user interactions from a plurality of users over time.
- the method further comprises applying messages on the first sub-channel from the remote user device associated with the first user to a trained classifier associated with the first sub-channel thereby obtaining a classifier result.
- the classifier result falls into a predetermined category, the first human intervention status is changed from automated to non-automated until a predetermined event occurs.
- this predetermined event may be, for example, a break in communications in the first conversation, the elapsing of a predetermined amount of time, or a manual switch of the first human intervention status from non-automated to automated by a human operator associated with the corresponding enterprise data source.
- the classifier produces a binomial classification and the predetermined category is one of the two outputs of the classifier.
- the classifier is a decision tree, a random forest, a Bayesian network, a support vector machine, a neural network or logistic regression.
- the classifier is trained across the conversations of a plurality of sub-channels 212 using feedback data provided by the plurality of users regarding a plurality of their interactions with the server system using the sub-channels.
- examples of such interactions include electronic payment processing, customer sign-up, and customer service by the plurality of users using the sub-channels provided by the server system.
- a first user may have one conversation in one sub-channel with a first enterprise data source 102 that is deemed automated while having another conversation in another sub-channel with a second enterprise data source 102 that is deemed non-automated, or vice versa. That is, the status of each conversation is independent.
- Block 536 of FIG. 5D illustrates.
- a second conversation in a second sub-channel 212 in the corresponding plurality of sub-channels associated with a second primary communication channel 210 in the plurality of primary communication channels has a second human intervention status that is independent of the first human intervention status of the first conversation.
- the second intervention status is deemed automated, communication in the second conversation from the remote user device associated with the first user is processed by a second automated human interface module.
- the second human intervention status is deemed non-automated, communication in the second conversation from the remote user device associated with the first user are placed in a second queue for processing by a human associated with the corresponding enterprise data source of the second sub-channel.
- a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 process a communication received from a remote user device associated with the first user in the conversation as a query for data by converting the query into a modified query in accordance with an application program interface function call triggered by the query received from the first user.
- the modified query is submitted to a database associated with (electronically addressable by) the corresponding enterprise data source 102 .
- the present disclosure is not so limited.
- the modified query is submitted to any electronic data source or system that retrieves electronic data and that has been designated for such purpose by the enterprise data source 102 .
- This can be, for instance, a system that references files or is capable of addressing any kind of non-transitory memory storage mechanism.
- This system may be owned or leased by the enterprise data source, or may be in the public domain, depending on the application.
- a query result is received from the data source responsive to submitting the modified query. In some embodiments this query request is reformatted. The reformatted query result is then communicated to the remote user device 104 associated with the first user directly in-line within the conversation between the enterprise data source 102 and the remote user device 104 .
- the client side communication module 204 -C FIG.
- the communications module-enterprise source side 204 -E ( FIG. 3 ) receives the API call and makes another API call to a back-end system associated with the corresponding enterprise data source 102 and gets a result.
- the query result is processed into another format by the communications module-enterprise source side 204 -E and this result is returned to the client side communication module 204 -C ( FIG. 4 ) for display in the conversation.
- the data source associated with the corresponding enterprise data source 102 provides an inventory control mechanism for the enterprise data source and the query seeks information about an item tracked by the inventory control mechanism.
- Automated human interface modules 2202 provide a plurality of automated human interface modules (“automated messaging bots”) 2202 and a system for managing and deploying these automated messaging bots.
- Automated messaging bots reflects a defined message and/or transaction capability.
- Automated messaging bots can contain a range of content and functionality, from a simple static response, to sophisticated knowledge systems that can power automated conversations leading to solutions and integrated transactions with external systems; e.g. payments, reservations, etc.
- the secure mobile communication platform 200 supports the generation of custom, native, intelligent automated messaging bots 2202 , selection of automated messaging bots from third party platforms, and defining flexible integrations of these automated messaging bots into automated messaging response networks.
- Each automated messaging bots 2202 provides a certain scope and capability for automatically engaging end users in a conversational flow. Functional transactions can also be integrated into conversational exchange. The goal is for each automated messaging bot 2202 to help end users typically either resolve a question/problem or to fulfill a specific transaction, all via the disclosed messaging communications framework.
- An end user's conversation 2220 with an automated messaging bot is initiated when the initial message from the end user associated with a remote user device 104 is assigned to the automated messaging bot 2202 .
- the automated messaging bot 2202 will initiate a response to the initial message based on its available logic.
- the end user's selection of available predefined responses or a typed message response are the triggers the bot 2202 uses to navigate the end user through it's available content logic (node graph 2208 ). If an automated messaging bot's exit criteria/conditions are met, the conversation either ends or is moved out of the bot 2202 and is either reassessed by the system, moved to a live support message queue 2228 , or reassigned to another automated messaging bot 2202 (e.g., one that has a different logic flow and thus will provide a complementary orthogonal end user experience).
- a decision as to which node in the node graph 2208 to position a user is implemented by a decision module 22203 as discussed in further detail with reference to FIGS. 29A through FIG. 29D .
- Bot creation and management Some embodiments of the disclosed systems and methods provide the ability to create, manage and administer bots 2202 to make them available for use in creating, editing, or deleting bots 2202 via a primary communication channel user interface, by either using a user interface based automated message flow builder or by uploading VXML, or properly formatted JSON files.
- Bot designer Some embodiments of the disclosed systems and methods provide a user interface based bot 2202 designer to assist in the creation and editing of the automated message flows within bots 2202 . Referring to FIG. 22 , in some embodiments this automated message flow is manifested as a node graph 2208 .
- the bot 2202 designer includes the ability to define the name of the automated message bot, create, edit, and delete individual nodes 2210 in the bot 2202 , the ability to expand/collapse node 2210 branches, the ability to see and edit the message content for a node 2210 (e.g., stock messages 2214 , stock widgets 2216 , stock multimedia objects 228 ), and the ability to see node traversals (e.g., when one or more nodes 2210 connect to a different node).
- a node 2210 e.g., stock messages 2214 , stock widgets 2216 , stock multimedia objects 228
- the ability to see node traversals e.g., when one or more nodes 2210 connect to a different node.
- a node 2210 of a bot 2202 reflects a predetermined decision point within the bot.
- the bot tries to evaluate an incoming message from a remote user device 104 by parsing the incoming for recognized keywords and phrases. Based on detection of such keywords, the automated human interface module 2202 will progress the end user in a particular direction within the node graph 2208 .
- the use of nodes 2210 within a bot 2202 is similar to walking through a decision tree, with different nodes 2210 in the bot 2202 , where the bot knows the position of an end user in the decision tree and can progress the end user in the node graph 2208 .
- the analogy to the decision tree here is merely exemplary.
- nodes 2210 in the node graph 2208 embody a logic that can evaluate messages, and based on this evaluation, take some action such as send a message to the end user and/or send the conversation 2220 associated with the end user to another node in the node graph 2208 of the bot 2202 , the node graph 2208 of another bot 2208 , or to the queue 2228 of a live operator (e.g., the sub-channel 1 administrator 392 ) depending on the end user message, the choices made by the end user, the user conversation history 2224 , etc.
- a live operator e.g., the sub-channel 1 administrator 392
- the automated human interface module 2202 designer further includes the ability to add, edit, and delete the end user's response options (e.g. option buttons provided in a widget 2216 ) per node 2210 .
- response options include, but are not limited to, an ability to define a specific destination node 2208 for each end user option, an ability to define a node option to close a chat session (e.g., by user selecting the session closing “problem is resolved” option, and in some embodiments with the system able to send a final response within the conversation such as “Happy to help, have a great day”), connecting to a different bot 2202 , ability to move the end user to a different automated human interface module 2202 ability to select a specific destination node 2210 within the node graph 2208 of the bot 2202 , ability to have the bot 2202 send multiple separate messages to the end user in the conversation 2220 in sequence, for instance one right after the other (near instantaneous), ability to add, change or delete an embedded third party widget 2216 (
- a tag is a single keyword or phrase and can be assigned by the enterprise data source 102 .
- Tags reflect a single keyword or phrase and can be assigned to specific nodes 2210 within a node graph 2208 of an automated human interface module 2202 and for the overall scope of the automated human interface module 2202 when an end user's conversation 2220 has been entered into the automated human interface module's 2202 automated message flow (node graph 2208 ).
- the automated human interface module 2202 administrator interface based bot 2202 designer provides the ability to add, edit, and delete one or more node level 2210 tags 2211 , the ability to add, edit, and delete one or more human interface module tags 2204 and scope tags 2206 , and the ability to add a multimedia human interface module 2232 to one or more nodes 2210 in a node graph 2208 of an automated human interface module 2202 .
- each node tag 2211 is required to point to a specific node 2210 in the node graph 2208 of an automated human interface module 2202 .
- node tags 2211 can be grouped, that is multiple node tags can all point to the same node in the node graph 2208 of an automated human interface module 2202 .
- Multimedia library Primary communication channel administrators 380 can configure one or more multimedia libraries by uploading objects 2218 such as images, audio files, movie files, reference documents (e.g. PDF) files. Each object 2218 can optionally be tagged with one or more keywords or phrases. Each object 2218 can be assigned to a bot 2202 node 2210 , as the bot's response to end user input. If the bot 2202 includes a reference to a multimedia human interface module 2232 , discussed below, any node response option can be configured to check for automated content from the multimedia content provided by the multimedia human interface module 2232 . There is provided the option to filter by media type and ability to specify specific tags, or pass through the tag history associated with the end user responses from the current conversation (e.g., the user conversation history 2224 ).
- objects 2218 such as images, audio files, movie files, reference documents (e.g. PDF) files.
- Each object 2218 can optionally be tagged with one or more keywords or phrases.
- Each object 2218 can be assigned to a bot 2202 node 2210
- Multimedia human interface module 2232 a multimedia library is configured to behave like an automated reference system that is made available as a multimedia human interface module 2232 (“multimedia bot”).
- the multimedia bot can operate at the sub-channel level 212 level, as illustrated in FIG. 22 , parallel to various other bots assigned to the sub-channel 212 .
- a given sub-channel 212 may have five bots 2202 , each such bot handling a set of conversations, and further the given sub-channel 212 may have one or more multimedia bots 2232 that listen in on the conversations within the sub-channel and provide multimedia objects to these conversations when there is a match between the tags to objects accessible to the multimedia bot 2232 and content in the conversations (e.g., messages from the users associated with end user devices 104 ).
- a multimedia bot 2232 may operate a widget 2216 at a particular node 2216 within an automated human interface module 2202 .
- the multimedia human interface module 2232 is configured to be active for only dedicated requests from a bot node 2202 (e.g., as specific nodes 2210 within the bot node) and/or custom message responses a user provides while interacting within a bot.
- a maximum response time for the message bot 2232 to provide a multimedia object to a query is specified.
- a default is provided. This is done to ensure that the multimedia object is provided within the right context in a conversation. For instance, consider the case where the multimedia bot 2232 has detected the tag “Los Angeles” which is associated within the bot 2232 with a picture of Los Angeles.
- Posting of the image into the conversation in which the tag “Los Angeles” was detected is only appropriate within a certain period of time after the message containing the tag was posted into the conversation. Thus accordingly, in some embodiments, if the multimedia human interface module 2232 seek request takes longer than allowed, the search will be abandoned. In some embodiments, there is an option for defining how many tags from a user's current tag history (found in the user conversation history 2224 for the user) to include per search sequence by the multimedia human interface module 2232 .
- the multimedia human interface module 2232 makes use of tags at two (or three) levels.
- Multimedia module 2232 scope tags 2302 provide one or more keywords or phrases that can be used as triggers, when detected in messages from users in conversations, for automated retrieval of multimedia content (or at least activation of the multimedia module 2232 to perform a search.
- Each object (e.g., media file) 2312 to be made available as part of the multimedia module 2232 is tagged with one or more object tags 2312 .
- objects 2310 are arranged into directories 2306 . For instance, each directory can represent a different product offered by the enterprise data source 102 .
- FIG. 23 illustrates a directory tree with one a single layer of sub-directories, in principle such directories can be nested to any desired level, so that a directory may have sub-directories, which in turn may have sub-directories, and so forth, which each level of sub-directories having their own independent directory tags 2308 .
- one or more of the following functionalities are included in the multimedia human interface module 2232 : the ability to define specific content (objects 2310 ) to be added to the object directory tree 2304 , the ability to assign the content to an organizational branch (directory 2306 ) in the object directory tree 2304 or a section of the branch and/or the ability to enable/disable parallel content channels by defining the inclusion of the multimedia human interface module 2232 into a node 2210 of an automated human interface module 2202 .
- stock widgets 2216 and stock objects 2218 is content that represents an initial inquiry message that can be added to a conversation by the automated human interface module 2202 . For example, “Would you be interested in upgrading to the product version X? Provides X better performance and you may qualify for a special offer?
- the automated human interface module 2202 takes any of the following predetermined options in accordance with the node logic 2212 for the node 2210 that imposed this question: a target node 2210 in the currently active automated human interface module 2202 and in the current conversation, a target node 2210 in another active automated human interface module 2202 and in the current conversation, or to a new conversation in another automated human interface module 2202 .
- the enterprise data source can include advertising content among the stock messages 2214 , stock widgets 2216 and stock objects 2218 of a node 2210 in an automated human interface module 2202 .
- Such a configuration can include getting the communications module-enterprise source side 204 -E to send a list of tags or organized parameter mappings to such an external advertisement platform.
- the communications module-enterprise source side 204 -E would then make an application programming interface call and receive an advertisement image in response and post this ad image into the conversation.
- the ability to define placement of the advertisements e.g., at what nodes in the node graph 2208 such advertisements are possible
- when they are to be presented what options are provided with such advertisements, what advertisement responses are solicited from the user (e.g., a menu of options like “tell me more,” or “dismiss”)
- a specialized custom multimedia library reference bot containing a blend of conversational node logic as illustrated in FIG. 22 with direct links to various multimedia files at specific nodes 2210 .
- VXML import Setting up node graphs 2208 to direct user conversations within sub-channel 392 can involve some work, particularly when more complex decision logic is desired.
- one embodiment of the present disclosure provides for importing call center logic, which is typically in VXML format.
- VXML is a digital document standard for specifying interactive media and voice dialogs between humans and computers. It is used for developing audio and voice response applications, such as banking systems and automated customer service portals.
- an enterprise data source 102 e.g., the enterprise data source super administrator 378 , the primary communication channel administrator 382 , the sub-channel administrator 392
- the enterprise data source 102 defines a name for the new imported automated human interface module 2202 . Further the enterprise data source either uploads a VXML file directly, or copies and paste the VXML content into an entry field in the user interface provided by some embodiments the communications module-enterprise source side 204 -E. Then the user clicks on a button (e.g. “Create”) to initiate the process that converts the VXML into an automated human interface module 2202 . In so doing the VXML file is parsed, and VXML data is validated to ensure proper formatting. If the validation fails an error message, identifying any validation issues, is displayed.
- a button e.g. “Create”
- the data is converted into an automated human interface module 2202 specific JSON file format that represents the internal mapping, organization and overall data structure for the automated human interface module 2202 , including the node graph 2208 which embodies message flows hosted by the automated human interface module 2202 .
- the uploaded data can then be reviewed and edited in an automated message bot editor provided in some embodiments of the communications module-enterprise source side 204 -E.
- automated human interface modules 2202 are coded in a custom JSON structured data format that stores the bot's node graph 2208 (message flow network).
- an enterprise data source 102 is able to directly create native JSON files that can be uploaded into the communications module-enterprise source side 204 -E. The process includes automatic validation of the format, structure and specific parameter nomenclature. Validation issue notification alerts the enterprise data source 102 to the problems the communications module 204 -E found.
- the secure mobile communications platform 200 provides an array of predefined default automated human interface module 2202 templates. Each template provides a node graph that contains placeholder content for an enterprise data source 102 to customize for their purposes.
- available templates are presented in a “Bot Store” and can include automated human interface module 2202 and/or multimedia human interface modules 2232 created by registered entities of the secure mobile communication platform 200 (e.g., registered enterprise data sources 102 ). Examples of such template automated human interface modules 2202 include, but are not limited to, different payment bots.
- one sample payment bot could comprise a node graph 2208 that encodes a linear flow that leads a user in a conversation through a product/service selection process, payment transaction, and ends with the receipt getting stored in the user's file storage.
- Another sample bot could comprise a node graph that simply provides basic store information such as location and office hours.
- the template customer would select a template from the list and then customize the necessary nodes 2210 in the node graph 2208 of the template with the business and specific content.
- the enterprise data source 102 administrator has the option of following a step by step wizard to enter in the content for all the nodes 2210 in the node graph 2208 of the template module 2202 that require customized content or preferred widgets 2216 (e.g. payment widget).
- a “node graph network view” will visually indicate all nodes 2210 that still require customization.
- the enterprise data source 102 administrator clicks on a node to edit it. Further the enterprise data source 102 administrator can save an incompletely customized template.
- template automated human interface modules 2202 and/or multimedia human interface modules 2232 can only be activated for a sub-channel 212 if all required customization nodes have been updated.
- templates for automated human interface modules 2202 are created with a template design module.
- a basic configuration option identifies the module 2202 as a template.
- the templates are defined by creating the underlying content and functional flow logic structure comprising the node graph 2208 . Any node 2210 in the node graph 2208 can be defined as a customization node and it is intended for the enterprise data source 102 administrator to define the content for such nodes for their own use. For instance, in some embodiments, the enterprise data source 102 administrator specifies a title and description/help text for each customization node. This is to help the enterprise data source 102 administrator with defining appropriate content for the node 2210 .
- templates for automated human interface modules 2202 have a configuration option relating to distribution.
- this configuration option (default setting is “off”) can be enabled to make the template available to all enterprise data sources 102 making use of the secure mobile communications platform 200 .
- the bot template will require input for the following metadata (i) title/name, (ii) description, purpose, scope, solution provided, (iii) category (e.g., select up to three from a predefined list), and (iv) price (can be defined as free).
- the secure mobile communications platform 200 enables third party bots to be used in the platform 200 .
- two approaches are made available to select third party bots.
- the secure mobile communications platform 200 provides a ‘web hook’ integration infrastructure that enables secure mobile communications platform 200 customers to connect to third party bot platforms (via the secure mobile communications platform 200 developer interface).
- a specific third party bot is made available via such integration.
- generic/customizable third party bots can be added as automated human interface modules 2202 to a store by a developer defining a third party ‘web hook’ integration as available for ‘distribution”/‘the Bot Store”.
- the following metadata is provided with such third party bots: (i) bot title/name, (ii) description, purpose, scope, solution provided, (iii) category (e.g., select up to three from a predefined list), and (iv) price (can be defined as free).
- any automated human interface module 2202 that has been created and enabled for a primary communication channel 210 becomes available in the primary communication channel 210 manager interface.
- Sub-channel 212 managers can select from any of the available modules 2202 (as well as selecting specific widgets 2216 (e.g. payment widgets), multimedia library content, etc. and deploy them as a response to a user's incoming message in a conversation 2220 .
- An end user who is entered into an automated human interface module 2202 will then be engaged by the automated human interface module's 2202 automated messaging conversation 2220 (e.g., navigated though the node graph 2208 of the module 2202 ) until the automated human interface module 2202 exits the end user.
- An end user who is returned to the live person message queue e.g., the sub-channel administrator queue 2228 ) will show up at the bottom of this queue.
- Sub-channel based automated human interface module auto assignment In some embodiments, and as illustrated in FIG. 22 , secure mobile communications platform 200 administrators can select one or more available automated human interface modules 2202 and third party automated flow bots and assign them to one or more sub-channels 212 . In some such embodiments, if a single automated human interface module 2202 is selected, any end user messages sent through that sub-channel 212 is moved into the automated flow (node graph 2208 ) of that module 2202 . If multiple automated human interface modules 2202 are assigned to a sub-channel 212 , then an automatic automated human interface module 2202 assignment protocol is activated and all incoming messages are processed to send the end user to the most thematically appropriate automated human interface module 2202 .
- sub-channel A of a given primary communication channel may have different automated human interface modules 2202 activated than sub-channel B of the given primary communication channel.
- the enterprise data source 102 administrator is given clear user interface indications as to whether automated human interface modules 2202 are active or inactive at a sub-channel 212 level.
- there is provided an ability for secure mobile communications platform 200 administrators e.g., enterprise data source super administrator 378 , primary communication channel administrator 380 ) to define an automated human interface module 2202 activity schedule that can be edited at any time.
- sub-channel 212 administrators 392 may review the schedule but cannot edit the schedule.
- sub-channel 212 administrators 392 may review the schedule and edit the schedule.
- Third party automated human interface module 2202 integration provides the flexibility for integrating third party automatic message bots, and mixing and matching the third party bots with secure mobile communications platform's 200 native automated human interface modules 2202 into a sub-channel 212 by:
- Automatic human interface module 2202 assignment protocol In some embodiments, when two or more automated human interface modules 2202 are assigned to the same sub-channel 212 , then the enterprise data source 102 administrator is prompted to specify unique interface tag expressions 2204 (e.g., exclusive keywords or phrases for each selected automated human interface module 2202 ) to each automated human interface module as illustrated in FIG. 22 . Both native automated human interface modules 2202 and third party automated human interface modules 2202 are assigned interface tag expressions 2204 . Then, when a new unassigned conversation 2220 is initiated on the sub-channel by way of an incoming message from an end user, the content of the end user's message is scanned for matches between this content and the interface tag expressions 2204 .
- unique interface tag expressions 2204 e.g., exclusive keywords or phrases for each selected automated human interface module 2202
- the conversation is routed to that particular automated human interface module 2202 .
- the enterprise data source 102 administrator has the ability to add, edit, and delete these interface tag expressions 2204 .
- the system looks for any [tag] matches between the message content and the interface tag expressions 2204 defined for any of the automated human interface modules 2202 assigned to the sub-channel. The conversation is moved into the best matching automated human interface module 2202 .
- a “default response mode” is enabled for a sub-channel 212 .
- one of the automated human interface modules 2202 is designated as a default ‘bot’ for the sub-channel and represents the default bot to be selected in case no interface tag expression 2204 matches are found for any of the primary assigned automated human interface modules 2202 .
- a sub-channel exit module 2226 is provided.
- a primary purpose of this exit module is to reengage the automatic human interface module 2202 assignment anytime a user responds to a flow based message with a custom/typed response that moves the user out of the automated human interface module 2202 they were inserted into and conversing with.
- there is an added option to define an appropriate message for reinserting the user into the same automated human interface module 2202 for example, “Let's try rebooting your modem again.”
- Unattended Mode Some embodiments of the present disclosure provide a full automatic mode by which the sub-channel 212 operates. In such embodiments, if the unattended mode is “on”, all conversations 2220 that exited an automated human interface module 2202 , will automatically be reassessed at the sub-channel 212 level using, for instance the automatic human interface module 2202 assignment protocol described above in which the user conversation history is searched from matches to the interface tag expressions 2204 of participating automated human interface modules 2202 . If the conversation 2220 can't be matched to any assigned automated human interface modules 2202 in this manner, the conversation 2220 is routed to the default automated human interface module 2202 , which is intended to provide a prepared close to the conversation.
- Session reassessment mode In some embodiments, in scenarios where a user's incoming message fails all tag matches, the system will assign the message either into the live chat support (e.g., sub-channel administrator queue 2228 of FIG. 22 ) or the default automated human interface module (in “unattended mode”) by default. When “session reassessment mode” is enabled, the system will instead automatically present the user with a message that asks the user to select from a list of options, which are based on a (to be selected) list of interface tag expressions 2204 from any available automated human interface modules 2202 attached to the sub-channel 212 . For example, assume there are two available automated human interface modules 2202 in the sub-channel 212 :
- Tag assessment logic is a central function leveraged by processes managing automated conversation flows.
- Tag matching involves matching words or phrases from messages from end users and a defined list of tags associated with nodes 2210 (node tags 2210 ) or an automated human interface modules 2202 (interface tag expressions 2204 ).
- interface tag expressions 2204 are not duplicated across multiple automated human interface modules 2202 assigned to the same sub-channel 212 .
- the scope tag expressions 2206 should be unique. Node tags 2211 within an automated human interface module 2202 can be duplicated across nodes 2210 .
- node tags 2211 are assessed when a user replies to an automated set of options from a specific node 2210 with a custom message. So, for example, the tag “Apple” assigned as a node tag 2211 to two different nodes 2210 in the same node graph 2208 may only get evaluated for a given conversation when the conversation is at that node 2210 .
- Tag Matching Process One tag matching process in accordance with the present disclosure is as follows. When there is a singular tag match within an asset (e.g., the interface tag expressions 2204 of only one human interface module 2204 match a message in a conversation) automatic selection occurs. When multiple tag matches within an asset (e.g. an interface tag expression or node tags 2211 ), tags are evaluated in order of priority they are listed. Assume a message contains the following keywords “apples oranges lemons”. If the active node 2210 has the following 2211 tags (and destination nodes) associated with it:
- node tag 2211 - 1 “oranges apples”->(node A 200 )
- node tag 2211 - 2 “apples oranges”->(node A 220 )
- node tag 2211 - 3 “apples”->(node B 210 )
- node tag 2211 - 4 “oranges”->(node B 220 )
- node tag 2211 - 5 : “kiwi”->(node B 230 )
- the system 200 will automatically respond back and challenge the end user to select a conversational topic by reflecting back individual choices reflecting each tag match. For example, assume a message from an end user contains the following keywords “apples oranges lemons” and three automated human interface modules 2202 that each have separate interface tag expressions 2204 associated with them (they can't have the same tags assigned):
- system 200 manages conversations to help track and identify the progress and process of each conversation and to be able to differentiate different conversations originating from a specific end user.
- the system tracks a conversation by (i) the active conversation identifier, (ii) the process module identifier (e.g., automated human interface module 2202 , live chat with sub-channel administrator, etc.), (iii) node identifier 2210 , and/or (iv) support representative (e.g., sub-channel administrator) identifier (live chat).
- the process module identifier e.g., automated human interface module 2202 , live chat with sub-channel administrator, etc.
- node identifier 2210 e.g., live chat with sub-channel administrator, etc.
- support representative e.g., sub-channel administrator
- Session tracking conversation initiation.
- an initial incoming message from an end user does not contain a conversation identifier and is therefore automatically assigned a unique conversation identifier.
- the conversation identifier is specific to a user/and sub-channel 212 combination.
- Session tracking conversation close.
- the conversation identifier is closed when, for instance, the system identifies that the conversation has ended. That can be accomplished by a designated conversation closing node 2210 such that once conversation reaches this designed node, the conversation ends.
- the designated conversation closing node may send a final message to the end user.
- the conversation closing node option specific ends a final conversation close question to the user. At least one node option, if selected by the user would indicate that the conversation has ended, e.g. “Issue resolved/Not resolved,” with the “resolved” option clearing the conversation.
- the conversation closing node is configured to send a final response to the end user (e.g., “Thank you/Have a nice day”) before clearing the conversation identifier.
- automated human interface module administrators could close a conversation by either (i) selecting and sending a predefined, custom or system, conversation close module, which includes a defined closing message, (ii) clicking on the “close conversation” button which ends the conversation (e.g., after providing a customized response back to the end user providing a message such as “Greg, glad to be of assistance; have fun at the SF Giants game on Saturday!”
- a conversation may cover multiple topics, e.g. with the conversation moving from one module 2202 to another module 2202 . In such embodiments, the conversation will retain the same conversation identifier.
- automated human interface module 2202 /node identifiers 2210 .
- an automated human interface module 2202 can't resolve a conversation and needs to bounce a conversation (out), e.g. back up to the sub-channel level, the automated human interface module 2202 and node identifiers are cleared from the conversation, but the conversation identifier is retained. For instance when the sub-channel reassigns the conversation to another automated human interface module 2202 or to live chat, the appropriate automated human interface module 2202 identifier or live chat identifier is added into the conversation.
- Some embodiments of the present disclosure provide configuration options, enabling enterprise data source 102 administrators to define time based conversation closing rules (e.g., if ‘X’ hours/days pass and/or user closes application without the user sending a response, the conversation is closed; if conversation close type response was sent to the end user, but the end user does not respond and either closes the application, and/or ‘X’ hours pass, the conversation is closed).
- time based conversation closing rules e.g., if ‘X’ hours/days pass and/or user closes application without the user sending a response, the conversation is closed; if conversation close type response was sent to the end user, but the end user does not respond and either closes the application, and/or ‘X’ hours pass, the conversation is closed).
- Automated human interface modules 2202 automated conversation logic process.
- the default conversational flow in an automated human interface module 2202 moves a conversation 2220 through the node graph 2208 of nodes 2210 .
- Each node 2210 can contain multiple options for the end user to select.
- Each node option can move the conversation to a specific destination node 2210 in the automated human interface module's node graph 2208 .
- Multiple nodes 2210 can point to the same specific destination node 2210 .
- the node graph 2208 can therefore be comprised of complex branches of connected nodes.
- a node graph is a cyclic or acyclic graph with branches. Resulting conversation flows can jump from a node in one node branch to a different node branch in such graphs. It is also possible to move the conversation 2220 from a first node 2210 in a first module 2202 to a second node 2210 in a second module 2202 .
- Dynamic message assessment Some embodiments of the present disclosure provide dynamic message assessment that can reroute user conversations 2220 within the automated human interface module 2202 .
- the native automated human interface modules 2202 can be configured to listen for keywords/phrases of an entered message.
- the message is evaluated at up to four levels two which are within an automated human interface module 2202 .
- node tags 2211 provide one or more keywords/phrases that are added to a source node 2210 . Each of these tags 2211 is also assigned a destination node 2210 that the end user is moved to if the node tag is fired. For example: assume that node ‘A 112 ’ has three defined node tags 2211 , e.g. node tag 2211 - 1 “Apples”, node tag 2211 - 2 “Oranges”, and node tag 2211 - 3 “Kiwis”. Each node tag would further be associated with a destination node; e.g. node tag 2211 - 1 “Apples” connects to node ‘B 234 ’.
- the automated human interface module 2202 checks for node tag matches at the current node 2210 first. If there are no matches with the node tags 2211 of the current node, the automated human interface module 2202 goes to the level 2 assessment described below.
- Level 2 Human interface module tags.
- one or more keywords/phrases can be assigned at the automated human interface module 2202 scope as scope tag expressions 2204 .
- the node tags 2211 at the current active node 2210 fails to match the end user message
- the end user message is compared to each of the scope tag expressions 2206 of the automated human interface module 2202 that is currently hosting the conversation.
- Each scope tag expression 2206 at the automated human interface module 2202 is assigned to a destination node 2210 in the node graph 2208 .
- the conversation is progressed to the node 2210 referenced by the scope tag expression 2206 .
- Level 3 Reinsertion into sub-channel.
- the level 1 and level 2 tags fail to find a match (e.g., the automated human interface module 2202 presently hosting the conversation within a sub-channel 212 )
- the user is excited out of the current automated human interface module 2202 and moved back to the 1.1 automatic assignment protocol, which then reassesses the message at the sub-channel's 212 assigned bot level.
- the message is compared to the interface tag expressions (level 3) of each of the automated human interface modules in the sub-channel 212 .
- this system behavior is automatically enabled whenever the sub-channel 212 /primary communication channel's “1.1. Unattended Mode” is “on”.
- conversations are automatically moved to the live support conversations (e.g., the sub-channel administrator queue 2228 of the sub-channel) after they exit an automated human interface module 2202 .
- Level 4 multimedia human interface module 2220 . While it is possible to define a specific multimedia content lookup as part of the message content for an automated human interface module 2202 , the inclusion of a multimedia human interface module 2232 in an automated human interface modules 2202 adds automated media file retrieval. When enabled, the multimedia human interface module 2232 will attempt to follow the conversation from the automated human interface module 2202 . Referring to FIG. 23 , as the conversation proceeds to drill down into a specific topic, the multimedia human interface module 2232 will define its scope for evaluating tag matches within the corresponding directory 2306 in its own organizational structure, as long as there is a directory 2306 to drill into.
- the destination node will inherit the branch hierarchy in the form of a tag sequence that is passed to the destination node.
- the inherited branch hierarchy represents a list of tags that in the view of the multimedia human interface module 2232 takes precedence over the actual conversation tag history.
- the multimedia human interface module 2232 will only evaluate tag matches for objects 2310 if it contains any files in its current conversation (following) in the new directory 2306 location.
- the multimedia human interface module 2232 process can be invoked in two ways, depending on configuration. In one approach, it is invoked by defining any node response option to pass through multimedia human interface module 2232 . The multimedia human interface module 2232 will review the associated keywords from the node option and follow the automated human interface module's 2202 automated node response with an appropriate media file that will also be sent to the end user. In another approach, by assessing the user's last custom message against the multimedia human interface module 2232 tags. The automated human interface module 2202 passes to the multimedia human interface module 2232 the user response, any node tags, and the tag history from the current the automated human interface module 2202 session in that order. The order of the tags reflects a matching preference with the first listed keywords receiving more weight.
- the multimedia human interface module 2232 looks for media file tag matches in the following order. First it checks user response and node tags against the tags 2308 and appropriate tags 2312 . If there are no matches to tags from the user node option, custom message, or node tags, the multimedia human interface module 2232 will include a fixed number (configurable) of tag history tags for evaluation. If there is an inherited tag hierarchy it will take priority over the full conversation hierarchy. If there are no ‘hits’, multimedia human interface module 2232 will pause. If multiple objects 2310 result in hits, the object 210 with the highest hit score (total ‘weight’ score of matching tags) and is posted to the conversation or is passed to the automated human interface module 2202 for posting into the conversation.
- Parallel content channels In some embodiments there is layered within the multimedia library organizational hierarchy options to leverage upsell or advertisement content. These options can be enabled/disabled on a per automated human interface module 2202 basis.
- Elapsed time limit In some embodiments, based on a primary communication channel 210 configuration setting, a maximum amount of time is allotted for the system to respond from within an automated human interface module 2202 . When that time is exceeded, the user will be moved out of the automated human interface module 2202 . In some embodiments, a reference search via the multimedia human interface module 2232 has its own time out limit. If a multimedia human interface module 2232 search times out, the user is retained in the automated human interface module 2202 and it's conversation continues.
- Conversation tag history As a conversation or message interaction unfolds, the system will aggregate a tag history (e.g., referring to FIG. 23 , user conversation history) for the user's conversations in a sub-channel 212 .
- the tag history structure will include (i) primary communication channel 210 name and identifiers, sub-channel 212 name and identifier, end user identifier, conversational method (e.g., live interaction, automated human interface module 2202 name and identifier), sequence of messages the user provided (user conversation history 2224 ), matching (level 1, 2, 3, 4) tags associated with any end user response, and an active: Y/N flag (reflecting whether the user is actively interacting).
- Automated flow human interface module 2202 usage pattern analysis Some embodiments of the present disclosure provide reports that provide overview data about user sessions and provide summary data and statistics for various aggregation application scopes such as, for the primary communication channel 210 , breakdown of data across sub-channels 212 and for sub-channels 212 , breakdown of data across messaging channels, e.g., automated human interface modules 2202 and live messaging with the sub-channel administrator 392 .
- reports provide a breakdown of data across nodes 2210 of each automated human interface module 2202 and the type of widget 2216 , and live sessions (also lists automated human interface modules 2202 , and objects 2310 delivered by the multimedia human interface module 2232 .
- These reports provide for the ability to drill into the more detailed scope reports from the highest level; e.g. the primary channel 210 scope.
- these reports will present numbers in/beside graphical indicators (e.g. circles, whose size and color depth reflects the size of the number to be displayed in comparison to all other numbers in the report). This allows the enterprise data source 102 administrator to quickly look at the report and identify where the most end users are.
- Some embodiments of the present disclosure provide a real time dashboard indicating distribution of user data across the various scopes (listed above), such as number of live users (with active message interactions), number of inactive users with completed conversations in the past (selectable date range and default periods), total number of incoming messages, average response time to messages initiated by end users, average conversation/interaction time, average number of message exchanges before resolution or exit, number and percent of positive resolutions by live messaging, number and percent of positive resolutions by automated human interface modules 2202 , and/or number and percent of unresolved inquiries by automated human interface modules 2202 .
- Automated human interface module 2202 reports Some embodiments of the present disclosure provide a summary overview of how end users moved through the automated human interface module 2202 conversations. For example, some embodiments present where and volume of end users entered the automated human interface module 2202 . Some embodiments of the present disclosure provide a resolved path and exit report presentation of where with what volume end users exited the automated human interface module 2202 with the conversation ‘unresolved’. Some embodiments of the present disclosure provide an unresolved hot spot exit report presentation of where with what volume end users exited the automated human interface module 2202 with the conversation ‘unresolved’. This secure mobile communications platform 200 ‘hot spot’ report provides a clear indication of the automated human interface module's 2202 user exit performance.
- Some embodiments of the present disclosure feature clear indicators of any “hot spots”; e.g. nodes in the automated human interface module 2202 where there is concentration of unresolved conversations that then exited the automated human interface module 2202 .
- Some embodiments of the present disclosure provide a tag summary report for each node through which any end users exited the automated human interface module 2202 .
- the report provides a breakdown of the specific tags that resulted in the user's exit from the automated human interface module 2202 .
- the tag report for a specific node may provide a volume based breakdown of the conversation tags associated with the exit messages this display may include volume word clouds and a table sorted by volume of tags or phrases.
- Some embodiments of the present disclosure provide an automated report the system can automatically send a daily or weekly email update on sub-channel 212 and automated human interface module 2202 performance, including a summary on automated human interface module 2202 exit performance and top ‘hot spot’ nodes along with top tags.
- Some embodiments of the present disclosure provided differential reports showing changes in automated human interface module 2202 performance based on customizable time periods and also between saved automated human interface module 2202 updates.
- Automated human interface module 2202 training can be evolved in a number of ways to expand their capability and the range of topics they can cover via automated message interactions.
- One of the primary ways that enterprise data source administrators 101 use this to improve the effectiveness of their automated human interface modules 2202 is to periodically check the “primary channel reports” which identify the ‘hot spots’ in the automated human interface module 2202 messaging logic network and that reflect a primary opportunity to evaluate modifying/expanding the automated human interface module 2202 in those specific nodes/areas to expand the automated human interface module's 2202 ability to increase the success rate of completing conversations. Further, the node tag report will provide very specific data about what end users are focused on with their response selections and custom messages at time of exit.
- Bot survey mode (or Survey bots) enables the communications module 204 to extend a conversation session 2220 of one of the automated messaging bots 2202 described above so that answers to survey questions are directly connected to the conversation session 2220 scope of the automated messaging bot 2202 .
- the end user's 320 interactions are managed and stored separate from the record of the conversation session 2220 , ensuring that the survey bot question interactions are not stored as part of the actual conversation history of the conversation session 2220 , survey questions are not reviewable by the end user 320 , and the survey question responses are not directly viewable by live support agents such as the sub-channel administrators 392 or the primary communication channel administrators 380 .
- a server system 200 comprising one or more processors 24 and memory 192 / 290 , using a unique identifier 218 received from a first user to obtain characteristic information from a user profile corresponding to the first user that is stored in one or more data stores 224 , the first user is joined to a plurality of pre-existing primary communication channels 210 based upon the user profile information for the first user.
- Each primary communication channel in the plurality of primary communication channels facilitates electronic communication between a corresponding enterprise data source 102 and a first remote user device 104 associated with the first user.
- Each primary communication channel 210 in the plurality of communication channels hosts a different plurality of users.
- the first user is joined, for a first primary communication channel in the plurality of primary communication channels associated with the first user, to one or more pre-existing sub-channels 212 associated with the first primary communication channel.
- a first message that is posted by the first user is received.
- the first message comprises (a) a key 398 identifying a first sub-channel 212 in the one or more pre-existing sub-channels, (b) a first application programming interface token identifying the first user, and (c) a first communication.
- An example first communication is the text message “I would like to see what is on sale today.”
- Another example of the first communication is a selection of an affordance of a GUI presented to the first user, which includes an affordance for “Sales.” Selection of this affordance (e.g., radio button) by the first user generates the first communication that indicates that the user would like to see what is on sale.
- a first automated human interface module 2202 engages in electronic conversation with the first user using the first sub-channel 212 .
- the first automated human interface module includes a node graph 2208 that directs one or more states of the electronic conversation.
- a second message that is posted by the first automated human interface module is received.
- the second message includes (a) a key identifying the first sub-channel, (b) the first application programming interface token identifying the first user, and (c) a second communication responsive to the first communication.
- the first application programming interface token and the key included in the second message to route the second message to the first remote user device within the first sub-channel thereby initiating a first secure bidirectional conversation between (i) the first remote user device 104 associated with the first user and (ii) a first enterprise data source 102 associated with the first primary communication channel.
- the conversation with the first user is not with an automated human interface module but is rather between a sub-channel administrator 392 or primary communication channel administrator 380 and an end user.
- the conversation with the first user begins with an automated human interface module but is later transferred to a sub-channel administrator 392 or primary communication channel administrator 380 .
- a survey chat bot is engaged at the end of such a live conversation (between a sub-channel administrator 392 or primary communication channel administrator 380 and an end user), at the end of a conversation 2220 with an automated messaging bot 2202 , or is initiated by a live supporting agent, such as a sub-channel administrator 392 or the primary communication channel administrators 380 .
- a survey chat bot is engaged at the end of a conversation even in instances where no part of the conversation ever went live between a sub-channel administrator 392 or primary communication channel administrator 380 and the first end user.
- the survey chat bot is configurable within the communication module 204 to work within a particular sub-channel 212 that is hosting multiple conversations 2220 within one or more automated messaging bots 2202 .
- the survey chat bot is set up so that when a conversation 2220 in the sub-channel 212 is marked as ended by a live agent (e.g., a sub-channel administrators 392 or the primary communication channel administrators 380 ) or the automated messaging bot 2202 itself, the survey chat bot is automatically appended to the conversation 2220 in order to interact with the end user 322 in order to conduct a survey associated with the survey chat bot.
- a live agent e.g., a sub-channel administrators 392 or the primary communication channel administrators 380
- all or a portion of a first secure bidirectional conversation is recorded into a first data structure and the first secure bidirectional conversation to is transferred to a survey automated human interface module at a conclusion of the first secure bidirectional conversation thereby initiating a survey of the first user by the survey automated human interface module.
- the survey of the first user is not recorded in the first data structure.
- Some embodiments of the present disclosure provide automated messaging bots 2202 that have an automatic transfer to a default survey bot. That is, the node graph 2208 of the automated messaging bot 2202 specifies a particular default survey bot that is to conduct a survey at the end of each conversation 2220 hosted by the respective automated messaging bot 2202 . In such embodiments, end users 320 are seamlessly transitioned to the first node in the survey chat bot.
- Some embodiments of the present disclosure define a default survey bot on a sub-channel 212 basis.
- each respective conversation 2220 within the sub-channel 212 is automatically transitioned to the default survey chat bot after the respective conversation is closed by either a (i) live support agent (e.g., sub-channel administrators 392 or the primary communication channel administrators 380 ) or (ii) the corresponding automated messaging bot 2202 that is hosting the respective conversation 2220 .
- end users 320 are seamlessly transitioned to the first node in the survey chat bot.
- Some embodiments of the present disclosure define a default survey bot on a primary communication channel 210 basis.
- each respective conversation 2220 in each sub-channel 212 within the primary communication channel 210 is automatically transitioned to the default survey chat bot after the respective conversation is closed by either a (i) live support agent (e.g., sub-channel administrators 392 or the primary communication channel administrators 380 ) or (ii) the corresponding automated messaging bot 2202 that is hosting the respective conversation 2220 .
- end users 320 are seamlessly transitioned to the first node in the survey chat bot.
- a survey chat bot is fully customizable on a per sub-channel 212 or a per primary communication channel 210 basis and can contain a multitude of nodes in the form of a node graph 2208 disclosed above for the automated messaging bot 2202 . That is, in some embodiments, all node types that are available for automated messaging bots 2202 are available for survey chat bots. As such, in some embodiments, the survey chat bot comprises a multitude of nodes 2210 within its node graph 2208 , and these nodes are connected by edges.
- a different survey chat bot is defined for each sub-channel 212 . In some embodiments, a different survey chat bot is defined for each primary communication channel 210 .
- a survey chat bot facilitates the computation of a net promoter score for a conversation 2220 .
- a net promoter score is designed to represent how an end user 320 feels about the enterprise data source 102 that they engaged with in the conversation 2220 .
- the net promoter score provides a measure of how the end user 320 feels about the quality of customer support in the conversation 2220 .
- the survey chat bot asks the end user 320 a single question in order to derive the net promoter score such as, “On a scale of one to ten, how would you rate your experience with our support service with you today?” Based on what the user selects to a question such as this, the net promoter score is computed.
- the computation of the net promoter score is more complex and multiple questions are posed to the end user 320 by the survey chat bot.
- the survey chat bot asks three or four questions and then computes the net promoter score using a predetermined formula based upon the responses to the three or four questions.
- the questions are nodes 2210 on a graph and which nodes (and thus which questions) are posed to the end user 320 is determined by the end user's answers to earlier questions in the session with the survey chat bot.
- the net promoter score is reported for a single conversation 2220 .
- the net promoter score is aggregated across all the conversations 2220 in which a particular sub-channel administrator 392 is engaged in a live conversation at some point within the overall conversation.
- the net promoter score is aggregated across all the conversations 2220 in a particular sub-channel 212 .
- the net promoter score is aggregated across all the conversations 2220 in all or a sub-set of the sub-channels 212 associated with a primary communication channel 210 . In some embodiments, only those conversations that have completed within a predetermined period of time are used in such aggregation (e.g., the past five minutes, the past hour, the past day, the past week).
- those conversations that terminate or occur at particular times of the day (e.g. business hours) or the week (work days versus holidays) are aggregated.
- net promoter scores of conversations that have more recently been completed are given higher weight than conversations that were less recently completed in such aggregation.
- a specific net promoter score survey question is defined.
- Data for the node 2210 hosting this survey question is automatically collected, aggregated and presented back to the support center administrator (e.g., the sub-channel administrator 392 ).
- the net promoter score is automatically tracked for (i) each automated messaging bot 2202 conversation 2220 , (ii) each live agent (e.g., sub-channel administrator 392 ) conversation, and/or (iii) per automated messaging bot 2202 per day as well as historically as well as across all automated messaging bots within a sub-channel 212 and/or in all or a subset of the sub-channel 212 in a primary communication channel 210 .
- a dedicated report is automatically generated covering all questions for each survey chat bot.
- each report presents survey data in one of two formats, depending on whether the survey question answers gathered integer/numeric or character/text based feedback.
- FIG. 24 illustrates a sample aggregated report from a survey chat bot that collects numeric survey data.
- FIG. 25 illustrates a sample aggregated report from a survey chat bot that collects text based feedback.
- each chat bot conversation 2220 is based on a dedicated chat bot instance.
- the automated messaging bot 2202 provides a chat bot conversation 2220 self-management and initiation feature that provides flexibility for chat bot conversations 2220 to be ended and initiated by automated messaging bots 2202 themselves. For instance, consider the case where a given end user 320 has initiated a conversation 2220 to order products. Historical data associated with the given user 320 indicates that the user typically orders six products.
- the chat bot conversation 2220 self-management and initiation feature would recall the cart from the last conversations the given end user 320 participated in and pre-populate the cart with the six products the user is likely to order.
- the end user 320 can then remove or add items to pre-populated cart and the pre-populated cart represents a better initial state then requiring the user to add the six items the commonly order to the cart.
- an automated messaging bot 2202 provides the option of loading the details of a prior conversation that a particular end user 320 engaged in. For instance the end user 320 could have completed a particular transaction they were doing, but it may still be helpful to have some or all of the details of the last transaction.
- the historical data is automatically loaded.
- the end user is given the option to load the historical data from one or more prior conversations 2220 the particular end user 320 engaged in. For instance, in such alternative embodiments, the end may say, “No, it doesn't make sense to load the historical data. I have something completely different that I want to do.
- the automated messaging bot 2202 offers to a particular end user 320 “We have historical data for you that indicate that you engaged with us the following five times in the past two months. Would it be helpful to load the selections you made in any of these transactions to more streamline the current transaction?” Responsive to this, the end user 320 may pick not just the last transaction, but maybe they would say, “Oh, you know, the transaction from three weeks ago is the one I would like to start with.”
- the automated messaging bot 2202 loads the prior conversation 2220 associated with the given end user and provides a summary of the conversation to the effect: “Okay. This is what you did the last time at each of these six steps—would you like to change your response to any of the steps?” The user can then navigate through the historical information making any necessary changes before proceeding. In this way, the user does not have to enter in all the information for each of the six steps each time they engage in an instance of a conversation 2220 in order to perform a repetitive or partially repetitive transaction.
- the end user 320 goes through, selecting the nodes 2210 or aspects that need to be changed rather than entering all new information.
- the automated messaging bot 2202 takes the end user 320 to each node, and the user modifies their selection.
- the end user 320 gets an updated summary, of their selections that they review again, and, once they are satisfied with their selections, indicate to the automated messaging bot 2202 that all the entered information is correct.
- a conversation 2220 for an automated messaging bot 2202 that has an arbitrary number of steps each requiring end user 320 input can be executed by making a minimum number of changes, if any, and, advantageously, the end user 320 is able to now complete the order or whatever the process is associated with the automated messaging bot 2202 and encoded by the automated messaging bot's node graph 2208 in a streamlined experience.
- a chat bot can thereby end its own chat bot instance, and thereby end the conversation, and at the same time initialize a process to instantiate a new chat bot instance and seamlessly initiate a new conversation for the end user in a different bot within the stream's Pypebot framework (extended bot graph).
- automated messaging bots 2202 include a number of initialization options.
- One such option is to load historical data, such as data from a recent chat session (conversation 2220 ) with an automated messaging bot 2202 and the present end user 212 that operated in the same sub-channel 212 as the newly initialized automated messaging bot 2202 .
- historical data may be loaded, such as data from a recent chat session with an automated messaging bot 2202 and the present end user 212 that operated in any sub-channel 212 under the same primary communication channel 210 as the newly initialized automated messaging bot 2202 .
- data from the user's last chat session with such an automated messaging bot 2202 can be automatically preloaded into a summary node of the chat bot session hosted by the automated messaging bot 2202 , or any of the nodes 2210 of the automated messaging bot 2202 .
- the data can be seeded into appropriate nodes 2210 of the automated messaging bot 2202 .
- the use of the summary node can significantly reduce the interactions a user needs to have with the automated messaging bot 2202 to complete their intended transaction(s). For instance, consider the case where the automated messaging bot 2202 is asking a series of questions within a conversation 2220 that it needs all the answers to in order to be able to complete a particular interaction or business transaction. Before finalizing the transaction, the automated messaging bot 2202 may say, “Okay. We have spent the last X amount of minutes answering questions. Here is what I have. Here is what I'm going to submit.
- the summary node is used to bring in historical data.
- the summary node may be used to bring in historical data from within the same chat session or from a prior chat session.
- the summary node may be used when a bot initializes a new conversation 2220 or any time during the conversation 2220 .
- a number of automated messaging bot 2202 configuration options are provided.
- One such option is default, which indicates whether historical chat data should be loaded by default.
- historical chat data e.g., from the same sub-channel 212 with the same user 216
- Another such option is that historical chat data is loaded by user choice. For instance, when a data inclusion user choice option is invoked, the automated messaging bot 2202 asks the active user 212 whether the most recent historical data associated with the active user in the sub-channel 212 should be loaded.
- a historical chat session selection option is invoked, the active user 216 is asked to select a specific historical chat session, by e.g. date/time, from which the data should be referenced. This option enables the active user 216 to select and have the automated messaging bot 2202 load the historical data set that is most similar to the user's current needs.
- one of the nodes 2210 of an automated messaging bot 2202 is a summary node.
- the bot can present a summary of the user's data in one message. This enables the bot 2202 to display the available data to the user. This saves the user the time to respond to each question.
- the bot 2202 may say “Here is what I have based on the historical data we loaded for you and all the information is accounted for except for two missing items.” So the user would fill those in or if everything's complete, like I mentioned earlier, then the user might select a specific items to say, “Okay.
- an embodiment of the systems and methods of the present disclosure provides a summary node edit process in which the user 216 can select and change a response to a specific node 2210 and will then immediately be presented with an updated version of the summary node.
- the user 216 may elect to edit specific additional node data.
- direct return (boomerang) node edges are present in the node graph 2208 . This edge type in the node graph 2208 enables the summary node to navigate the user to the appropriate/selected node 2210 in the bot 2202 . After the user interacts with that node, the user is immediately returned back to the summary node, bypassing any standard node flow sequence from that node.
- the bot 2202 presents a second node that enables the user to make this change.
- the user is then actually sent back to the summary node, as opposed to the node or nodes that second node normally progresses to upon node completion.
- the plurality of edges of a bot define an ordered sequence in which nodes in the plurality of nodes of the bot are invoked, and the instructions to edit the summary information drives a secure bidirectional conversation associated with the bot outside of the ordered sequence.
- Start Node Bot Instantiation enables a bot 2202 or live agent to trigger the initialization of a new bot instance 2202 (e.g. a conversation 2220 hosted by the bot instance) and also define the exact starting point, e.g. node 2210 , of the new conversation within the bot. Without this option any new bot framework instance starts at a default bot specific starting point, which is typically to await and then evaluate initial end user input and then send the user to the most appropriate bot.
- the start node can be specified as part of the bot instantiation request function in accordance with the systems and methods of the present disclosure.
- the bot may thereby, for example, present the user with an initial message and options to select from that are accurately relevant to the topic/task the user is interested in. If that information is already available prior to the instantiation of the bot, leveraging that knowledge will yield a better user experience.
- a first communication initiating a conversation from an end user is evaluated, prior to the bot responding with a second message, to select an initial node in the plurality of nodes of the bot based upon the content of the first communication. This selected initial node is then used by the bot to generate the second (responsive) communication.
- One use case example for the above-described defined start node bot instantiation is a survey bot.
- the end user 216 has completed a conversation (e.g. it has been closed by either a chat bot or a live agent).
- the end user is presented with a survey; e.g. transitioned to a survey bot.
- the user completes the survey and is then presented with a multitude of options, including (optionally) the opportunity to initiate a new conversation in the same or a different bot.
- the user is in an existing conversation 2220 with a bot 2202 and the conversation is reaching an end point. For instance, a transaction within the conversation has been completed. Instead of the bot 2202 just signing off and saying, “Okay.
- the bot 2202 may say the bot can provide one or more survey questions such as “Is there something we can help you in the technology department or would you like to make an appointment now?”
- the answer to this question can lead to one of two specific starting nodes in a new conversation.
- the answer to the question can lead to the instantiation of different types of bots, initiated at particular nodes.
- an end user upon conclusion of a first secure bidirectional conversation with a first automated human interface module (bot), an end user is subjected to a survey within the sub-channel that was hosting the first secure bidirectional conversation.
- a survey result is obtained within the first sub-channel based upon one or more responses of the end user to the survey.
- the survey results are evaluated to select an initial node in a plurality of nodes of another automated human interface module (bot) based upon the survey result.
- This initial node is used by the second automated human interface module to initiate a second secure bidirectional conversation between the remote user device associated with the end user and the enterprise data source associated with a primary communication channel that includes the sub-channel.
- a bot 2202 may say “Okay. Well, is there something else I can help you with?” For instance, the user may have successfully completed their first task of, e.g. changing the flight time for a trip on the same day. The user now wishes to complete a booking for a different trip.
- the bot 2202 is able to pass on information so that when the new bot gets initialized, the bot can be smart and proactive enough to say to the user 216 “Okay.
- the bot 2202 supports the ability to trigger a new conversation 2220 and at the end of a transaction presents the user with an affordance. If the user selects the affordance, the bot will either initiate a survey bot or jump to a survey node within its own node graph. In either case, the end user is presented with the message such as “Can I help you with anything else?” when the affordance is selected.
- the current bot 2202 instance (e.g., the conversation 2220 hosted by the current bot 2202 ) plans to shut down but the bot knows the user clicked on the affordance (e.g., button). So as soon as the current bot instance shuts down (e.g., the current conversation 2220 is terminated), the bot 2202 initiates a new bot 2202 instance and, instead of the user 216 just typing in the standard introductory requested information specified by the node graph of the new bot 2202 , the new bot, because of the additional information from the last bot instance by way of the defined state node bot instantiation, will initiate at a very specific node in the bot node graph. For instance, the bot may say “Okay. You've finished a prior transaction.
- the end user 216 does not have to worry about the separate ticket numbers for the two conversations 2220 or whether the bot 2202 hand off occurs.
- the defined start node bot instantiation feature provides the flexibility to allow end user 216 to spin up or spin down bot instances (e.g., conversations 2220 ) and jump to specific nodes within these instances.
- the bot instances 2202 that are spun up can be in a different category than the original bot.
- an initial node in a plurality of nodes of a second automated human interface module is selected based upon an end state of the first secure bidirectional conversation.
- This initial node is used by the second bot to initiate a second secure bidirectional conversation between (i) a first remote user device associated with the first user and the enterprise data source associated with a primary communication channel that includes the sub-channel.
- Still another use case example for the define start node bot instantiation is live agent (e.g., sub-channel administrator 392 ) to chat bot 2202 conversation transfer. This is the ability for agents to transfer a conversation to a chat bot.
- live agent e.g., sub-channel administrator 392
- This is the ability for agents to transfer a conversation to a chat bot.
- the primary scenario is for an agent to select a specific available chat bot 2202 and typically an accessible target ‘entry’ node within the selected bot.
- the agent is able to pass the conversation back into a bot.
- the conversation 2220 is moved to a very specific node 2220 in the bot. So, then, as soon as the transition happens from the live agent to the bot, the conversation is moved into a specific node. Because of this, for example, the bot may immediately say, “Oh, okay.
- the process requires the bot initialization function. It also depends on the ability to specify the target node 2210 within the node graph 2208 of the chat bot 2202 , which allows a bot to initiate the conversation 2220 with the end user 216 as part of the transfer. Since the agent knows what the user is looking for, it is appropriate for the bot 2202 to begin the conversation at the right point (e.g., at the right node 2214 in the node graph 2208 of the automated human interface module 2202 ) without the user having to restate the question for the bot.
- This use case scenario is beneficial because it allows agents to offload conversations that may have initially required live agent support, but have transitioned back to a standard workflow.
- This use case scenario is also beneficial because it allows the live agent to, upon identifying a common scenario, initiate a transfer to a chat bot.
- This use case scenario is also beneficial in situations where the initial live support case is successfully concluded and the user has an additional request, one that can be readily handled by a chat bot.
- Multi-level Bot level exception handling level 3.
- Bots 2202 are designed to be able to pull information from external data systems. This may be done by any of a number of standard methods, such as API calls. Thus, under normal circumstances, a bot 2202 gets to a certain node 2210 in its node graph 2208 . The bot 2202 has enough information to make an authenticated call to an external system in order to pull information in for a specific user 216 . However, sometimes the external system may be down when this call is made. Accordingly, in some embodiments, each automated human interface module 2202 includes a core multilevel exception handling protocol to handle such situations.
- the bot 2202 recognizes the occurrence of the exception state and transitions the conversation 2220 to an exception handling node 2210 within the bot's node graph 2208 .
- this exception handling node 2210 is customizable by the enterprise data source 208 of the associated primary communication channel hosting the bot 2202 so that the enterprise data source 208 has control over the look and feel of such exceptions.
- options are provided to the enterprise data source 208 to customize some of the wording and some of the options that they want to make available when an exception arises.
- options include whether to move the conversation to a live agent.
- options include notifying the user that this part of the bot 2202 doesn't work and providing the user with a help menu or suggesting to the user that they try a different transaction.
- the systems and methods of the present disclosure provides bots 2202 that include what is termed here to be level three exception handling.
- Level three exception handling is a data exchange failure with an external system.
- many bots 2202 interact with external data stores by way of, for example, APIs.
- the bot 2202 external data exchange exception handling process is aware of when a bot instance is awaiting a response to, for example, an API request. If there is no response or the server responds with an HTTP error code, the bot 2202 understands the issue and initiates an appropriate protocol that retrieves the error code and then moves that information to a customizable exception handling node within its own node graph 2208 or terminates the conversation 2220 and initiates another specific bot 2202 (an exception handling bot) to handle the error.
- the exception handling node or bot can be customized to provide the user with a predetermined type of response, including the most appropriate alternative/next steps the user can take.
- level three bot 2202 exception handling supports any number of similar failure types, external API call failures being just one example. Another example is the failure of a feature extending plugin.
- the systems and methods of the present disclosure provide bots 2202 that include what is termed here level two exception handling.
- Level two exception handling is a bot 2202 conversation 2220 failure.
- the communications module 204 and/or the bot 2202 provides a background monitoring process that provides a continuous assessment of each bot conversation 2220 . This allows the bot to be aware if it becomes stuck on some process (e.g., at some node 2210 ), for instance due to a design flaw or any event that results in unexpected behavior resulting in the bot becoming unresponsive.
- the bot 2202 platform e.g., communications module 204
- the bot 2202 platform can be configured to define the allowable latency. Once the latency period is reached, the core of the bot 2202 exits the bot out of its current holding state and moves the conversation 2220 to the exception handling node.
- a bot 2202 is constructed to make some calculations and while making these calculations there is an exception.
- the bot 2202 has received information that it, in the end, can't compute. Typically, this is the result of some king of design oversight in terms of how the bot is designed. Perhaps, as a result of this design flaw the bot is stuck in some form of logic loop or did not put in place enough control over the data input (e.g., where the user is provided three input options and the bot just accepts the option and then later tries to aggregate the information, but the inputted information is out of bounds or out of scope.
- Level 2 exceptions define what happens when these types of bot failures arise.
- the exception is processed by routing the conversation 2220 to the level two exception handling node 2220 or ending the conversation 2220 and routing the user to a level two exception-handling bot 2220 that will provide an appropriate message back to the end user.
- Another example of a level two exception is as simple as the input was a telephone number, dashes are not allowed, but the user wasn't told that. So the user put dashes in. The bot does not tell the user there shouldn't be dashes and then a little bit later on, the bot is trying to do something with the phone number, like run the comparison or some kind of check. Then, with the unexpected dashes, the script fails and gets stuck.
- Level 1 exception handling is for exceptions arising from the platform 200 itself.
- Level one exception handling is for exceptions arising from the platform 200 itself. For example, consider the case where a new message comes in. By default, what is supposed to happen is that the bot communications module 204 is supposed to wake up. That is, there is supposed to be an instantiation of a chat bot 2202 . But suppose there is no response. For instance, the communications module 204 is signaling there is a message coming in and nothing happens. That is, no bot 2202 acknowledges to the communications module 204 that it will handle the new message. So, in that case, a level 1 exception is thrown, outside of the bot platform itself. That is, the system 48 needs to be smart enough to understand there is a problem and to send the user a message that indicates the chatbot platform is not available, or something to that effect, and then automatically move the conversation to a live agent.
- the bots 2202 are served from a source (e.g., server, server farm, virtual machine) that is separate and apart from bot platform hosting the enterprise source side communications module 204 .
- a source e.g., server, server farm, virtual machine
- the module 204 is configured to know that for this particular communication in this particular sub-channel, that there are certain bots 2202 that such messages should be routed through. That is, such messages are to be routed to a bot 2202 first instead of going directly to a live agent. So the communications module 204 will try to initialize a conversation 2224 with an appropriate bot 2204 responsive to the message. This is done be sending instructions within the appropriate sub-channel 212 for the bot 2202 .
- the communications module 204 may, for example, send the user a message that lets them know that the automated service is offline but that they are going to be transferred to a queue for a live agent.
- a process external to the bot framework triggers a process that enables the platform to inform the user that the platform is currently not available.
- the exception handling node/bot could be setup to automatically make a connection with a live agent the primary alternative.
- alert notifications can be triggered to be sent out to external channels.
- Bot compiler and intrinsic bot capabilities In some embodiments, when a bot 2202 is implemented, the required last step to activate the bot is to compile it.
- the compiler has two primary purposes. First, to provide an efficient definition output file. In some embodiments, the compiler creates the finalized bot 2202 definition file in an efficient JSON format. This output file is similar to the instructions/information contained in a complete DNA sequence of a living organism, in that it contains all the instructions to instantiate a bot 2202 and run any number of bot sessions, each hosting a conversation 2220 .
- the second primary purpose of compilation is to provide intrinsic bot 2202 capabilities.
- the compiler contains a set of core bot blueprint instructions that define core, intrinsic bot behavior. It is a set of processes that are included in the structure of every bot.
- FIG. 27 illustrates an example bot definition file that is compiled into a bot 2202 .
- the bot compiler creates a final output file for a bot 2202 .
- the compiler makes sure that there are certain core elements to the bot 2202 and that the output file that meets specific requirements. In this way, any time a bot 2202 design is updated, the bot has to go through the compilation process because that compilation process produces the end output file that is needed by the actual bot platform that runs the bots.
- the output file is stored on the secure mobile communication platform server 200 or on a server computer that is securely addressable by the communication platform server 200 .
- the overall messaging framework calls out to the bot framework to alert the framework that a new message has arrived.
- the bot framework spins up a new bot instance by reading from the very bot file that contains all the information that is needed for the bot to behave properly.
- a very efficient way to spin up an instance of a bot is provided in response to a new incoming message that, when parsed, triggers the beginning of a new conversation.
- the compilation process performs the time-consuming tasks such as automatically expanding keyword tags and phrases for all the entry nodes, making sure that the node graph 2208 has got all the proper connections, and similar tasks. So it is acceptable that the compilation process to take a little bit of time.
- the compilation process results in an efficient output file that is perfectly suited, to spin up instances of bots 2206 very efficiently and quickly responsive to incoming new messages that signify the request for new conversations 2220 .
- the core bot definition comprises an automated node tag/phrase pluralization and lemmatization. Compilation automatically extends the tags and phrases used for the NLP matching algorithm for every node in the graph.
- the core bot definition includes a statistics node, which is a central node that captures all aspects of each conversation session and saves it to chat session metric logs.
- Exemplary session metric logs include, but are not limited, to, active chat duration in which the bot framework tracks both overall chat session (conversation 2220 ) duration and the active interaction time.
- the ‘overall chat duration’ tracks the time between the beginning and end of the chat session.
- the ‘active chat duration’ is derived from removing all ‘pause’ segments during which the user is unresponsive for more than a pre-configured active period of time, e.g. 30 seconds, or 1 minute.
- the “active chat duration” thereby accounts for typical chat conversations, which may naturally involve breaks in the conversation; e.g. if the user is temporarily otherwise engaged (e.g. incoming phone call, or peer to peer chat).
- the ‘active chat’ duration metric thereby provides a clear picture of the actual amount of time end users interact with a bot.
- the core bot definition includes an exception handling node, which is the node 2210 through which all bot 2202 internal exception communication, described above, flows.
- the core bot definition includes a conversation re-routing/jump node, which is a base node through which all ‘unexpected’ free form user input flows, as described in more detail below.
- the core bot definition includes a disambiguation node.
- This is the base node that receives and processes multiple node matches based on natural language processing evaluation of the end user's message.
- the user's message is evaluated for the most appropriate node matches across the entire graph.
- the chat bot protocol via the disambiguation node, responds back to the user, inviting the user to select from the available interpretations and their associated matches across bots.
- Example disambiguation chat exchange is:
- the core bot definition includes a configurable node match inclusion range, which is the range of scores considered for node match inclusion and can be configured per primary communication channel 210 or by sub-channel 212 ; e.g. a tighter range may deliver better performance for one channel 210 or sub-channel 212 , whereas in another, a broader range may serve better.
- a configurable node match inclusion range is the range of scores considered for node match inclusion and can be configured per primary communication channel 210 or by sub-channel 212 ; e.g. a tighter range may deliver better performance for one channel 210 or sub-channel 212 , whereas in another, a broader range may serve better.
- the core bot definition includes support for sensitive data nodes.
- any node 2210 in a node graph 2208 of a bot 2202 can be defined to contain and thereby operate as a sensitive data node.
- This configuration setting can be applied to a single node, a subset, or all nodes.
- sensitive data mode data associated with the node (e.g., obtained from the user by the node) is stored as masked data. That is, any data provided or selected by the user is stored in masked characters; e.g. a social security number is stored as: ***-**-****.
- chat history contains masked data—since sensitive data is stored masked by the bot platform, it thereby appears masked in the conversation's chat history.
- Any device used for a conversation will always display any sensitive data as masked in the chat stream. For example:
- one embodiment of the systems and methods of the present disclosure provide a first node in a node graph of a bot that is a sensitive data node and a second node in the node graph of the bot that is a non-sensitive data node. At some point in a conversation hosted by the bot is passed to the non-sensitive data node.
- the non-sensitive data node While the non-sensitive data node is hosting the conversation, it receives a first set of communications (one or more communications) from the first user as part of the conversation.
- the non-sensitive data node stores the first set of communications from the first user that have been processed by the non-sensitive data node in a chat history unique to this conversation.
- the conversation is passed to the sensitive data node.
- the sensitive data node While the sensitive data node is hosting the conversation, it receives a second set of communications (one or more communications) from the first user as part of the conversation.
- the non-sensitive data node processes the second set of communications from the first user but does not store them in the chat history. Moreover, it masks the second set of communications on a display of a device used by the end user to facilitate the conversation.
- Sensitive data is therefore stored in an active chat bot's session memory. The data only persists as long as the chat session and is secured via standard security protocols. As soon as a chat bot's instance is closed, for example the conversation 2202 is over, all sensitive and non-sensitive data are immediately flushed from session memory.
- Some embodiments of the systems and methods of the present disclosure provide a core user interaction support to respond to ‘unexpected’ free form user input. This arises, for example, in instances where bots respond to free form user input in one of two primary scenarios (i) when the bot presents the user with a set of predefined options, such as: buttons or a list picker and (ii) when a bot is designed to be conversational in tone and does not present the users with button options during chat flow (in a section or its entirety).
- a bot 2202 Without the ability to a) recognize free form user input and b) the ability to appropriately process and respond to the free form user input, a bot 2202 could become unresponsive, for instance always forcing the user to make a pre-defined selection, or automatically restarting a conversation. Hyperspace and its associated basic capabilities provide both a core process and a flexible way for a bot to respond to such an event.
- the basic tenet of the bot 2202 hyperspace is to ensure the conversation 2220 does not become ‘suspended/stuck’ when a user enters a free form message.
- hyperspace is activated and the conversation is moved out of the basic conversational plane and into a parallel level above the bot's entire graph, which is termed hyperspace.
- hyperspace is used in the specific use case scenario where the bot has been enabled to present the user with an option to provide free form input, as opposed to selecting button options or the like from a list picker. If the user provides input in such situations that is a non sequitur for the current place where the conversation is in the node graph, in that scenario hyperspace is invoked. So, when triggered by seemingly unresponsive user input given the location in the node graph that the conversation is in, hyperspace is invoked to perform a natural-language processing on the user input in which the question is asked as to what kind of matches can be obtained to the user input.
- hyperspace looks for a match at all available level labels (e.g., node tags 2211 in the current node graph 2208 , node scope tag expressions 2206 , and interface tag expressions 2204 ). In some embodiments, hyperspace looks for a match against all node tags 2211 of all nodes 2208 of all sub-channels 212 associated with a given primary communication channel 210 .
- the end result of the action of hyperspace is that either there are zero matches (e.g., the bot cannot adequately parse the user's message by finding a matching label within any of the sub-channels of the primary communication channel), there is one node match, or there are multiple node matches.
- Hyperspace works by capturing what the user typed in. Hyperspace assumes that the user needs to be lifted out of the current plane of the conversation, at least temporarily. In other words, that the position in the node graph of the conversation is presently not significant given the user's unstructured input. Hyperspace looks for matching tags (e.g., node tags 2211 , scope tags 2206 , or interface tags 2204 ). In this way, hyperspace collects all node matches for the given free form user message. It then orders multiple matches in order of proximity to the originating node (e.g. current conversational location in the current bot). For example, any node matches with direct connections to the current node, will be listed as the highest priority. More generally, node proximity prioritization is applied.
- tags e.g., node tags 2211 , scope tags 2206 , or interface tags 2204 .
- the nodes 2210 in the node graph 2208 of a bot 2202 reflect a structural organization between nodes 2210 and clusters of nodes. Nodes in ‘proximity’ to each other, expressed through the quantity and types of edge connections between them, are logically and thematically more connected. Node proximity priority combines with the natural language processing tag matching criteria discussed herein for final matching decisions. In essence, the combination of the highest tag match score and closest proximity represents the best match.
- each node 2210 in a plurality of nodes of a first bot 2202 is associated with a different plurality of tags 2211 .
- the plurality of nodes of the first bot 2202 constitute a node graph 2208 in which respective nodes in the plurality nodes are connected by edges.
- a hyperspace function is associated with this node graph 2208 .
- a message is received in a first conversation hosted by the first bot that includes (a) a key identifying a first sub-channel, (b) a first application programming interface token identifying an end-user, (c) a communication, where the communication is free form input from the end user, and (d) a first node in the plurality of nodes that incurred the communication from the end user.
- the hyperspace function executes a process that evaluates the communication against each tag in each different plurality of tags associated with each respective node in the plurality of nodes, thereby obtaining zero or more tags that match the communication.
- the first bot further ranks these messages based on proximity to the first node.
- the hyperspace function provides specific responses based upon the number of matches, an identity of the first node, and a proximity between a node that contains a matching node tag 2211 and the first node.
- the hypergraph function looks beyond just the sub-channel 212 of the originating first node to all the node tags 2211 of all the nodes 2210 of all the node graphs 2208 of all the bots 2202 of all the sub-channels 212 in a primary communication channel 210 .
- the first bot that originates the message described above is in a plurality of bots, and each respective bot in the plurality of bots includes a corresponding node graph.
- each corresponding node graph comprises a plurality of nodes and a plurality of edges, and each node in each plurality of nodes is associated with a different plurality of tags.
- the evaluating the communication evaluates the communication against each tag in each different plurality of tags associated with a node in each plurality of nodes, thereby obtaining zero or more tags 2211 that match the communication. For instance, referring to FIG. 22 , the evaluating may evaluate the communication against the tags 2211 of the nodes 2210 of two or more bots 2202 , three or more bots 2202 , or the tags 2204 / 2206 of two or more sub-channels 212 .
- the action taken by the hyperspace function can be configured depending on the desire of the particular enterprise data source 374 (customer). For instance, a particular enterprise data source 374 may want to have the hyperspace function query the user to confirm that, before moving the user to a matching node of a matching bot, whether they want to complete their current transaction. In such instance, the hyperspace function may be configured to say, “Before I move you to a new conversation area, we were talking about something else. Do you want to complete that conversation first or would you like me to move me to one of those matching conversation areas right now.
- the hyperspace function provides the user with whatever actions the particular enterprise data source 374 wants to present the user in that use case and the user can make that choice. For instance, in the above example the user could say “Okay. Yes. I actually do want to transition my conversation to one of those other topics of conversation.” Or they could say, “Well, okay. You know what? I realize that I'm now side-tracking what I had before. Let me finish that.” And so they could go back to the conversation that they were just having with the original bot that detected the non sequitur from the end user and complete that before going on to the next topic.
- the hyperspace function is considered to be part of the originating bot.
- the hyperspace function has a connection to each node within the bot node graph where unstructured input from the user may arise.
- the overall process for invoking the hyperspace function is actually a two-step process.
- the first step is being able to capture the scenario where the user is typing in a custom message when the bot is not expecting it and being able to handle that properly.
- the hyperspace function looks for matches to the custom message it could move the conversation to if the user wants to accept the move. Further, the hyperspace function evaluates the matches and applies logic that can be fully customized for a particular enterprise data source in terms of how the enterprise data source wants to handle such matches.
- the hyperspace function there will be some basic things that the hyperspace function typically will do.
- the enterprise data source may specify that the hyperspace function will only allow the user to go back to where they originated.
- the enterprise data source may specify that the hyperspace function will allow the user the choice of going to a live agent.
- the enterprise data source may specify that the hyperspace function will send the user to a specialized help menu bot.
- the hyperspace function captures end-user input that is provided that is not expected. In some embodiments, it then looks across the entire spectrum of tags available for the associated enterprise data source for potential matches. In some embodiments, it looks across the entire spectrum of tags available for the sub-channel 212 for potential matches. The hyperspace function then starts to have a new conversation with the end user around the information. The hyperspace function has knowledge about the user such as what information they have put in. The hyperspace function has the information about what options are available in terms of matches. In some embodiments, while the hyperspace function looks across the entire framework of nodes, matches within the current bot itself are assumed by the jump-node destination bot to be more closely related, and are up-weighted relative to node matches that are in other bots. In some embodiments, while the hyperspace function looks across the entire framework of nodes, matches within the current bot itself that are closets to the node in the bot in which the message was incurred are up-weighted.
- some embodiments of the systems and methods of the present disclosure provide a hyperspace function.
- the hyperspace function receives the user's free form message entry and automatically evaluates the message content against all nodes in the graph of the node and in the graph of other nodes of each different associated with a given sub-channel, or the nodes of each bot associated with any sub-channel associated with a given primary channel.
- node proximity prioritization is invoked.
- the nodes in a graph reflect a structural organization between nodes and clusters of nodes. Nodes in ‘proximity’ to each other, expressed through the quantity and types of edge connections between them, are logically and thematically more connected and thus up-weighted relative to more distant nodes.
- the hyperspace function will first collect all node matches for a given free form user message. It then orders multiple matches in order of proximity to the originating node (i.e. current conversational location in the current bot). For example, any node matches within the existing bot will thereby be listed as the highest priority.
- the internal node structure and therefore the resulting behavior of the hyperspace function is fully customized and is configurable per primary communication channel and/or by sub-channel.
- the hyperspace function can provide specific responses based on the (i) number of node matches, (ii) node title content, and/or (iii) node proximity.
- Conversational hyperspace function response the desired bot behavior may be to ignore free form messages.
- the hyperspace function could be set up to respond with a specific notification and provide a few specific options for the user to select from, e.g.:
- hyperspace function “Sorry, I can't accept a ‘free form’ message here.”
- Additional ‘custom’ options could be added to the response, e.g. a button to the “Help menu”.
- Conversational hyperspace function scenarios the hyperspace function is set-up to evaluate the node matching data it receives.
- a basic hyperspace function configuration reacts to the number of node matches, covering the following sample scenarios.
- Scenario A zero destination node matches found. If the hyperspace function does not find any node matches for the content the user entered, is configured to provide an appropriate response e.g.:
- hyperspace function “Sorry, I don't have any information about that. The following options are available:”
- the (Return to chat) option would take the user back to the origination node (e.g. the node at which the user entered the ‘unexpected’ free form message instead of selecting an option presented by that node).
- the node re-activates and presents its options to the user again.
- the message and the of the presented options in the jump node are fully customizable.
- Scenario B one node destination match.
- the hyperspace function finds a single node match to the user's free form message entry, the hyperspace function responds with an appropriate message e.g.:
- Scenario C multiple node destination matches.
- the hyperspace function finds multiple node matches to the user's free form message entry, the hyperspace function responds with an appropriate message and associated options, e.g.:
- FIG. 26 provides an exemplary hyperspace function process diagram.
- the hyperspace function example provides simplified logic differentiating between zero and one/multiple node matches (from jump core node).
- Enterprise data source can customize appearance of content in sub-channels through an application programming interface.
- an enterprise data source 104 can customize the content that appears in sub-channels 212 .
- each such sub-channel is hosting a number of conversations 2220 , each such conversation with a different remote user device 104 associated with a respective end user. As such, messages are sent to the end user in such conversations and messages are received from the end user. As discussed in greater detail with respect to FIGS.
- the content of messages received from an end user may trigger certain events such as the activation of a stock message 2214 , stock widget 2216 (e.g., also interchangeably referred to herein as a “control” or an “applet”), stock object 2218 (e.g., image, sound file, PDF, etc.) in the conversation.
- stock widget 2216 e.g., also interchangeably referred to herein as a “control” or an “applet”
- stock object 2218 e.g., image, sound file, PDF, etc.
- a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 380 processes at least part of the communication bound for the remote user device 104 associated with the first user (e.g., in a conversation) by receiving an original message from the corresponding enterprise data source 104 .
- the message is converted into a set of commands that are interpretable with a command parser (e.g., a stock widget 2216 within the conversation that is running on the remote user device 104 ).
- the set of commands includes instructions for how to display portions of the message on the remote user device 104 that are not present in the original message.
- the set of commands is submitted to the remote user device 104 associated with the first user for interpretation by a command parser (e.g., the widget) running on the remote user device 104 .
- the command parser may then display on the remote user device 104 within the conversation the one or more affordances in accordance with the original message from the enterprise data source 102 .
- the instructions for how to display portions of the message on the remote user device 104 include instructions to display one or more affordances (e.g., one or more check boxes, one or more radio buttons, one or more slide bars, one or more input fields, one or more radio buttons, one or more drop-down menus, or one or more shopping carts) on the remote user device 104 .
- one or more affordances e.g., one or more check boxes, one or more radio buttons, one or more slide bars, one or more input fields, one or more radio buttons, one or more drop-down menus, or one or more shopping carts
- the set of commands is for an embedded object and the original message specifies a plurality of parameters for the embedded object.
- the embedded object is a preformatted menu of options and the plurality of parameters are the menu options.
- the plurality of parameters comprises a unique identifier for the embedded object, a label to be displayed with the embedded object, a unique name for the embedded object, and a variable that specifies a type (e.g., text box, text area, a radio button, a drop down menu, a check box list, an image, a video, HTML, an option, and a check box) of the embedded object.
- a type e.g., text box, text area, a radio button, a drop down menu, a check box list, an image, a video, HTML, an option, and a check box
- the set of commands is for a plurality of such embedded objects.
- the plurality of parameters further comprises one or more URL to post data from the embedded object after interaction of the embedded object with the first user within the first sub-channel 212 .
- the secure mobile communication platform 200 provides an automated electronic file cabinet 226 to each of the users 320 for storing attachments to messages in the respective sub-channels 212 based on predetermined criteria.
- the electronic file cabinet 226 is stored on server 200 as illustrated in FIG. 2 .
- the electronic file cabinet 226 is cloud based system and is accessible from any remote user device 104 , for example, a personal computer, a tablet computing device, a mobile phone, a smart phone, a laptop, a personal digital assistant, etc.
- an enterprise data source 102 organizes its attachments with the following considerations. There is one primary channel 210 per enterprise data source 102 , multiple sub-channels 212 per primary channel 210 , and multiple chatrooms per sub-channel 212 .
- the enterprise data source 102 sets up a root folder for high level content at the primary channel 210 level. In some embodiments this high level content is accessible to all primary channel administrators 380 for distribution to users. In some embodiments, this high level content is accessible to some sub-channel administrators 392 . Below the root folder, the enterprise data source 102 sets up a folder for each sub-channel 212 .
- the content in the folder the enterprise data source 102 maintains for a sub-channel 212 can be viewed by all sub-channel administrators 392 . In some embodiments, the content in the folder the enterprise data source 102 maintains for a sub-channel can be edited by some sub-channel administrators 392 . For each sub-channel folder, the enterprise data source 102 maintains a folder for each chatroom in the sub-channel 212 . In some embodiments, the files in the chatrooms can be viewed by all sub-channel administrators 392 that have access to the chatrooms. The files in the chatrooms are the files sent by the end users, they are not created by the enterprise data source 102 .
- the enterprise data source 102 manages content to be sent to end user at the primary channel 210 and sub-channel 212 levels.
- the enterprise data source super-administrator 378 and/or primary channel administrator 380 connects communications module 204 -E with an administrative account on Box/Dropbox/etc.
- Communications module 204 -E then creates a folder owned by the enterprise data source super-administrator 378 and/or primary channel administrator 380 .
- Communication module 204 -E then creates subfolders for each sub-channel 212 . Within each sub-channel, communications module 204 -E creates subfolders for each chatroom.
- the enterprise data source super-administrator 378 and/or primary channel administrator 380 has full access to the content of these folders.
- the sub-channel administrators 392 have to the content in the sub-channel 212 folders.
- the end user does not have direct access to this file system set up for the enterprise data source. Rather, the end user makes use of the electronic file cabinet 226 described below, with reference to FIG. 16 .
- electronic file cabinet 226 of a user contains links to the appropriate files stored by enterprise data sources 102 .
- links to the documents for that sub-channel to the file system of the enterprise data source 102 described above For instance, when a file is sent in a sub-channel 212 from an enterprise data source 102 , a link to the file is stored in the electronic file cabinet 226 of the user and this link is to an actual copy of the file stored in the file system of the enterprise data source 102 described above.
- electronic file cabinet 226 of a user such as that illustrated in FIG.
- 16 contains copies of the appropriate files sent by enterprise data sources 102 . For instance, when a file is sent in a sub-channel 212 from an enterprise data source 102 , a copy of this file is stored in the electronic file cabinet 226 of the user, indexed to the appropriate sub-channel.
- the electronic file cabinet is indexed by user 320 , with each such user 320 having a file cabinet.
- the user file cabinet 1602 is indexed, in turn, by primary channels 210 of the user ( 1604 ), and for each such respective primary channel, a repository for each of the sub-channels 212 ( 1606 ) of the respective primary channel.
- respective sub-channels 212 are further indexed by chatrooms within the sub-channels, and the user is only granted access to the files in those chatrooms that the user participates in.
- files sent from a single enterprise data source 102 to a user are viewed by the remote user at remote user device 104 collectively, together.
- the enterprise data source 102 has established a primary channel 210 , containing two sub-channels 212 , with a remote user at remote user device 104 .
- Files have been sent to the user in both sub-channels and these files have been stored in the electronic file cabinet 226 in the respective sub-channel folders.
- the electronic file cabinet 226 provides a listing of all the files in both sub-channel folders collectively.
- Such embodiments operate with the assumption that a user does not need to see files at the sub-channel level. However, in some embodiments, the user is able to segment their query and view just the files in a sub-channel 212 of a given enterprise data source. Users may send files to an enterprise data source 102 within chatrooms. In some embodiments, such files only appear in the enterprise data source's folder structure and not in the users file system.
- FIG. 16 illustrates just one way in which files may be indexed in an electronic file cabinet 226 .
- primary channels, sub-channels, and chatrooms act as independent keys by which files associated with a user are stored and retrieved by the user.
- the electronic file cabinet 226 stores the messages to or from the user in a sub-channel in the corresponding sub-channel repository 1606 .
- the electronic file cabinet 226 only stores the attachments to messages to or from the user in a sub-channel in the corresponding sub-channel repository 1606 .
- the electronic file cabinet 226 only stores the attachments to messages to the user in a sub-channel in the corresponding sub-channel repository 1606 . In such embodiments, the electronic file cabinet 226 does not store messages to the user and does not store message from the user or attachments from the user.
- the electronic file cabinet 226 is useful for a number of use cases.
- a sub-channel administrator 392 may want to share files with consumers, using files relevant to a specific sub-channel (e.g., images for coupons, PDFs for instructions). Thus, the sub-channel administrator 392 may stream these files to the user and the electronic file cabinet 226 conveniently stores these files.
- a sub-channel administrator may want to accept files from consumers, such as signed documents, or screenshots.
- an end user may want to share files with an enterprise data source, by streaming the sub-channel administrator 392 in a chat room in a sub-channel 212 for the sub-channel administrator 392 to review. In still another user case, the end user may want to see content shared with the user by an enterprise data source.
- users 302 can use and search the electronic file cabinet 226 of the secure mobile communication platform 200 to search for messages and/or attachments.
- a user can search the secure cloud based filing system based on respective enterprise data source 102 (e.g., all messages or message attachments sent from the enterprise data source 102 to the user or from the user to the enterprise data source 102 ), a relevant month (e.g., all messages or message attachments associated with the user in the relevant month), etc.
- respective enterprise data source 102 e.g., all messages or message attachments sent from the enterprise data source 102 to the user or from the user to the enterprise data source 102
- a relevant month e.g., all messages or message attachments associated with the user in the relevant month
- only message attachments, and not messages are stored in the electronic file cabinet 226 .
- the automated filing system is a combination of file storage and related metadata storage in a database, for example, a file system implementation using the MySQL® database of MySQL AB Company with the ELASTIC SEARCH® search engine of Elasticsearch BV.
- the established primary channels 210 , the generated sub-channels 212 , the stored messages (in those optional embodiments where messages are stored in the electronic file cabinet 226 ), the stored content (e.g., file attachments), etc. are searchable through the secure mobile communication platform for providing information on demand in real time.
- a first sub-channel 212 in a plurality of sub-channels associated with a respective primary communication channel 210 processes at least part of the communication from the corresponding enterprise data source 102 associated with the sub-channel that is bound for the remote user device 104 associated with a first user 320 by first receiving an original message from the corresponding enterprise data source 102 .
- the original message is associated with an attachment 1608 (e.g., a document or a video).
- An electronic copy of the attachment is made and the electronic copy of the attachment in is stored in the electronic file cabinet 1602 associated with the user 320 .
- the stored electronic copy 1608 is indexed to the first sub-channel 1606 .
- the original message and the associated attachment is then communicated within the first sub-channel to the remote user device associated with the first user.
- the electronic file cabinet 226 is stored in a remote device (e.g., remote server, virtual machine) independent of the corresponding enterprise data source 200 .
- the remote device is addressable by the server system 200 across a network 106 .
- the disclosed systems and methods offer the feature of automatically storing attachments to messages communicated in a sub-channel 212 in an electronic file cabinet 226 .
- the attachments are indexed by sub-channel, primary channel, and by user.
- the messages and the attachments are stored in the electronic file cabinet 226 .
- only the attachments are stored in the electronic file cabinet 226 .
- An example of an attachment that is stored in the electronic file cabinet 226 are billing statements.
- the disclosed systems and methods provide considerable control to system designers on how to set up privileges to the documents stored in the electronic file cabinet 226 . For instance, in some embodiments, user privileges to documents are set up on a user basis 1616 , a primary channel administrator basis 1618 , a sub-channel administrator basis 1620 , and/or a third party basis 1620 .
- User privileges 1616 are the privileges the user associated with a given sub-channel 212 has with respect to a given document 1608 . In some embodiments, these privileges are read privileges, write privileges, edit privileges, deletion privileges, and/or copy privileges to the document 1608 .
- Primary channel administrator privileges 1618 are the privileges the primary channel administrator 380 of the primary channel 210 of the sub-channel 212 that communicated the document has with respect to a given document 1608 . In some embodiments, these privileges are read privileges, write privileges, edit privileges, deletion privileges, and/or copy privileges to the document 1608 .
- Sub-channel administrator privileges 1618 are the privileges the sub-channel administrator of the sub-channel 212 that communicated the document has with respect to a given document 1608 .
- these privileges are read privileges, write privileges, edit privileges, deletion privileges, and/or copy privileges to the document 1608 .
- Third party privileges 1620 are the privileges that a third party (other than the enterprise data source 102 and the user) has with respect to a given document 1608 .
- these privileges are read privileges, write privileges, edit privileges, deletion privileges, and/or copy privileges to the document 1608 .
- an entity associated with the enterprise data source 102 has a first access privilege to the electronic copy of the attachment 1614 in the electronic file cabinet 1602 associated with the first user.
- the first user has a second access privilege 1616 to the electronic copy of the attachment 1614 in the electronic file cabinet associated with the user.
- the first access privilege is different than (e.g., independent of) the second access privilege.
- the first access privilege may comprise an edit privilege, a read privilege, and a deletion privilege to the electronic copy of the attachment 1608 in the electronic file cabinet associated with the user 1602 .
- the second access privilege consists of a read privilege to the electronic copy of the attachment 1608 in the electronic file cabinet associated with the first user 1602 .
- the first access privilege and the second access privilege are each independently one or more of edit privileges, read privileges, and deletion privileges to the electronic copy of the attachment 1608 in the electronic file cabinet associated with the first user 1602 .
- a link to an attachment is generated when the attachment is stored in the electronic file cabinet 226 . Then, rather than sending the full electronic version of the attachment to a user from the enterprise data source 102 , a link to the attachment, now stored in the file cabinet of the user 1602 is sent.
- Block 560 of FIG. 5G illustrates such an embodiment: a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 processes at least part of the communication from the corresponding enterprise data source 102 that is bound for a remote user device 104 associated with a first user by receiving an original message from the corresponding enterprise data source 102 . The original message is associated with an attachment.
- the processing of the message causes the attachment to be stored in an electronic file cabinet associated with the first user 1602 .
- the stored attachment 1608 is indexed to the first sub-channel and the storing produces a link to the stored attachment in the electronic file cabinet associated with the first user 1602 .
- the original message is then communicated within the first sub-channel 212 with the link to the stored attachment to the remote user device 104 associated with the first user. If the user wishes to see the attachment, the link to the attachment in the file cabinet of the user 1602 is used to retrieve the attachment from the file cabinet of the user 1602 . Referring to block 562 of FIG.
- the electronic file cabinet 226 is stored in a remote file storage device (e.g., remote server, virtual machine) independent of the corresponding enterprise data source 102 .
- the remote file storage device is addressable by the server system 200 across network 106 .
- an entity associated with the enterprise data source 102 e.g., primary channel administrator privileges 1618 , sub-channel administrator privileges 1620
- the first user has a second access privilege 1616 to the attachment in the electronic file cabinet associated with the user 1602 .
- the first access privilege is different than (e.g., independent of) the second access privilege.
- the first access privilege may comprise an edit privilege, a read privilege, and a deletion privilege to the attachment 1608 in the electronic file cabinet associated with the user 1602 .
- the second access privilege may consist of a read privilege to the attachment 1608 in the electronic file cabinet associated with the user 1602 .
- the first access privilege and the second access privilege are each independently one or more of edit privileges, read privileges, and deletion privileges to the attachment 1608 in the electronic file cabinet associated with the first user 1602 .
- the original message from an enterprise data source 102 does not include an electronic copy of an attachment but rather has a link to the attachment, where the link is an address of the attachment in a database associated with the enterprise data source.
- the platform 200 retrieves the attachment using the link, stores a copy of the attachment in the file cabinet of the user 1602 , produces a second link to the stored attachment in the electronic file cabinet associated with the first and sends the message to the user with the second link. Block 570 of FIG.
- a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 processes at least part of the communication from the corresponding enterprise data source 102 that is bound for the remote user device 104 associated with a first user by receiving an original message from the corresponding enterprise data source 102 .
- the original message is associated with a first link to an attachment.
- the attachment is stored in a database associated with the corresponding enterprise data source 102 and the first link provides access to the stored attachment.
- An electronic copy of the attachment is made using the first link.
- the electronic copy of the attachment is stored in an electronic file cabinet associated with the first user 1602 .
- the stored electronic copy of the attachment 1608 is indexed to the first sub-channel and the storing produces a second link to the stored attachment in the electronic file cabinet associated with the first user 1602 .
- the original message and the second link are communicated within the first sub-channel 212 to the remote user device 104 associated with the first user. If the user wishes to see the attachment, the second link to the attachment in the file cabinet of the user is used to retrieve the attachment from the file cabinet of the user 1602 .
- the electronic file cabinet 226 is stored in a remote file storage device (e.g., remote server, virtual machine) independent of the corresponding enterprise data source 102 .
- the remote file storage device is addressable by the server system across a network.
- an entity associated with the enterprise data source 102 102 e.g., primary channel administrator privileges 1618 , sub-channel administrator privileges 1620
- the first user has a second access privilege 1616 to the electronic copy of the attachment in the electronic file cabinet associated with the user 1620 .
- the first access privilege is different than (e.g., independent of) the second access privilege.
- the first access privilege may comprise an edit privilege, a read privilege, and a deletion privilege to the electronic copy of the attachment 1608 in the electronic file cabinet associated with the user 1602 .
- the second access privilege may consist of a read privilege to the electronic copy of the attachment 1608 in the electronic file cabinet associated with the user 1602 .
- the first access privilege and the second access privilege are each independently one or more of edit privileges, read privileges, and deletion privileges to the attachment copy in the electronic file cabinet associated with the user 1602 .
- the disclosed systems and methods provide a number of application programming interface components that may be incorporated into conversations in sub-channels 212 .
- These application programming interface components are designed to assist the enterprise data source 102 in rapidly setting up functions, such as bill payment, menus boxes, the display of information, and other tasks that may facilitate transactions with users.
- the communications module 204 such as the instance of the communications module 204 -C running on the secure mobile communication platform 200 , provides several different application programming interface functions 2102 . Each such function has a number of data elements 2104 that serve as input to the function 2102 .
- each such function 2102 is associated with an applet 2106 that is invoked when the corresponding function 2102 is called.
- Non-limiting examples of such applets are bill payment applets, menus box applets, and applets designed to display retrieved information.
- an applet 2106 of FIG. 21 is a form of control 1206 of FIG. 12 .
- Block 542 of FIG. 5E illustrates the use of an application programming interface function 2102 in accordance with an embodiment of the present disclosure.
- a sub-channel 212 in a plurality of sub-channels associated with a primary communication channel processes at least part of the communication from the corresponding enterprise data source 102 that is bound for a remote user device 104 associated with a first user, for instance in a one to one conversation between the enterprise data source 102 and the remote user device 104 , by receiving an original message from the corresponding enterprise data source.
- the original message includes a set of data elements 2104 and an application programming interface function call 2102 associated with the set of data elements. For example, consider the case where the application programming interface function call 2102 is a menu box.
- the set of data elements 2104 would be the menu options for the menu box.
- the communications module 204 automatically and without human intervention, invokes the application programming interface function 2102 .
- This invoking passes the set of data elements in the message to the application programming interface function 2102 and generates the corresponding applet 2106 that is communicated within the first sub-channel 212 to the remote user device 104 associated with the first user.
- an applet 2106 is presented within the conversation in the sub-channel 212 to the first user with a set of menu options, where each of the menu options is one of the data elements in the original message from the enterprise data source 102 .
- the enterprise data source is able to take advantage of a mature applet by simply providing the data necessary to customize the applet.
- the applet 2106 is an automated agent that is responsive to user input at the remote user device 104 associated with the first user.
- the applet is an automated human interface module.
- an applet 2106 is able to receive a query from within a first sub-channel (e.g., within a conversation in the first sub-channel). For instance, the applet 2106 may provide an inventory search panel within the conversation that accepts user queries. Responsive to such a query, a search of a database associated with the corresponding enterprise data source 102 is made outside of the first sub-channel. This database is electronically addressable by the enterprise data source 102 . Then, matches to the query in the database are communicated to the applet 2106 within the first sub-channel 212
- the applet 2106 is a bill payment applet and the method further comprises receiving a payment communication from the applet 2106 within a first sub-channel 212 (e.g., from within a conversation in the first sub-channel) from the first user (e.g., the remote user device 104 associated with the first user) for goods or a service provided by the enterprise data source 104 .
- the payment is verified against a credit source associated with the first user (e.g., PAYPAL, etc.).
- a database e.g., an accounting database associated with the enterprise data source 102 is updated to reflect the payment.
- the method further comprises communicating to the applet 2106 within the first sub-channel that the payment has not been made.
- the applet 2106 facilitates a marketing campaign sponsored by the corresponding enterprise data source.
- individualized messages offering a product, service, or incentive are sent to users in one-to-one conversations between the enterprise data source 102 and users associated with remote user devices 102 .
- applets 2106 can display these messages on remote user devices 102 and track in real time the disposition of the messages, e.g., whether they were read, etc. and communicate such information back to the enterprise data source 102 .
- the enterprise data source 102 may use such information from a single remote user device 104 , or aggregated information from several remote user devices 104 to target new messages to one or more users as well as dynamically determine which variables (e.g., demographic variables, temporal variable, etc.) affect the success of the campaign.
- variables e.g., demographic variables, temporal variable, etc.
- the disclosed system advantageously addresses these questions in real time. In fact, the information acquired from conversations in real time can be used to dynamically segment the user population and optimize what is sent to each portion of the user population.
- the applet 2106 interprets markup language commands received within the first sub-channel at the remote user device associated with the first user.
- an applet 2106 is a sophisticated HTML parser that allows for the implementation of sophisticated HTML graphics and other HTML functions within conversations.
- Marketing application programming interface in which enterprises data sources 104 form conversations with individual end users allows for a unique opportunity to effectuate marketing campaigns.
- individualized messages offering a product, service, or incentive are sent to end users in one-to-one conversations between the enterprise data source 102 and users associated with remote user devices 102 .
- these messages are displayed on remote user devices 102 and the real time disposition of such messages, e.g., whether they were read, etc. is track and such information is communicated back to the enterprise data source 102 .
- the enterprise data source 102 may use such information from a single remote user device 104 , or aggregated information from several remote user devices 104 to target new messages to one or more users as well as dynamically determine which variables (e.g., demographic variables, temporal variable, etc.) affect the success of the campaign.
- a first sub-channel 212 in the plurality of sub-channels associated with a respective primary communication channel 210 processes at least part of the communication from the corresponding enterprise data source 102 that is bound for the remote user device 104 associated with the first user (in a conversation) by receiving an original message from the corresponding enterprise data source in accordance with a message campaign sponsored by the enterprise data source 102 responsive to receiving the original message.
- an application programming interface function is invoked for the message campaign. This passes information in the original message to the application programming interface function and generates an applet (e.g., widget 2216 , control, etc.) that is communicated within the conversation in the first sub-channel 212 to the remote user device 104 associated with the first user. Then monitoring is set up to monitor, through communications received from the remotely installed applet within conversation in the first sub-channel, responses to the messaging campaign.
- an applet e.g., widget 2216 , control, etc.
- the invoked application programming interface function makes use of a value of a demographic characteristic (e.g., age, a location, a level of participation a customer rewards program, a length of time enrolled in a customer rewards program, a number of purchases the user has made with the enterprise data source, a total of amount of purchases the first user has made with the enterprise data source during a predetermined time frame, the last time the first user has made with the enterprise data source, a type of item the first user has purchased from the enterprise data source, or a sex of the first user) in the user profile corresponding to the first user to determine which information in the message to pass to the application programming interface function.
- a demographic characteristic e.g., age, a location, a level of participation a customer rewards program, a length of time enrolled in a customer rewards program, a number of purchases the user has made with the enterprise data source, a total of amount of purchases the first user has made with the enterprise data source during a predetermined time frame, the last time the first user has made with
- the unique architecture disclosed herein in which conversations that are traceable to a specific end user of the system provides for a unique opportunity to ensure the security of such conversations and thus the non-repudiation of such conversations. For instance, due to the traceability of conversations and their security (e.g., with all messages in the conversation encrypted in some embodiments), when an end user makes a purchase (or other form of transaction) within a conversation in a sub-channel 212 , neither the end user nor the enterprise data source 102 can repudiate the purchase (claim the transaction did not take place). Accordingly, referring to block 596 of FIG.
- a conversation in a first sub-channel 212 in the corresponding plurality of sub-channels is associated with a respective primary communication channel is associated with the unique identifier corresponding to first user.
- the unique identifier is used as a basis for non-repudiation of the conversation.
- the conversation in the first sub-channel 212 is used to conduct a purchase (or other form of transaction) by the first user from the corresponding enterprise data source 102 associated with the conversation.
- widgets 2216 e.g., controls, applets
- conversations are hosted on one or more virtual machines.
- widgets 2216 are hosted elsewhere, such as downloaded onto end user devices 104 .
- a conversation in a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 processes at least part of the communication from the corresponding enterprise data source 102 that is bound for a remote user device 104 that is associated with a first user by receiving an original message from the corresponding enterprise data source 102 .
- the original message includes a set of data elements and an application programming interface function call associated with the set of data elements. Responsive to receiving the original message, automatically and without human intervention, the application programming interface function is invoked. This invoking passes the set of data elements to the application programming interface function.
- this in turn, generates an application (e.g., widget 22216 , control applet) that is hosted within a virtual machine.
- an application e.g., widget 22216 , control applet
- the application is already running or is enabled on the virtual machine and the application programming interface function is passed to the application.
- the virtual machine is run on a server that is independent from the secure mobile communications platform 200 , but is addressable by the platform.
- the application is already running or is enabled on the enterprise data source 102 and the application programming interface function is passed to the application.
- the application communicates within (or operates on) the first sub-channel with the remote user device 104 associated with the first user.
- the application is an automated agent that is responsive to user input at the remote user device 104 associated with the first user.
- a query is received at the application within the conversation in the first sub-channel from the remote user device 104 associated with the first user.
- responsive to this there is obtained, from a database associated with the corresponding enterprise data source 104 , content that is responsive to the query outside of the conversation in the first sub-channel 212 .
- This content is communicated to the application within the conversation in the first sub-channel.
- the application is a bill payment application and the method further comprises receiving a payment communication from the application within the conversation in the first sub-channel from the first user, where the payment communication includes a payment for goods or a service provided by the enterprise data source 104 .
- This payment is verified against a credit source associated with the first user.
- the method further comprises updating a database associated with the enterprise data source 104 to reflect that the payment has been made and communicating to the application within the conversation in the first sub-channel that the payment has been made.
- the method further comprises communicating to the application within the first sub-channel that the payment has not been made.
- the application facilitates a marketing campaign sponsored by the corresponding enterprise data source.
- the application interprets markup language commands from the corresponding enterprise data source 102 received within the first sub-channel associated with the first user.
- the application is hosted on a virtual machine, and in some instances this virtual machine is hosted at a remote computer associated with the corresponding enterprise data source.
- the virtual machine is hosted at the enterprise data source 102 server system.
- the application is initialized in a conversation in a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 .
- This installs the application within a first virtual machine.
- a first communication is sent from the corresponding enterprise data source to the application within the first sub-channel.
- output from the application is communicated to the remote user device 104 associated with the first user within the first sub-channel.
- the first sub-channel is then monitored for feedback from the first user. When feedback is detected, the feedback is routed to the application.
- the application is an automated agent that is responsive to the feedback from the remote user device associated with the first user.
- a query is received at the application within the first sub-channel from the remote user device associated with the first user. Responsive to this, there is obtained from a database (or any other form of computer readable media that is capable of storing information) associated with the corresponding enterprise data source 102 content that is responsive to the query.
- the query is outside of the first sub-channel. The retrieve content is then communicated to the application within the first sub-channel. Further the content from the application is communicated within the first sub-channel to the remote device associated with the first user.
- the application is a bill payment application and a payment communication is received from the application within the first sub-channel from the first user.
- the communication includes payment for goods or a service provided by the enterprise data source.
- the payment is verified against a credit source associated with the first user.
- a database associated with the enterprise data source is updated to reflect the payment and confirmation is communicated to the application within the first sub-channel.
- this failure is communicated to the application within the first sub-channel.
- the application facilitates a marketing campaign sponsored by the corresponding enterprise data source.
- the application interprets markup language commands from the corresponding enterprise data source received within the first sub-channel associated with the first user.
- the application is running on a virtual machine.
- the virtual machine is hosted at a remote computer associated with the corresponding enterprise data source.
- the virtual machine is hosted at the server system.
- the disclosed systems and methods challenges enterprise data sources 102 in unique way prior to onboarding them into the secure mobile communications platform 200 .
- this challenge is by way of human approval.
- a human representative of the potential new enterprise data source 102 is interviewed by a human representative of the secure mobile communications platform 200 .
- a characteristic of this interview is the disclosure by the potential new enterprise data source 102 of private information that the human representative of the secure mobile communications platform 200 can verify. This is an improvement over conventional social media platforms that do not provide adequate controls to prevent spoofing of well-known enterprises data sources (e.g., well known department stores).
- Such activity is prevented by the disclosed secure mobile communications platform 200 because of the verification process that enterprise data sources must undergo in order to be enrolled by the platform 200 .
- this onboarding of enterprise data sources 102 is performed on an automated basis using a specialized automated human interface module 2202 described below in conjunction with FIG. 22 , where the module 2202 has a specialized node graph 2208 that steers a potential enterprise data source 102 through a series of nodes 2208 depending on information provided by the potential enterprise data source 102 .
- the conversation is between the potential enterprise data source 102 and the secure mobile communications platform 200 .
- artificial intelligence or machine based learning is imposed in one or more nodes of the node graph to assist in on-boarding the potential enterprise data source.
- nodes in the graph will challenge the potential enterprise data source for information and verify this information (e.g., check if the potential enterprise data source's IP address is in a specified geographic domain, check a web address associated with the potential enterprise data source, ask for a scanned or electronic copy of a business card, etc.).
- a node of the automated human interface module 2202 will ask for certain documents and will provide a widget 2216 in the conversation to assist the potential enterprise data source 102 in uploading these documents.
- the secure mobile communications platform 200 provides different ways to verify potential enterprise data sources 102
- Block 632 of FIG. 5M illustrates an example embodiment for such verification.
- An enrollment process for a potential enterprise data source is initiated when the enterprise data source makes an enrollment request. Responsive to the enrollment request, the potential enterprise data source is electronically challenged. A response to the electronic challenge is received from the potential enterprise data source. In this way the potential enterprise data source is required to establish a basis to a claim of identity as part of enrollment in the secure mobile communications platform 200 .
- the response to the electronic challenge is parsed using a trained classifier, where the trained classifier (e.g., a support vector machine, neural network, etc.) to determine whether the response establishes the identity for the enterprise data source.
- the trained classifier e.g., a support vector machine, neural network, etc.
- the disclosed user interface of the communications module—client side 204 -C provides with a single affordance (e.g., affordance 702 - 3 for TARGET), the ability to connect with an enterprise data source 102 and obtain all the functionality that enterprise data source 102 could possibly want to provide in single selection of an affordance (e.g., a single tap of the affordance). For instance, by tapping on affordance 702 - 3 of FIG. 17 , the user interface of module 204 -C on the remote user device 104 is updated to the display illustrated in FIG. 19 . In FIG.
- any of these sub-channels 212 can host a secure bi-directional conversation between the exemplary enterprise data source 102 (TARGET) and the end user associated with the remote user device 104 . Further, there is no requirement that each of the sub-channels 212 host a bidirectional conversation. In some embodiments, some of the sub-channels 212 may be used to push data, such as advertisements, media, or other forms of information. Moreover, as disclosed herein, in instances where sub-channels 210 host conversations, the enterprise data source 102 can build into the conversations widgets 2216 (e.g., applets) that provide any desired functionality to support transactions and end user experience.
- the conversations widgets 2216 e.g., applets
- an enterprise data source 102 must publish one or more applications to provide a comparable service to the end user.
- AMAZON publishes one application “Amazon Music with Prime Music” for listening to music on remote devices, a second application “Amazon Video” for watching videos on remote devices, a third application “Amazon Prime Now” for shopping on the Amazon network, a fourth application “Amazon Photos” for cloud and drive storage and backup, and a fifth application “Kindle” for reading digital books.
- AMAZON updates these applications the end user is forced to download and reinstall each of these updated applications on their remote user device 104 .
- Using the disclosed secure mobile communications platform 200 it is possible to encapsulate all of this functionality in a single affordance (e.g., 702 - 3 in the case of TARGET) that expands out into a plurality of sub-channels 212 .
- a first sub-channel 212 would replace AMAZON's first application “Amazon Music with Prime Music”
- a second sub-channel 212 would replace AMAZON's second application “Amazon Video” for watching videos on remote devices
- a third sub-channel 212 would replace AMAZON's third application “Amazon Prime Now” for shopping on the Amazon network
- a fourth sub-channel 212 would replace AMAZON's fourth application “Amazon Photos” for cloud and drive storage and backup
- a fifth sub-channel would replace AMAZON's fifth application “Kindle” for reading digital books.
- the disclosed systems and methods provide a novel environment in which a user connects to a primary channel 210 associated with an enterprise data source 102 and then switches on and off sub-channels 212 rather than downloading, over and over again, applications from application stores.
- the simple act of hitting the affordance 702 - 3 (for TARGET) or the plus affordance 702 - 4 for enterprise data source 102 is equivalent to the conventional act of going to an on-line application store, find the application, download the application, providing the application with your user name and password each time.
- the user profile stores the credentials of the user so that when the user selects a new enterprise data source 102 , the credentials are passed on to the new enterprise data source 102 , making the addition of a new primary channel 210 to the user interface of module 204 -C a one step process.
- Block 636 of FIG. 5N illustrates this process in accordance with one embodiment of the present disclosure.
- a request to view available enterprise data sources 102 in the plurality of enterprise data sources e.g., by selection of affordance 702 - 4 in FIG. 17 .
- Responsive to receiving the request a subset of available enterprises data sources 102 in the plurality of enterprise data sources is selected.
- Information regarding the subset of the plurality of enterprise data sources is sent to the remote user device associated with the first user, for instance as illustrated in FIGS. 13, 14, and 15 .
- a selection of a first enterprise data source 102 in the plurality of enterprise data sources is received from the remote user device 104 associated with the first user.
- the first enterprise data source is added to the user profile 602 corresponding to the first user.
- the first user is joined to a primary communication channel associated with the enterprise data source 102 .
- This primary communication channel facilitates electronic communication between the first corresponding enterprise data source and the first user.
- the user is further joined to a first plurality of sub-channels associated with the primary communication channel automatically without human intervention.
- This first plurality of sub-channels form a corresponding first hierarchical tree in which the first primary communication channel is a root node and the first plurality of sub-channels are child nodes.
- At least one sub-channel in the first hierarchy of sub-channels enables a conversation comprising bidirectional communication between (i) the remote user device associated with the first user and (ii) the first enterprise data source.
- the conversation is limited to only this first user, no other first user may participate in the conversation although the enterprise data source 102 may use the sub-channel 212 to host similar private conversations with other end users.
- one or more secure transmissions and one or more secure receptions of messages is facilitated between the first enterprise data source and the remote user device associated with the first user.
- the selection of the first enterprise data source from the remote user device associated with the first user is made when the first user selects an affordance on the display of the remote user device that is associated with the first enterprise data source.
- the affordance is a plus sign displayed next to a designation of the first enterprise data source on the display of the remote user device.
- the adding obtains a user credential for the first user from the profile of the first user and passes this user credential (e.g., phone number, a login, a password, a street address, a credit card number, a name, a government issued number for the first user, or an E-mail address) to the first enterprise data source to verify the first user to the first enterprise data source.
- this user credential e.g., phone number, a login, a password, a street address, a credit card number, a name, a government issued number for the first user, or an E-mail address
- a catalog or other information is communicated from the enterprise data source 102 to the remote user device 104 associated with a first user within a conversation hosted by a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel in the plurality of primary communication channels.
- a response from the first user regarding the catalog (or other information provided by the enterprise data source) is received within the conversation in the first sub-channel.
- the catalog selection (or other forms of user selection such as menu choice selection, etc.) is processed using an automated human interface module (e.g., automated human interface module 2202 ) employing a trained classifier, thereby generating a reply to the catalog selection (or other form of end user selection).
- a determination is made as to whether the reply is deemed to be satisfactory. For instance, consider a situation where a user made a request for “paint thinner.” All responses to this user query are run through a classifier to determine whether the responses to the request are satisfactory. For instance, if the replies pertain to paint thinner (because the phrase “paint thinner”) appears in the text of the responsive documents, the classifier will deem the documents satisfactory.
- the reply is communicated to the remote device 104 associated with the first user within the conversation in the first sub-channel.
- communication on the first sub-channel e.g., the conversation between the remote user device associated with the first user and the enterprise data source
- a human associate with the corresponding enterprise data source of the first sub-channel e.g., the conversation is routed to the sub-channel administrator queue 2228 of FIG. 22 .
- the trained classifier makes the determination as to whether the reply is deemed to be satisfactory.
- the automated human interface module employing the trained classifier is not associated with the enterprise data source 102 .
- a query is received from a remote user device associated with a first user within a conversation hosted in a first sub-channel in the corresponding plurality of sub-channels associated with a respective primary communication channel in the plurality of primary communication channels.
- the query is processed using an automated human interface module employing a trained classifier, thereby generating a reply to the query.
- a determination is made as whether the reply is deemed to be satisfactory.
- the reply is communicated to the remote device associated with the first user within the first sub-channel.
- the conversation is switched to a human associate with the corresponding enterprise data source of the first sub-channel (e.g., the conversation is routed to the sub-channel administrator queue 2228 of FIG. 22 ).
- the trained classifier makes the determination as to whether the reply is deemed to be satisfactory.
- the automated human interface module employing the trained classifier is not associated with the enterprise data source.
- a query is received from a remote user device 104 associated with a first user within a conversation hosted by a first sub-channel in the corresponding plurality of sub-channels associated with a respective primary communication channel in the plurality of primary communication channels.
- the query is processed using an automated human interface module employing a trained classifier, thereby generating a reply to the query.
- the reply is communicated to the remote device associated with the first user within the first sub-channel. A determination is made as to whether the reply is deemed to be satisfactory.
- the conversation is switched to a human associate with the corresponding enterprise data source of the first sub-channel (e.g., the conversation is routed to the sub-channel administrator queue 2228 of FIG. 22 ).
- the determination as to whether the reply is deemed to be satisfactory is based, at least in part, on further communication received from the first user within the conversation.
- the automated human interface module employing the trained classifier is not associated with the enterprise data source.
- the secure mobile communication platform 200 support permits geographic dependent messages. For instance, referring to block 662 of FIG. 5P , a location of a remote user device 104 associated with a first user within a first sub-channel 212 in the corresponding plurality of sub-channels associated with a respective primary communication channel 210 in the plurality of primary communication channels is received. A determination is made as to whether the location is within a geographical zone (e.g., country, region/state, city, town, county, metro code/zip code) in a plurality of geographical zones.
- a geographical zone e.g., country, region/state, city, town, county, metro code/zip code
- information from the enterprise data source 102 is communicated to the remote user device 104 associated with the first user within the first sub-channel 212 based, at least in part, on the location.
- no information from the enterprise data source 102 is communicated to the remote user device 104 associated with the first user within the first sub-channel 212 .
- an enterprise data source 102 e.g., business entity
- MORANDI® restaurant of Morandi LLC offers a special offer, for example, a temporal offer from Mar. 2, 2015 through Mar. 5, 2015, to users subscribing to the “ZAGATS.NYC.bestItalian.*” sub-channel 212 .
- the SMCB 200 implements a periodic geolocation mechanism to transmit location sensitive messages to users through the sub-channels 212 .
- peripheral geolocation mechanism refers to a method of determining a geolocation of a user (e.g., consumer) and delivering different content to the user based on the user's location parameters comprising, for example, country, region/state, city, metro code/zip code, organization, internet protocol (IP) address, an internet service provider (ISP), etc.
- the SMCB 200 triggers a push notification if the user, due to the periodic geolocation obtained from the remote user device 104 associated with the user, heartbeats with a SMCB 200 presence service when proximal to the MORANDI® restaurant.
- a consumer agent on a server or a cloud computer handles the push notification, for example, by performing a k-cluster nearest neighbor calculation to determine a match with a standard deviation of 1 mile.
- k-cluster nearest neighbor calculation refers to a pattern recognition calculation performed for statistical classification and regression analysis.
- the geolocation heartbeat can be expressed on a GOOGLE® Map of Google, Inc., to show pulse rate and movement of the user in a particular location.
- the SMCB 200 supports the delivery of a message based on time scheduling with users being deemed active or relevant, if they meet demographic criteria and are in a particular geographical location defined, for example, by a longitudinal and latitudinal address, and therefore sends a message and/or an offer to those users in real time through their respective sub-channels 212 .
- Natural language processing is invoked whenever a user enters a free form text entry while in a conversation 2220 with a chatbot 2202 , as opposed to clicking on an option button, or a list picker. That is, this analysis is applied when the user provides text input versus making an offered selection, e.g. clicking on an option button, a list picker, etc.
- the natural language processing is divided into two layers, (i) a persistent layer natural language processing and a specialized context layer natural language processing.
- the persistent layer natural language processing is based on keyword analysis which is then checked for matches against all available node tags 2211 of all nodes 2208 in the node graph 2208 of the chatbot 2202 that user is interacting with.
- the persistent layer natural language processing makes use of vector space semantics, which provides a deeper understanding of words and in what context they are used.
- the vector space semantics allows for the use of context to improve the identification of matching options. For instance, the understanding of what the word means, and also relationships between words is leveraged in the vector space semantics.
- vector based semantics is supported by building up a corpus of word combinations and understanding.
- a different corpus of word combinations and understanding is built for different industries or categories.
- a specialized corpus of word combinations is built for each respective different industry or category based on the terms of art and understanding in each respective different industry or category.
- a corpus relevant to a respective industry or category is used to examine frequencies in order to derive semantic information for that respective industry or category. This work is based on statistical semantics hypothesis: statistical patterns of human word usage can be used to figure out what people mean.
- the corpus is either acquired or is built using documents relevant to the respective industry or category.
- the raw text is normalized, to convert superficially different strings of characters to the same form (e.g., car, Car, cars, and Cars could all be normalized to car).
- the raw text is also annotated to mark identical strings of characters as being different (e.g., fly as a verb could be annotated as fly/VB and fly as a noun could be annotated as y/NN).
- event frequencies suitable for natural language process in the form of term-document matrices, word-context matrices, and/or pair-pattern matrices. See Turney and Pantel, 2010, “From Frequency to Meaning: Vector Space Models of Semantics,” Journal of Artificial Intelligence Research 37, pp. 141-188, which is hereby incorporated by reference.
- Such matrices can then be used to analyze text provided by a user in order to find the most suitable response.
- Such matrices represent a plurality of vectors, each such vector representing a possible response to the query by a user.
- the query is converted to a vector and the similarity between the query vector and a respective vector in the matrices is calculated, for instance by taking their cosine. This is done for a number of the vectors in the matrix to find the vector in the matrix that has a similarity to the query vector that satisfies a similarity threshold.
- the value of this similarity threshold is application dependent and so may vary.
- a vector in the matrix satisfies the similarity threshold when it is more similar to the query vector than any other vector in the one or more matrices associated with the respective different industry or category.
- the primary purpose of this effort is to efficiently and effectively match the user input to the most appropriate topical area in the chatbot 2202 node graph 2208 , with the corpus of word vector space optimized on a per industry/category basis.
- One implementation in accordance with such embodiments that uses natural language processing comprises, at a server system (e.g., secure mobile communications platform 200 ) comprising one or more processors 274 and memory 192 / 290 , joining a first user to a primary communication channel 210 , where the primary communication channel facilitates electronic communication between a corresponding enterprise data source 102 and a remote user device 104 associated with the first user.
- the first user is further joined to a sub-channel 212 associated with the primary communication channel 210 , where the sub-channel 212 hosts a plurality of users including the first user, each in their own conversation 2220 with the enterprise data source 102 .
- a first message that is posted by the first user is received by the secure mobile communications platform 200 .
- the first message comprises (a) an application programming interface token 396 identifying the first user and (b) a first text communication. Responsive to the first message, the first text communication is compared to each tag (e.g. interface tag expression 2204 , scope tag expression 2206 , node tag 2211 ) in each respective set of tags in a plurality of sets of tags, where each respective set of tags in the plurality of sets of tags is uniquely associated with (i) a different automated human interface module 2202 in one or more automated human interface modules associated with the sub-channel 212 or (ii) a different node 2210 within a plurality of nodes in an automated human interface module 2202 in the one or more automated human interface modules.
- each tag e.g. interface tag expression 2204 , scope tag expression 2206 , node tag 2211
- each respective set of tags in the plurality of sets of tags is uniquely associated with (i) a different automated human interface module 2202 in one or more automated human interface modules associated with the sub-channel 212 or (ii)
- the first message is routed to a first automated human interface module 2202 in the one or more automated human interface modules or a first node 2210 within the first automated human interface module that is associated with a tag (e.g. interface tag expression 2204 , scope tag expression 2206 , node tag 2211 ) that best matches the first text communication.
- a tag e.g. interface tag expression 2204 , scope tag expression 2206 , node tag 2211
- the first automated human interface module prepares a second message responsive to the first message which is then received at the secure mobile communications platform 200 when the second message is posted by the first automated human interface module.
- the second message includes (a) the first application programming interface token 396 identifying the first user, and (b) a second communication responsive to the first message.
- the application programming interface token 396 is used to route the second message to the first user within the sub-channel 212 thereby facilitating a secure bidirectional conversation between (i) the remote user device 104 associated with the first user and (ii) the corresponding enterprise data source 102 associated with the primary communication channel 210 .
- the first message further comprises (c) a key (e.g. API key 310 ) identifying the sub-channel in the one or more sub-channels
- the second message further comprises (c) the key identifying the sub-channel.
- the comparing the first text communication to each tag in each respective set of tags in a plurality of sets of tags includes performing a procedure that comprises tokenizing the first text communication thereby obtaining a plurality of tokens (and optionally normalizing and/or annotating the first text communication).
- the plurality of tokens is converted into a query vector.
- the query vector is then compared to a first set of tags in the plurality of sets of tags (e.g. interface tag expressions 2204 , scope tag expressions 2206 , node tags 2211 ), where the first set of tags is in the form of a matrix of target vectors (that have also been tokenized and optionally normalized and/or annotated).
- each target vector in the matrix of target vectors includes a relative frequency of occurrence of each term in a plurality of terms.
- each respective interface tag expressions 2204 , scope tag expressions 2206 , and/or node tag is a vector of tokens.
- each interface tag expressions 2204 , scope tag expressions 2206 , and/or node tag 2211 includes a frequency of occurrence of each term in a plurality of terms.
- the plurality of terms is associated with a context or an industry associated with the sub-channel or primary communication channel.
- automation is added, where the chatbot 2202 recognizes when users put in new words or word combinations that have not been presented before. When this occurs, the new words or word combinations are registered in order to automatically extend the vector space corpora of a particular node 2202 .
- the persistent layer natural language processing of each chatbot 2202 includes automated deep learning in which the bot evolves its own word vector space corpora.
- the persistent layer of the natural language processing is invoked in a modular fashion.
- the natural language processing includes a plurality of modules, such as a sentiment analyzer, a spell checker, entity linking, or a high level context extraction module.
- the comparing the first text communication to each tag in each respective set of tags in a plurality of sets of tags further comprises applying one or more extension modules to the first text communication, thereby forming an augmented first text communication that is compared to each tag in each respective set of tags in the plurality of sets of tags.
- an extension module, in the one more extension modules is a spell checker and the augmented first text communication is a spell-checked version of the first text communication.
- an extension module, in the one more extension modules is a context extraction module and the augmented first text communication comprises a context identified by the context extraction module.
- one or more of the plurality of modules are customized by the enterprise data source 102 .
- one or more of the plurality of modules are a public domain or commercial natural language processing type library.
- one of the sentiment analysis modules is a third-party artificial intelligence module.
- the persistent layer of the natural language processing functionality can be expanded beyond the default set of natural language processing modules, to further include additional natural language processing modules that provide additional natural language processing services.
- one or more of these additional natural language processing modules is provided by third parties.
- one or more of these additional natural language processing modules is provided by the enterprise data source 102 .
- the persistent layer natural language processing is used to route a user to a specific knowledge area in a node graph 2208 based on a context determined by the persistent layer, at which point a second specialized context layer natural language processing is invoked as a second layer of the overall natural language processing.
- This approach simplifies the context extraction because it streamlines and optimizes the context extraction rules to a limited scope at the second layer; e.g. making a restaurant or travel reservation, understanding the details about a device error complaint, etc.
- a specialized context extraction module is invoked as a second layer of the natural language processing that is specific to this particular topic.
- the second layer of the natural language processing system has a much easier problem to solve because it needs to only look for a discrete number of items (e.g., where, which restaurant, which location, what time, how many people, any kind of diet, etc.). That is, the scope of complexity for the natural language processing system is reduced by imposing learned context in this manner.
- the comparing the first text communication to each tag in each respective set of tags in a plurality of sets of tags described above includes performing a procedure that comprises converting the first text communication into a query vector, applying one or more extension modules to the query vector, thereby forming an augmented query vector, and using the augmented query vector to identify a subset of sets of tags from the plurality of sets of tags to evaluate, where each set of tags in the subset of sets of tags is in the form of a matrix of target vectors in a subset of a plurality of matrices of target vectors, and where each target vector in each respective matrix in the subset of a plurality of matrices of target vectors includes a relative frequency of occurrence of each term in a plurality of terms, and the augmented vector is compared to each respective target vector in each respective matrix in the subset.
- an extension module in the one more extension modules, is a spell checker and where the augmented vector is a spell-checked version of the query vector.
- an extension module, in the one more extension modules is a context extraction module, the augmented vector includes a context identified by the context extraction module, and the context determines the identity of the subset of the plurality of matrices of target vectors.
- FIG. 28 provides a context extraction flow module for a conversation 2220 in accordance with some aspects of the present disclosure in which specialized natural language processing context “cards” for each specialized topic are made in the second layer of the natural language processing.
- the result is a growing, re-usable library of natural language processing context cards, one for reservations in general, a more specialized one for flight reservations, one for restaurant reservations, etc. Further, over time a library of such second layer natural language processing context cards is built up so a chatbot 2202 can be imbued with those cards where they make sense.
- chatbot 2202 that is directed to a medical application would not have to deal with restaurant reservations and so would not get the reservation context cards, but rather will have more life sciences and medical related context cards than a chatbot 2202 that is directed to hospitality, for example.
- the context cards are user independent meaning that it doesn't matter who the user is.
- the context cards in a given chatbot 2202 are topic based, as opposed to topic plus user. This illustrates how the two layer NLP provides a first high level NLP to understand what the user is actually talking about a higher level. Once this is understood (e.g., you are trying to make a restaurant reservation). The first layer does not concern itself with the details of the reservation or how much additional information the user provided.
- the purpose of the first layer is to understand what the user wants to talk about in the conversation 2220 .
- a specialized extraction module of the second layer of the natural language processing delves into the specifics of making a restaurant reservation with the user. Because the context has been limited for the second level, it can be easily cued to look for time, number of people, and the other details of making a reservation as a simple process as illustrated in FIG. 28 .
- the persistent layer of the natural language processing (layer 1 ) is used to help steer the conversation 2220 as fast as possible to a layer having specialized context natural language processing.
- specialized context NLPs are not invoked until more general NLP determines the correct context and thus the correct context NLP from among a plurality of context NLPs to invoke.
- a context for the secure bidirectional conversation 2220 is determined based, at least in part, on a first text communication posted by a user from a device 104 as part of a first layer of natural language processing. Responsive to determining the context, the secure bidirectional conversation is routed to a first node 2210 in the plurality of nodes in an automated human interface module 2202 that includes an interface module for the context.
- the context is a type of reservations (e.g. restaurant reservations, airline reservations, hotel reservations, automobile reservations, etc.).
- the first node 2210 performs image analysis.
- the context is a medical application, to name a few non-limiting examples of context.
- Node cluster functions address the case where a chatbot 2202 has fairly expansive coverage, so there are a lot of different topical areas that are being covered by the chatbot 2202 . Because to this, there are multiple areas in the chatbot that need to perform a certain function at some point in the conversations 2220 supported by the chatbot. So, for example, consider the case where the chatbot 2202 provides general technical support, and there are multiple places where a user could type in what kind of device they are having a problem with, or that they want to talk about. And then there may be multiple areas where they could type in an error code, or what the problem is. It could be through different services or products and the like.
- the node cluster function executes a general sequence of instructions that are necessary at some point before the conversation 2220 can progresses. Typically, the general sequence of instructions is used to acquire a certain predetermined enumerated list of information.
- the node cluster function addresses this situation by providing a construct that enables a collection of action and message nodes to become a function. In other words, a centralized function is provided in the chatbot 2202 that can be called from anywhere.
- the node cluster function performs a scripted algorithm via one or more action nodes, interacts with a user via a sequence of nodes included in the node cluster, receives input data from a user, and can provide (defined) data output.
- the node cluster function has a plurality of nodes. For instance, once a user has been located to a node cluster function, the chatbot 2202 may ask specific questions to fill in content that it needs. Once the node cluster function is completed its sequence of instructions, the function makes sure it has gathered all the required information and then passes the user back to a destination node 2210 in the node graph 2208 of the chatbot 2202 that is directly correlated with where they were before they passed through the node cluster function. In this way, the use of a node cluster function provides a script that can be used by many different nodes 2210 in the node graph 2208 to perform a common function that is needed by the nodes.
- a chatbot 2202 includes a node cluster function that is a single script that just completes a certain process.
- the node cluster function acts as a mini-chatbot 2202 that goes beyond asking a simple enumerated list of questions but rather contains conditional branches or other logic based on the answers provided by a user to initial questions.
- such node cluster functions can be called from multiple areas in the node graph 2208 , and in fact from multiple areas within a given node 2210 .
- the node cluster function When called, the node cluster function performs its function and moves the user back to their conversational flow 2220 . Any necessary data can be passed to the node cluster function and the node cluster function can return to the calling node any data acquired or calculated by the node cluster function. In some embodiments, the node cluster function performs calculations based on passed data and returns these calculations to the calling node. In some such embodiments, the node cluster function does not ask the user for any data. In some such embodiments, the node cluster function does ask the user for any data. In some embodiments, the node cluster function performs an error checking function based on data passed to the node cluster function.
- the node cluster function can be used to check to make sure that the error code entered by a user is a valid error code.
- the node cluster function can be used to obtain a help link or a document associated with the error code and return this help link or document to the calling node.
- a first automated human interface module 2202 comprises a node graph 2208
- the node graph comprises a first plurality of nodes 2208 and a first plurality of edges, and each edge in the first plurality of edges connects two nodes in the first plurality of nodes.
- a subset of the first plurality of nodes in the node graph performs a dedicated function and is called by one or more referencing nodes in the node graph that are not part of the subset of the first plurality of nodes.
- the dedicated function is a script that is designed to obtain information from the first user within the secure bidirectional conversation.
- the dedicated function receives status data from a referencing node in the one or more referencing nodes to facilitate performing the dedicated function.
- the dedicated function receives a destination node in the first plurality of nodes from a referencing node in the one or more referencing nodes, and once the subset of the first plurality of nodes in the node graph performs the dedicated function, the method further comprises passing the secure bidirectional conversation to the destination node.
- the destination node is the same as the referencing node. In some embodiments, the destination node is other than the referencing node.
- a chatbot 2202 In one example of a node cluster function, users make use of a chatbot 2202 to enter into conversations 2220 to report a problem with their service on a mobile device. So, before the chatbot 2202 can address the user's problem, the chatbot will need to know three types of information: (i) the device type, (ii) the kind of error the user is encountering, and (iii) where the error is happening. So, in a typical conversational flow, the user types in text. The chatbot 2202 detects from natural language processing that the issue they are having relates to a problem with their service on a mobile device. So now, before doing anything else, the chatbot 2202 then goes through a process of obtaining the three pieces of information.
- the chatbot 2202 communicates to the user it knows the user has this issue, and is no now going to check if it has any of the needed information.
- the chatbot 2202 function looks to see if anywhere else in the bot the user has already provided any of the needed information (e.g., the type of device), so that the user is not inconvenienced by having to enter the information again. If needed information cannot be found, the chatbot 2202 will invokes a particular node cluster function that is designed to ask the user to provide the device type before returning to normal conversation flow at the calling node 2210 in the node graph 2208 of the chatbot 2202 . The chatbot 2202 will then go to its next question, and see if the user has already mentioned the kind of error it is encountering anywhere in the conversation 2220 .
- the chatbot 2202 will call a specialized node cluster function in the form of mini-bot that provides a mini-conversational (reduced set) flow, to enquire as to the kind of error the user is encountering and therefor an error code for the error.
- a specialized node cluster function Once the specialized node cluster function has acquired the kind of error the user is encountering, process control is returned to the calling node 2210 in the node graph 2208 of the chatbot 2202 . The chatbot 2202 will then go to its next question, and review the conversation flow for information on where the error is happening.
- the chatbot 2202 will call a specialized node cluster function in the form of mini-bot that provides a mini-conversational (reduced set) flow, to enquire as to where the user is encountering the error.
- process control is returned to the calling node 2210 in the node graph 2208 of the chatbot 2202 .
- the user can be transferred to a specific destination node 2210 in the node graph 2208 , which processes the services request. For instance, the destination node 2210 may look up information for the service request, move the user to a flow where there is resolution information for the user, and the like.
- This example illustrates a representative paradigm, in which a chatbot 2202 needs three, five, or ten pieces of information before it can perform a task. Obtaining such information involves a specific flow, and so the use of node cluster functions in the way illustrated above provides a way to extend the amount or type of information needed, or the way it is acquired, without having to extensively rewrite the nodes in the conventional node graph 2208 of the chatbot 2202 .
- template node cluster functions are provided to allow the enterprise data source 102 a good starting point from which to develop customized node cluster functions. For instance, one template provides a sequence of information, a feature information checklist. That is, a certain informational sequence that commonly occurs. In this way, the enterprise data source 102 is given flexibility on how they interface with their customers.
- node cluster function in the manner described herein provides a way to do so.
- the node cluster function is discrete and so can be easily changed and upgraded.
- node cluster functions include conversational flow routing, meaning that any node 2210 in the node graph 2208 of a chatbot 2202 that is making use of a node cluster function includes the destination node in the node graph 2208 as a required input parameter. This ensures the node cluster function can properly route the conversation 2220 back to the flow that requested an instance of the node cluster function.
- a node cluster function is a card checkout.
- an enterprise data source 101 sells certain products or services.
- a user in a conversation 2220 has to provide a credit card.
- This whole process is put into a particular node cluster function that serves as an ecommerce checkout function that can be called by a chatbot 2202 .
- the enterprise data source 102 can provide their own script for this ecommerce checkout function in the form of a node cluster function.
- a function shell is provided to the enterprise data source 102 so that the enterprise data source 102 knows how to operate with the function, then the enterprise data source 102 can customize the function so that they best interface with their customers.
- both the first layer and the second layer are open ended, meaning that third party artificial intelligence natural language processing modules may be interfaced into either layer.
- cognitive services have an application programming interface.
- the systems and methods of the present disclosure leverage such application programming interfaces to integrate the services.
- artificial intelligence programs e.g., cognitive services
- cognitive services that can be interfaced are the MICROSOFT Cognitive Services that include APIs for emotion and video detection, facial, speech and vision recognition, and speech and language understanding, to name a few examples. See the Internet at microsoft.com/cognitive-services/en-us/documentation, which is hereby incorporated by reference.
- MICROSOFT offers image computer vision analysis as a cognitive service. It can look for or try to recognize people, it can try to recognize objects in a picture, it can classify a picture and so forth.
- Such a service is typically not appropriate for the first layer of the disclosed two-layer natural language processing, but such a service may benefit a particular context that the chatbot 2202 is responsible for (e.g., an area in the node graph 2208 of the chatbot 2202 that involves specialized image recognition), where you have an image recognition feature that you want.
- the disclosed open artificial intelligence platform can easily connect into the MICROSOFT's API for their image recognition service, so that, when a user uploads an image, the MICROSOFT cognitive service can be applied.
- the MICROSOFT linguistic analysis API can be used to perform sentence separation and tokenization, part-of speech tagging, and constituency parsing.
- third party artificial intelligence modules can be used in the first layer of the two-layer natural language processing to facilitate context determination.
- the MICROSOFT emotion API can be used to determine user sentiment
- the MICROSOFT BING spell check API can be used to check spelling, and so forth.
- any publically available cognitive service can be integrated into the two-layer natural language processing of the present disclosure. Moreover, they can also be integrated into embodiments of the present disclosure that make use of only a single layer natural language processing.
- the cognitive service is a knowledge exploration service that provides a way to add interactive search and refinement to applications.
- the enterprise data source can build a compressed index from structured data, author a grammar that interprets natural language queries, and provide interactive query formulation with auto-completion suggestions as a module that is included in either the first layer or the second layer of the disclosed two-layer natural language processing.
- a service can be trained to read a statement where a user is likely providing details about the restaurant reservation they want to make.
- the service can be trained to read a statement where a user is likely providing details regarding a medical issue (e.g., specialized so it can detect the kind of things that a potential patient might have issues such as knee surgery, knee replacement surgery, etc.).
- the knowledge exploration service can be specialized to a particular context for a module in the second layer of the two-layer natural language processing.
- the natural language processing can be accomplished using just the tools provided inherently with the node graphs 2208 of the present disclosure.
- image recognition This is a specific cognitive service where you send the image to a MICROSOFT or IBM or other third party server, and what is returned is information regarding the image, such as whether a face is seen, and if there is a face, the sex associated with the face, likely age, skin color, etc.
- image recognition a specific cognitive service where you send the image to a MICROSOFT or IBM or other third party server, and what is returned is information regarding the image, such as whether a face is seen, and if there is a face, the sex associated with the face, likely age, skin color, etc.
- third party cognitive services that may be interfaced into the disclosed specialized context layer of natural language processing include, but are not limited to, image analysis, expert decision models, self/machine learning models that adjusts (weight) an algorithm or expert decision model, topically focused context extraction, and web search.
- any third party cognitive service can be leveraged not only for the persistent natural language processing layer of the specialized context layer of natural language processing, but also by any node 2210 in the node graph 2208 of a chatbot 2202 where such cognitive services facilitate conversation 2210 progression.
- Multi-channel support provides multi-channel support which enables chatbot 2202 integration into multi-channel end points; e.g. SMS, Facebook Messenger, etc., via a transformation layer 317 that automatically translates the default chatbot 2202 outputs to the appropriate format required for a specific channel.
- the chatbot platform detects the channel at the start of a conversation 2220 and applies the correct channel transformation protocol.
- the communications module 204 is in the form of a mobile application that a user downloads onto a client device 104 .
- the communications module 204 is in the form of a webchat widget that can be interfaced with another application, such as one provided by an enterprise data source 102 or a third party.
- the communications module 204 is in the form of a webchat widget that can be added to the webpage of an enterprise data source 102 or the webpage of a third party, just like any other webchat widget that is available with the exception that conversation 2220 are initially directed through chatbots 2202 within sub-channels 212 before, on a conditional basis, getting passed on to a live agent.
- the communication module 204 -C is in the form of a software development kit, right, that can be installed as a mobile application under select operating systems 473 , such as iOS, DARWIN, RTXC, LINUX, UNIX, OS X, ANDROID, or WINDOWS.
- operating systems 473 such as iOS, DARWIN, RTXC, LINUX, UNIX, OS X, ANDROID, or WINDOWS.
- the communications module 204 -C is in fact a third party application such as FACEBOOK messenger.
- chatbots 2202 to be able to interface with third party client device applications (e.g., FACEBOOK messenger) and/or over any of a number of communication protocols such as SMS.
- FACEBOOK messenger platform it is installed as a client application on device 104 - 1 and can render chatbot-like user interface features, like for example, the way chatbots typically communicate, by having conversations 2220 with a user.
- chatbots 2220 such applications might present the user with some options that might be rendered as affordances (e.g., date picker, list picker, radio button, etc.), which upon user selection, take the user to the next question or element of a conversation flow.
- Chatbots 2202 are extended in such embodiments of the present disclosure by the combination of a channel/communications module 204 -C detection mechanism that detects the type of communication protocol being used to support a conversation 2220 in a sub-channel 212 and/or the type communications module 204 -C being used to support the conversation. If the type of communication protocol and/or the type of communications module 204 -C is other than default, a transformation layer 317 is imposed on the conversation to provide translated instructions to facilitate the conversation 2220 with the end user using the alternative communication protocol and/or type communications module 204 -C.
- the channel/communications module 204 -C detection mechanism operates on an incoming chat request by a user from a client device 104 - 1 on a sub-channel 212 that is requesting to engage in a conversation 2220 with a chatbot 2202 .
- the request includes a channel definition.
- the request states that is coming from a PYPESTREAM web widget.
- the transformation layer 317 does not need to get invoked because no transformation or translation needs to take place to facilitate the conversation 2220 , e.g., with a chatbot 2202 and/or live operator.
- the request specifies an alternative communication protocol (e.g., SMS) and/or alternative communication module 204 -C (e.g., FACEBOOK messenger) then a determination is made as to whether there is a suitable transformation layer 317 to support the alternative communication protocol and/or module. If a suitable transformation layer 317 is found, then the chatbot 2202 that is executing the channel/communications module 204 -C detection mechanism would communicate with the user through the communications module 204 -C by first translating its questions or communications to the user using the transformation layer 317 .
- an alternative communication protocol e.g., SMS
- alternative communication module 204 -C e.g., FACEBOOK messenger
- the transformation layer 317 is able to translate all the native affordances offered by a chatbot 2202 to an end user as part of normal conversation flow, such as radio buttons, stickers, image carousels, list pickers, and the like into equivalent affordances that can be understood by the alternative communications module 204 -C (e.g., FACEBOOK messenger).
- the native affordances are translated (e.g., the native list picker) into the FACEBOOK messenger version of a list picker.
- other affordances such as date pickers and buttons are translated into a format that the alternative communications module 204 -C requires to render it properly.
- the reach of the chatbots 2202 is extended to additional channels, other kinds of chat frameworks (e.g., other kinds of client side communications modules 204 -C) that are publically available, including chat frameworks that do not intrinsically have native chatbot capabilities and/or a reduced set of chatbot capabilities (e.g., a reduced set of the types of affordances founds in chatbots such that some chatbot representations will work and other do not).
- the most appropriate transformation layer 317 is installed over a conversation 222 .
- those elements e.g., affordances, objects, etc.
- process control passes to the lowest common denominator affordance that is supported.
- this lowest common denominator is text presentation such as in the case of SMS.
- the conversation 2220 is flattened, so that all communication by the chatbot 2202 is translated into unformatted ASCII text.
- the system and methods of the present disclosure provide one or more conversion tables.
- the one or more conversion tables serve the purpose of translating native affordances, such as a native list picker, into a data structure that is supported by the non-default communication protocol and/or non-default client side communications protocol 204 -C that has been detected. This is done by using the one or more conversion tables to look up what the equivalent affordance is (e.g., what is equivalent to the native list picker). If an equivalent affordance is found, the equivalent is selected and used in place of the native affordance. If an equivalent affordance cannot be found, then the chatbot 2202 resorts using an equivalent text-based message as a substitute for the affordance.
- the chatbot 2202 uses the one or more conversion tables to would the native JSON format for the list picker or image carousel or other form of native affordance and then translates that to whatever structure the non-default client side communications module 204 -C needs so that it can properly work with it.
- the one or more conversion table may not know all the components but it would know some and so the chatbot 2202 would do the best it can with the one or more conversion tables to translate the affordances the best that it can and render the rest as unformatted, or substantially unformatted text.
- Another advantage of opening up the systems and methods of the present disclosure to the use of non-default client side communications modules and/or nondefault communication protocols is that it allows the enterprise data source to leverage their existing customer base in whatever form that it is presently in. For instance, consider the case of enterprise data source 102 B that already has a lot of traffic through their FACEBOOK page. In such instances, to capitalize on this traffic, the enterprise data source 102 B places a chat widget in their FACEBOOK page where they are getting a lot of interest in their products and services as well as customer questions regarding the same. The chat widget can be used to automate servicing this interest and at the same time provide the same kind of fundamental value that is offered to enterprise data sources 102 that require their users to download the default client side communications module 204 -C.
- the chat widget serves as a shell application that is added by the enterprise data source to their FACEBOOK page thereby enabling users to engage in conversations 2220 that are serviced by the server side communications module 204 -S in accordance with the teachings of the present disclosure.
- the chatbot 2202 experience is provided in the FACEBOOK environment, or any other third party application.
- the enterprise data source 102 is using the server side communications module 204 -S to host a primary communication channel 210 with one or more sub-channels 212 , but the enterprise data source's clients would be on the FACEBOOK property (or other nondefault client side communications module) and communicating through the FACEBOOK client chatbot application, which serves as a shell with a collection of objects that allow live representation for chatbot-type conversations.
- chatbot 2220 hosted by the secure mobile communications platform 220 .
- a chatbot 2202 on the secure mobile communications platform 200 that is driving a conversation 2220 will determine when to provide a list picker and provide these options to the end user via the third party (e.g., FACEBOOK) interface.
- the FACEBOOK chatbot e.g., the non-default client application
- the list picker or other objects to the user on the remote user device 104 associated with the user.
- the non-default client application then waits for the user input at the FACEBOOK client application, which is then returned back to the chatbot 2220 on the communications platform 200 , where the chatbot 2220 then interprets the response and sends a further communication to the FACEBOOK client application (or other form of non-default client application) to respond.
- the FACEBOOK mobile application (or other form of non-default client application) is used to interact with the secure mobile communications platform 200 in order to facilitate a conversation 2220 .
- the end user is not using the default client side communications module 204 -C but rather a non-default module such as FACEBOOK messenger, on their client device 104 -C because that is how the corresponding enterprise data source 102 has always communicated with that particular user.
- the enterprise data source 102 has a lot of similarly situated user who have always communicated with the enterprise data source 102 through the same non-default client side communications module, such as FACEBOOK messenger.
- the enterprise data source 102 wants to go beyond the non-default client side communications basic messaging applications, for instance to partake in the full experience afforded by the conversations 2220 of the present disclosure, including secure primary communication channels 210 , secure sub-channels 212 , encryption, and all the functionality of the chatbots 2220 of the present disclosure including node graphs 2208 and the functionality of the nodes 2210 of the present disclosure.
- the enterprise data source 102 is limited because they have traditionally used a non-default client side communications module, such as FACEBOOK messenger, to interact with their users because that is where their customer base is situated.
- a non-default client side communications module such as FACEBOOK messenger
- the systems and methods of the present disclosure advantageously enable the use of non-default communication protocols and non-default client side communications modules so that, if there is a certain chatbot 2220 that the enterprise data source 102 wants to use in conversations, it uses the one or more conversion tables to convert messages, objects and affordances from the chatbot 2220 into a data structure (e.g., JSON equivalent of that chatbot message) that will work with the non-default client side communications module (e.g., FACEBOOK messenger).
- the non-default client side communications module receives this data structure and in this way the user receives the message with from the chatbot 2202 on the secure communications platform 200 converted now into something that the non-default client side communications module recognizes.
- a communication protocol used in a conversation 2220 with a remote device 104 is detected.
- a transformation layer 317 is invoked that translates messages from the chatbot 2202 to the remote user device 104 to a format associated with the communication protocol prior to routing the second message to the remote user device.
- the communication protocol is other than a default communication protocol, and the invoking the transformation layer 317 translates the messages from the chatbot 2202 to the remote user device 104 to a JSON file that is routed as the messages from the chatbot 2202 to the remote user device.
- the communication protocol is other than a default communication protocol
- the messages from the chatbot 2202 to the remote user device 104 each comprise one or more objects in other than ASCII format
- the invoking the transformation layer 317 translates an object in the one or more objects to ASCII format prior to the messages from the chatbot 2202 being routed to the remote user device.
- the transformation layer 317 includes a lookup table that provides a translation schedule for each object in a plurality of objects, for each communication protocol in a plurality of communication protocols.
- the communication protocol is other than a default communication protocol
- a messages from the chatbot 2202 comprises one or more objects in other than ASCII format
- the invoking the transformation layer 317 translates an object in the one or more objects to another format prior to the message being routed to the remote user device in accordance with the lookup table.
- Customization of user experience based on identity of the client side communications module is that the enterprise data source 102 can customize the node graph 2208 of its chatbots 2208 as a function of the identity of the communications protocol (e.g., default web based or non-default communication protocol such as short message service) and/or identity of the client side communications module (e.g., default proprietary client side communications module 204 -C versus third party non-default client side communications module such as FACEBOOK messenger).
- identity of the communications protocol e.g., default web based or non-default communication protocol such as short message service
- identity of the client side communications module e.g., default proprietary client side communications module 204 -C versus third party non-default client side communications module such as FACEBOOK messenger.
- the enterprise data source 102 can customize which chatbots 2202 interface with a user as a function of the identity of the communications protocol (e.g., default web based or non-default communication protocol such as short message service) and/or identity of the client side communications module (e.g., default proprietary client side communications module 204 -C versus third party non-default client side communications module such as FACEBOOK messenger).
- an enterprise data source 102 can have an overall chatbot 2202 that does an enumerated list of tasks (e.g., x, y, z) and thus can address different disciplines and/or can have multiple chatbots.
- the secure mobile communications platform 200 upon receiving a user request, not only can the secure mobile communications platform 200 detect what the user is asking about, what affordances they clicked on etc. and bring them to the appropriate place in the node graph 2208 of a chatbot 2202 , but as a result of the channel/communications module 204 -C detection mechanism, the system can differentiate the user experience based on client side communications module identity (e.g., default client side communications module 204 -C, non-default client side communications module type A, non-default client side communications module type B, etc.). This is done not only to access the appropriate translations as discussed above, but also to customize the user experience.
- client side communications module identity e.g., default client side communications module 204 -C, non-default client side communications module type A, non-default client side communications module type B, etc.
- the enterprise data source 102 may have varying degrees of trust for the various non-default client side communications modules (e.g., high degree of trust for non-default client side communications module type A, medium degree of trust for non-default client side communications module type B, no trust for non-default client side communications module type C).
- This trust may be a result of the policies of the business organizations that are associated with such non-default client side communications module types. For instance, a low amount of trust would be attributed to a non-default client side communications module type that is provided by a business organization that is known to listen in on all communications through its non-default client side communications modules.
- a high degree of trust would be attributed to a non-default client side communications module type that is provided by a business organization that is known to protect all communications through its non-default client side communications module and not listen in on such communications.
- this trust is alternatively or additionally a result of the degree to which a suitable transformation layer 317 can be imposed to ensure a uniform customer experience.
- a low amount of trust would be attributed to a non-default client side communications module type for which the most suitable transformation layer 317 can only implement a few of the affordances needed by the enterprise data source 102 chatbot 2202 to provide effective communication.
- a high degree of trust would be attributed to a non-default client side communications module type for which the most suitable transformation layer 317 can implement most or all of the affordances needed by the enterprise data source 102 chatbot 2202 to provide effective communication.
- the channel/communications module 204 -C detection mechanism affords enterprise data sources 102 with the ability to put predetermined constraints on conversations 2220 with users that are using non-default client side communications modules and/or nonstandard communication protocols. This is beneficial to an enterprise data source 102 because it expands its reach to users.
- the enterprise data source 102 can immediately engage with its users on those nondefault client side communications modules 204 -C that it already has an established foothold in.
- the enterprise data source 102 views such conversations with nondefault client side communications modules for which is has a low degree of trust as an exploration phase that users might be in where they are evaluating the services or products of the enterprise data source 102 .
- the enterprise data source 102 will move such conversations 22220 to a special branch of a node graph 2208 of a chatbot 2202 to communicate in a certain way, to make certain things available but other things not.
- the enterprise data source 102 will inform the user what actions need to be taken in order to become a more valuable customer for which purely private conversations 2220 can take place (e.g., by having the user download a more trusted nondefault client side communications module and/or the default client side communications module 204 -C).
- the channel/communications module 204 -C detection mechanism advantageously provides the additional element of the enterprise data source 102 being able to recognize how conversations are happing (what communication protocol), where it is happening from (what kind of client side communications protocol) and allowing the enterprise data source to optimize and streamline the specific type of conversations that they will have in light of this.
- the enterprise data source 102 may tone down change the offerings to a user that is using a nondefault client side communications module.
- the node graph is conditioned based on the results of the channel/communications module 204 -C detection mechanism.
- the enterprise data source 102 will steer the user that is using the nondefault client side communications module to a more trusted client side communications module (e.g., one that is provided by the enterprise data source 102 ), and/or a PYPESTREAM client side communications module 204 -C.
- the enterprise data source 102 will steer the user to a mobile website that is more mobile friendly to improve the user experience.
- the enterprise data source 102 does not have to limit communication to only users that are using the default client side communications module 204 -C on client devices 104 , but rather can host conversations 2220 with an array of different nondefault client side communications modules including client side applications and websites.
- what an enterprise data source 102 offers us e.g., which chatbot 2202 and/or which branch in the node graph 2208 of a given chatbot
- a node graph 2208 of a chatbot 2202 directs a whole customer experience, depending on what actions the user takes. Moreover, in some such embodiments, as a result of the channel/communications module 204 -C detection mechanism, the node graph 2208 includes a conditional branch from one node to another in an existing node graph to direct the customer experience. In alternative embodiments, as a result of the channel/communications module 204 -C detection mechanism, a determination is made as to what kind of chatbot 2202 in a plurality of different kinds of chatbot 2202 is used to direct the customer experience.
- some aspects of the enterprise data source 102 offering are preserved regardless of the communication protocol and/or type of client side communications module that a client is using.
- the enterprise data source provides a frequently asked questions chatbot 2202 that, for example, stays the same, regardless of communication protocol and/or client side communications module type.
- the channel/communications module 204 -C detection mechanism advantageously provides a high degree of flexibility to the enterprise data source 102 .
- logic responsive to the results of the channel/communications module detection mechanism can be imposed in many different contexts by the enterprise data source (e.g., as a branch in a node graph, as a branch within a node, and/or as a determination as to which node a user interacts).
- an integration component is needed in order to preserve the integrity of conversations 2220 (e.g., the user identifier, sub-channel identifier, primary communication channel 210 identifier etc.).
- This integration component serves so track which nondefault client side communication module instances interface with which conversations 2220 on the secure mobile communications platform 200 . In this way, anytime a user operating at a client device 104 sends a communication through the nondefault client side communications module the integration component executes a handshake to let the secure mobile communications platform 200 know which conversation 2220 (and thus which primary communication channel 210 and sub-channel 212 ) the communication is for so that the secure mobile communications platform 200 know which chatbot 2202 to direct the communication.
- nondefault client side communications modules 204 -C Another aspect of the support provided for nondefault client side communications modules 204 -C is that anonymous users can be supported. That is, in such embodiments, the user of a device 104 does not have to set up an account where they provide credentials such as an E-mail address, name, and/or mobile number. In such embodiments, the user can still interact with enterprise data sources 102 on a one on one basis. That is, they can navigate to the webpage of enterprise data source A, and then navigate to the webpage of enterprise data source B and so forth. In this way the user selects an enterprise data sources 102 to interact with provided that the enterprise data sources 102 permits anonymous communication.
- one of the chatbots 2202 for that enterprise data source can handle the communication on an anonymous basis in instances where the chatbot 2202 permits anonymous communication.
- some enterprise data sources 102 permit anonymous communication and some do not permit anonymous communication.
- the communication channel itself provides to the integration component enough identifying information on create a new user account (e.g., to uniquely identify a user) so that the user can be assigned a user identifier and be properly tracked as a known registered user within the secure mobile communications platform. Regardless of whether the user is identified or not, such embodiments allow communication with interested users of clients 104 and enterprise data sources 102 to occur.
- a nondefault client side communications module 204 -C when a user is using a nondefault client side communications module 204 -C the user can't open up multiple primary communication channels 210 with multiple different enterprise data sources 102 through a single client side application.
- Such functionality typically requires the default client side communications module.
- the user on the client 104 side using a nondefault client side communications module would have to navigate from the page for one enterprise data source 102 to the next until arriving at an enterprise data source 102 that the user wants to interact with.
- the user may be steered to a default client side communications module 204 that allows the user to open up a plurality of primary communications channels with a plurality of enterprise data sources 102 .
- the support for nondefault client side communications modules and the support for anonymous users provides enterprise data sources 102 an advantageous degree of flexibility to incorporate the functionality of the secure mobile communications platform into whatever framework they already have working for themselves, and build from there, rather than start from ground zero with an exclusive requirement that all users be declared (e.g., have a user identifier) and/or use the default client side communications module 204 -C.
- the remote user device includes a client side communications module for sending and receiving communications and an identity of the client side communications module is determined within a conversation 2220 .
- a transformation layer 317 is invoked that translates messages from a chatbot 2202 to a user associated with a client device 104 to a format associated with the client side communications module prior to routing the message to the remote user device within the conversation.
- the client side communications module is determined to be a second type of client side communications module, messages from a chatbot 2202 to a user associated with a client device 104 within the conversation 2220 are sent to the remote user device without translating the messages to a format associated with the client side communications module.
- the client side communications module is determined to be the first type of client side communications module, and the invoking the transformation layer 317 translates a message from the chatbot 2202 to a JSON file that is routed as the message from the chatbot to the user associated with a remote user device 104 .
- the client side communications module is determined to be the first type of client side communications module, a message from a chatbot 2202 in the conversation 2220 comprises one or more objects in other than ASCII format, and the invoking the transformation layer 317 translates an object in the one or more objects to ASCII format prior to the message being routed from the chatbot to the remote user device.
- the transformation layer 317 includes a lookup table that provides a translation schedule for each object in a plurality of objects, for each type of client side communications module in a plurality of types of client side communications module.
- the client side communications module is determined to be the first type of client side communications module
- a message from the chatbot 2202 in the conversation 2220 comprises one or more objects in other than ASCII format
- the invoking the transformation layer 317 translates an object in the one or more objects to another format prior to the message being routed from the chatbot to the remote user device in accordance with the lookup table.
- the systems and methods of the present disclosure provide chatbots 2208 that are able to facilitate conversations with end users on behalf of enterprise data sources 102 .
- an enterprise data source 102 has invested time in developing a customer relationship management (CRM) tool using a third party vendor such as SALESFORCE.
- CRM customer relationship management
- SALESFORCE third party vendor
- the systems and methods of the present disclosure allow for the integration of such CRM tools.
- the enterprise source side communications module 204 -E interfaces with a third party customer relationship management application 105 to route logic within conversations 2220 and handle communication between the third party CRM application 105 and users. This enables the chatbots 2202 associated with such enterprise data sources 102 to continue to use their existing third party customer relationship management applications, while leveraging the messaging and intelligent automation afforded by the chatbots 2202 of the present disclosure.
- a routing process is invoked.
- multiple live agents log in and receive incoming chat requests from users.
- server side communications module 204 -S supports this plurality of chat requests using a round robin solution.
- an enterprise data source 102 does not want to use the native solution provided by the service side communications module 204 -S, but rather wants to use the solution for servicing the requests that it has already developed with a third party customer relationship management application 105 such as those provided by SALESFORCE, SAP, and ORACLE, to name a few such vendors.
- a third party customer relationship management application 105 such as those provided by SALESFORCE, SAP, and ORACLE, to name a few such vendors.
- the secure mobile communications platform 200 affords the enterprise data source 102 with the choice to select the native CRM capabilities of the server side communications module 204 -S or the third party customer relationship management application 105 whether that be ORACLE, or SAP or SALESFORCE, or some other vendor.
- an enterprise data source 102 may have already trained two to three hundred support agents, field agents, to use, for example, the same source, their live agent chat widget that is part of an overall third party customer relationship management application 105 .
- the enterprise data source 102 will want to integrate this investment into the secure mobile communications platform 200 but retain the existing CRM solution.
- the server side communications module 204 -S exactly replaces the enterprise data source's 102 existing third party customer relationship management application 105 user interface as part of an integration approach.
- the third party customer relationship management application 105 is interfaced with the service side communications module 204 -S such that messages originating from a chatbot 2202 or a live agent in a conversation 2220 in a sub-channel 212 comes from the enterprise data source 102 , through the secure mobile communications platform 200 , and are connected right up to the point of an outer layer of the third party CRM application 105 .
- the messages in the conversation are routed to the third party customer relationship management application 105 instead of, or in addition to, being routed by the server side communications module 204 -S.
- the server side communications module 204 -S connects directly into the SALESFORCE routing mechanism and then, from there, anything upward that the enterprise data source 102 is already using in terms of the third party CRM application 104 , whether it be SALESFORCE Live Agent, Live Agent Supervisor, or any other tools, is the same.
- the primary communication channel 210 channel is preserved. That is, conversations 2220 within a particular primary communication channel 210 stay within their primary channel 210 .
- conversations 2220 within a particular sub-channel 212 stay within their sub-channel 212 by enforcement of the requirement that all messages in a conversation include a user identifier 218 .
- the chatbot 2202 messages within conversations 2220 are streamed in real time to the third party customer relationship management application 105 thereby enabling an open connection between the end user is having a conversation 2220 and the third party customer relationship management application 105 .
- a CRM interface module 205 is included within the server side communications module 204 -S ( FIG. 2 ) that allows for the asynchronous messaging connection into third party customer relationship management application 105 .
- the CRM interface module 205 checks on a recurring basis to see whether the third party CRM application 105 has sent a communication back to the secure mobile communications platform 200 .
- the CRM interface module 205 obtains the communication and places it in the correct conversation 2220 . If the third party CRM application 105 has not sent a communication, the check is made and no action is taken. In this way, the third party CRM application 105 is integrated into the secure mobile communications platform 200 . And then, all of the routing, however it is set up, the logic that the enterprise data source 102 has set up in the third party CRM application 105 operates as is. Such embodiments blend the capability of the third party CRM application 105 with the capability of the secure mobile communications platform 200 .
- the enterprise data source 102 use the webchat functionality afforded by the disclosed chatbots 2202 because of their advanced functionality that is not found in conventional third party CRM applications 105 .
- the enterprise data source 102 replaces the third party CRM application 105 webchat with that afforded by the disclosed chatbots 2202 so that the chatbots 2202 handle user messages whereas the third party CRM application 105 is used to handle the live agent tasks in the way that has been traditionally done by the enterprise data source's 102 existing tools within the third party CRM application 105 .
- each messages handled by the secure mobile communications platform 200 has a) a key identifying a first sub-channel 212 in the one or more pre-existing sub-channels and (b) an application programming interface token identifying the first user.
- some of these messages are passed to the third party CRM application 105 .
- an identifier is provided for each such message so that any return messages from the CRM application are routed to the correct application.
- the identifier is a) a key identifying a sub-channel 212 in the one or more pre-existing sub-channels (e.g., API key 310 ) and (b) the application programming interface token 396 identifying the first user associated with the message.
- the identifier is a conversation identifier.
- the CRM interface module 205 includes a lookup table that is used to assign a new identifier to such messages when the third party CRM application 105 requires the identifiers to be in a certain format. In such embodiments, when the CRM application 105 provides response messages, the CRM interface module 205 uses the lookup table to determine which conversation 2220 the response message is to be posted to.
- the message identifiers form the basis for a unique channel for each conversation thread that is passed to the third party CRM application 105 .
- the third party CRM application 105 uses the message identifiers for its own routing purposes.
- the CRM interface module 205 uses these message identifiers as discrete channels that it pings against on a recurring basis to look for response messages from the third party CRM application 105 to post back to the appropriate conversations 2220 .
- the CRM interface module 205 looks to see if there are responsive messages, and it puts the requisite identifiers (e.g., the API key 310 identifying a first sub-channel 212 in the one or more pre-existing sub-channels and the application programming interface token 396 identifying the first user) on the responsive messages so that the messages are routed into the correct conversations 2220 .
- the routing within the third party CRM application 105 is preserved in such embodiments. That is, whatever logic the third party CRM application 105 has to route messages to certain agents, but not others, is preserved.
- the secure mobile communications platform 200 will send messages into SALESFORCE.
- the CRM interface module 205 operating within the secure mobile communications platform 200 will have an identifier for the specific conversation 2220 of such messages that it maintains so that whatever agent picks up the conversation 2220 within the third party CRM application 105 , the CRM interface module 205 has a channel that it can poll on a recurring basis to see if any agents have responded.
- the identifier is used to send the responsive message right back to the correct conversation 2220 .
- the CRM interface module 205 knows that an agent associated with the third party CRM application 105 has posted a responsive message is because the response message includes an identifier.
- the CRM interface module 205 opens a channel for each conversation 2220 passed to the third party CRM application 105 . This retains the integrity between the conversation 2220 and the third party CRM application 105 . The third party CRM application 105 must retain the integrity of this channel using the identifier so that response messages are routed to the correct conversation 2220 .
- the CRM interface module 205 pings on a recurring basis against the identifier to see if the third party CRM 105 has responded.
- responsive messages passed back by the third party CRM 105 include objects rather than just simple text.
- such objects are embedded in JSON format.
- such objects encode messages, affordances, HTML, or other logic.
- the CRM interface module 205 includes a special lookup table in order to understand how such objects are to be processed and posted to the associated conversation.
- additional parameters are passed (e.g., topic indicators or codes, right, that help the routing process within the third party CRM application 105 ).
- the user conversation history 2224 is passed on to the third party CRM application 105 the first time the CRM interface module interfaces with the third party CRM application 105 for that conversation.
- the CRM interface module 205 does not need to repost the conversation history 2224 to the third party CRM application 105 because the third party CRM application already has the conversation history 2224 from the first time that that the CRM interface module 205 posted to the third party CRM application 105 . In this way, a live agent working with the third party CRM application 105 opening up the message from the mobile communications platform 200 would see the previous the conversation 2220 up to date within their own user interface.
- the use of the CRM interface module 205 in the ways detailed in the present disclosure afford the enterprise data source 102 with the ability to preserve their third party CRM investment.
- the secure mobile communications platform serves as the middleware for messaging.
- the enterprise data source 102 can retain its third party CRM capability while at the same time taking advantage of all the functionality of the present disclosure including but not limited to the functionality of the chatbots 2202 , their reduced volume, very specific end-user secure connection that the platform 200 provides out of the box, the efficiency from the chatbots 2202 , the overall security and storability of the messaging platform 200 and the encryption.
- the enterprise data source 102 is associated with a customer relationship application 105 on a server computer associated with the enterprise data source 102 .
- the routing of a message from a chatbot 2202 in a conversation 2220 to a user within a sub-channel 212 comprises routing the message to the customer relationship application 105 within a secure bidirectional conversation 2220 .
- the secure bidirectional conversation comprises a conversation history 2224 and the routing the message from the chatbot 2202 to the customer relationship application 105 includes the conversation history and the application programming interface token (e.g., API access token 396 ) identifying the user of the device 104 participating in the conversation.
- the application programming interface token e.g., API access token 396
- the application programming interface token identifying the first user is used to poll the customer relationship application 105 on a recurring basis for a response by the customer relationship application to a message from a chatbot 2202 in a conversation 2220 , and responsive to receiving the response to the message, using the application programming interface token to route the response to the message to the chatbot 2202 or a node within the chatbot in the conversation 2220 .
- the methods and systems of the communications module of the present disclosure include a Natural Language Understanding (NLU) component (e.g., decision module 2203 - 1 - 1 - 1 of FIG. 22 ) for navigating nodes (e.g., the node 2210 - 1 - 1 - 1 - 1 and node 2210 - 1 - 1 - 1 - 2 in FIG. 22 ) within a primary communication channel (e.g., primary communication channel 210 - 1 in FIG. 22 ).
- NLU Natural Language Understanding
- the nodes are associated with one or more automated human interface modules (e.g., the automated human interface modules 2202 - 1 - 1 - 1 and 22002 - 1 - 1 - 2 in FIG. 22 , i.e., “chatbots”).
- NLU applies machine learning techniques to train an algorithm using user utterances to return best matching predefined intents for user's text inputs. See Bhasin, and Bhatia, 2011, “Application of Genetic Algorithms in Machine Learning, International Journal of Computer Science and Information Technologies 2, 2412-2415; Mitchell, 1997, Machine Learning, McGraw-Hill, each is which is hereby incorporated by reference.
- NLU is used to understand users' intent and direct users to a resolution by matching the user's message with a node within a primary communication channel.
- a user may start a chatbot on a primary channel user interface (e.g., a user interface illustrated in FIG. 30 for primary channel 210 for Zagat) by sending a message, such as “I cannot remember my password” or “What is the best restaurant near me?”
- the message is processed using NLU in order to understand the intent of the message, and the message is further send to a node that best matches with the content of the message.
- FIGS. 29A-29D illustrate flow charts of processes and features of a system including the NLU component described here, and with further reference to FIG. 22 , in accordance with an embodiment of the present disclosure.
- Block 2900 One aspect of the present disclosure provides a method performed at a secure mobile communication platform (e.g., server system 102 ) comprising one or more processors and memory in which a first user is joined to a primary communication channel 210 that is associated with an automated human interface module 2202 (e.g., a chatbot).
- the automated human interface module 2202 includes a plurality of nodes 2210 .
- the primary communication channel 210 facilitates electronic communication between a corresponding enterprise data source and a remote user device associated with the first user. For example, as illustrated in FIG.
- the communications module 204 -C operating on the remote user device 104 renders a graphical communications interface 3000 , for example, in an electronic mail (email) layout on the remote user device 104 for enabling bidirectional communication of messages and content between the user and the enterprise data source 102 in real time through the primary channel 210 “ZAGAT.”
- the content includes, for example, one or more messages (e.g., messages 3002 - 1 and 3002 - 2 of FIG. 30A ).
- the primary channel 210 is associated with a plurality of nodes 2210 ( FIG. 22 ).
- a first message posted by the first user is received at the secure mobile communication platform.
- the first message includes a first text communication.
- the message 3002 - 1 posted by a user is received in FIG. 30A .
- the message includes a text communication stating “I forgot my password.”
- the text communication could alternatively state, e.g., “Can you reset my password?”, “How do I get a new password?”, or “Can't login into your site!”
- Such text communications all correspond to user's intent of asking about “password reset.”
- the first text message is sent to a decision module 2203 ( FIG. 22 ) associated with a plurality of classifiers.
- the decision module is included in the platform 200 described with respect to FIG. 22 .
- the message 3002 - 1 “I forgot my password” in FIG. 30A is sent to the decision module 22203 .
- the decision module is configured to identify a first node within the plurality of nodes (e.g., any of the nodes 2211 - 1 - 1 - 1 - 1 , 2211 - 1 - 1 - 2 , 2211 - 1 - 1 - 1 - 3 , 2211 - 1 - 1 - 1 - 4 , 2211 - 1 - 1 -K described with respect to FIG. 12 ).
- the first node is a node that best matches with the first text communication in accordance with the plurality of classifiers.
- the plurality of classifiers includes two or more classifiers (Block 2906 ).
- the plurality of classifiers includes six classifiers (Block 2908 ).
- the classifiers are derived from machine learning techniques known in the art.
- each classifier in the plurality of classifiers is independently selected from the group consisting of: Na ⁇ ve Bayes, decision tree, logistic regression, support vector machine, random forest, and artificial neural network (Block 2910 ).
- a classifier in the plurality of classifiers is a support vector machine, a clustering algorithm, a neural network, a decision tree, a logistic regression, a linear regression module, or a k-nearest neighbor classifier (Block 2912 ).
- the plurality of classifiers includes other machine learning techniques known in the art applicable to the NLU.
- each respective classifier of the plurality of classifiers processes the first communication thereby producing a respective classifier result for each respective classifier of the plurality of classifiers, thereby producing a plurality of classifier results.
- Each respective classifier result of the plurality of classifier results identifies a respective node of the plurality of nodes that best matches with the first text communication in accordance with a corresponding classifier in the plurality of classifiers.
- the plurality of classifiers includes six classifiers each producing a respective classifier result, collectively resulting in six classifier results.
- processing the first text communication includes processing the first text communication to (a) identify one or more named entities in the first text communication and (b) identify one or more intents in the first text communication (Block 2916 ). Named entities correspond to proper nouns or noun phrases.
- message 3002 - 1 “I forgot my password” includes the noun “password.”
- the noun can be a product type (e.g., diapers, air freshener, detergent, etc.), a product name (e.g., PAMPERS®, FEBREZE®, TIDE®, etc.), a place (e.g., restaurant, fast food, grocery store, movie theater, etc.), or any other noun (e.g., price, sales, coupons, reviews, etc.).
- Intents correspond to verbs or verb phrases (e.g., buy, get price, where to buy, get coupon, find store, give suggestion, etc.).
- the one or more named entities are identified first and the one or more intents are identified second.
- the NLU of the decision module includes a plurality of algorithms for different languages, and the NLU can create models based on the training date so that the decision module understands and responds to different languages.
- the chatbots are trained in utterances of languages, so that the NLU creates models to understand word usage in respective languages, different dialects and/or accents of respective languages, and spoken language styles as well as written language styles.
- processing the first text communication includes processing the first text communication for identifying a language of the first text communication in a set of languages (Block 2918 ). For example, the message 3002 - 1 “I forgot my password” is processed to identify that the language of the first text communication is English.
- the message 3002 - 1 includes text communication stating “J'aiERT mon mot de passes,” in which case the message 3002 - 1 is processed to identify that the language of the first text communication is French.
- the language is identified from a predetermined group of languages (e.g., a group including 2, 4, 6, 8, 10, etc., languages).
- a language dialect and/or accent is identified among a group of dialects and/or accents (e.g., a group including American English, Australian English, and British English.)
- processing the first text communication involves processing the first text communication in accordance with a decision tree including two or more steps (e.g., a tree including 2, 3, 4, 5, or more steps).
- processing the first text communication includes a first processing step.
- the first step includes processing the first text communication with reach respective classifier of a first subset of the plurality classifiers (Block 2922 ). For example, the message 3002 - 1 “I forgot my password” is first processed by two out of six classifiers (e.g., by Na ⁇ ve Bayes and decision tree classifiers).
- Each respective classifier of the subset of the plurality of classifiers produces a respective first classifier result, thereby producing a first subset of the plurality of first classifier results (Block 2924 ).
- the first subset of the plurality of first classifier results includes two classifier results produced by the two respective classifiers.
- the second subset of the respective second classifier results is collectively considered with the decision module (Block 2926 ).
- a first parameter associated with the first text communication is identified (Block 2928 ).
- the first parameter includes language of the first text message (e.g., English or French), as described above with respect to Block 2918 .
- the first parameter includes a characteristic of the first text communication, such as an identified named entity or an intent, as described above with respect to Block 2916 .
- the first parameter includes an identified node.
- the first subset of the plurality of classifiers includes machine learning techniques that are known to produce a result fast, and therefore provide an indication of the possible node best matching with the message.
- the machine learning techniques of the first subset of the plurality of classifiers are not considered the most reliable techniques, and the results need to be further confirmed by processing with further classifiers.
- processing the first text communication further includes a second processing step.
- the first text communication is processed with each respective classifier of a second subset of the plurality of classifiers in accordance with the first parameter associated with the first text communication (Block 2932 ).
- the first parameter includes the identified language (e.g., English) of the first text communication, and therefore the first text communication is processed with each respective classifier of the second subset of the plurality of classifiers so that the classifiers use algorithms specific for the identified language of the first text communication.
- the first parameter includes an identified named entity (e.g., the word “password”)
- the first text communication is processed with each respective classifier of the second subset of the plurality classifiers so that the classifiers use the identified named entity as an input parameter.
- Each respective classifier of the second subset of the plurality of classifiers produces a respective second classifier results, thereby producing a second subset of the plurality of second classifier results (Block 2934 ).
- the decision module then collectively considers the second subset of the respective second classifier results (Block 2936 ). Based on the collectively considering the second subset of the respective second classifier results, the first node within the plurality of nodes is identified (Block 2938 ).
- the method includes collectively considering, with the decision module, the plurality of classifier results thereby identifying the first node within the plurality of nodes.
- the collectively considering includes determining a majority vote among the plurality of classifier results (Block 2942 ). For example, out of six classifier results obtained, four have identified “Technical Support” to be the best matching node for the message 3002 - 1 “I forgot my password” and two have identified some other node to be the best matching node. In such instances, the node “Technical Support” is identified as the first node.
- the collectively considering includes determining a weighed vote among the plurality of classifier results (Block 2944 ).
- one or more classifier among the plurality of classifiers are expected to produce more reliable classifier result than the other classifiers.
- the one or more classifiers expected to produce the more reliable results are given more weight than the other classifiers.
- the first message comprising the first text communication is sent to the first node of the plurality of nodes.
- the message 3002 - 1 “I forgot my password” is sent to the node “Technical Support.”
- Block 2948 after the first message comprising the first text communication is sent to the first node of the plurality of nodes, the automated human interface module prepares a second message responsive to the first message.
- the second message posted by the automated human interface module is received at the server.
- the second message includes a second communication responsive to the first message (Block 2950 ).
- the second message is sent to the first user (Block 2952 ).
- the automated human interface prepares the message 3002 - 2 “One Moment, please. We will reset your password” in response to the message 3002 - 1 and the message 3002 - 2 is received at the server and sent to the first user.
- the first user has received the responding second message that responds to the first message.
- the automated human interface module in addition to sending the second message, presents to the user one or more labels associated with the second message.
- the automated human interface module if the user asks a question that has a potentially known answer (e.g., a named entity), the automated human interface module presents the user with related labels.
- the labels include one or more carousel cards with full product graphics, logos, names, and/or other pertinent information. A user may proceed to review the full content of the labels by clicking on the labels, and proceed with, e.g., purchasing a product. Such labels may provide a user a faster and more efficient customer experience. For example, in FIG.
- the communications module 204 -C operating on remote user device 104 renders the graphical communications interface 3004 for enabling bidirectional communication of messages and content between the user and the enterprise data source 102 in real time through the primary channel 210 “Target.”
- the server receives the message 3002 - 3 “Do you sell infant diapers?” posted by a first user.
- the message 3002 - 3 is processed by NLU (e.g., the decision module 2203 of FIG. 22 ) with the methods described above with respect to FIGS.
- the human interface module presents the user one or more labels associated with the response message.
- the human interface module has presented the user two cards labeled 3006 - 1 “PAMPERS®” and 3006 - 2 “LUVS®.”
- the cards include product graphics, logos, names, and/or other pertinent information (e.g., price, or size).
- the graphical communications interface 3004 allows user to touch the cards in order to move to the next step, in order to, e.g., review product information and make a purchase.
- the present invention can be implemented as a computer program product that comprises a computer program mechanism embedded in a nontransitory computer readable storage medium.
- the computer program product could contain the program modules shown in any combination of FIGS. 1, 2, 3, 4, 6, 16, 21, 22, 23, and 27 .
- These program modules can be stored on a CD-ROM, DVD, magnetic disk storage product, or any other non-transitory computer readable data or program storage product.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
-
- an operating system 202 (e.g., iOS, DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS, ANDROID, or an embedded operating system such as VxWorks) that includes procedures for handling various basic system services;
- a communications module 204-S for supporting bidirectional secure communication between the secure
mobile communications platform 200,enterprise data sources 102 andremote user devices 104; - a
catalog module 206 that provide enterprises data sourcedescriptions 208 of theenterprises data sources 102 that are available to users of theremote user devices 104, including for each respective enterprise data source the associatedprimary communication channel 210 andoptional sub-channels 212; - an active
user data store 214 that tracks the current active users 216 of the secure mobile communications platform, including for each such user aunique identifier 218, and their active primary communication channels 220 andoptional sub-channels 212, and in some embodiments, the conversation identifiers of the conversations of the active users; - a
user profile database 224 that stores a user profile for each user; and - an optional
electronic file cabinet 226 which stores attachments sent to users.
-
- an operating system 372 (e.g., iOS, DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks) that includes procedures for handling various basic system services;
- a communications module 204-E for supporting bidirectional secure communication between the secure
mobile communications platform 200,enterprise data sources 102 and end users associated withremote user devices 104, the communications module 204-E optionally including a customer relationship management (CRM)interface module 205 as further described below; - a
primary communication channel 210 associated with the enterprise data source that includes a unique enterprisedata source identifier 374, aname 376, one or moresuper administrators 378, one or more primarycommunication channel administrators 380, a primarycommunication channel name 382, a primarycommunication channel description 384, an application programminginterface access token 386, an applicationprograming interface key 388, and optionally one ormore sub-channels 212, each optional sub-channel including enumeration of sub-channel administrators(s) 392, a sub-channel unique identifier 394, an API access token 396, an API key 398, a sub-channel name 310, a sub-channel description 312, an identity of a parent channel 314 to the sub-channel 212, an identification of one or more daughter channels 316 to the sub-channel 212, and one or more transformation layers 317 (whereFIG. 3 shows one such transformation layer); and - a listing of a plurality of end users of the enterprises data source 318, including for each such
respective end user 320, a user identifier 322, an end user name 324, and an identification of each conversation 2220 (e.g., seeFIG. 22 for example additional disclosure on conversations) the end user is participating in.
-
- an operating system 473 (e.g., iOS, DARWIN, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks) that includes procedures for handling various basic system services;
- a communications module 204-C for supporting bidirectional secure communication between the secure
mobile communications platform 200,enterprise data sources 102 andremote user devices 104; - an
end user identifier 218 that uniquely identifies a user; and - one or more
primary communication channels 210 that the end user is participating in, and for each suchprimary channel 210, a unique enterprisedata source identifier 374, enterprisedata source name 376, a primarycommunication channel name 382, a primarycommunication channel description 384, an application programminginterface access token 386, an applicationprograming interface key 388, and optionally one ormore sub-channels 212 that the end user is participating in, each such sub-channel (or the primary communication channel including an identifier of the conversation 2220 that the end user is participating in and in those embodiments where sub-channels are used, a sub-channel unique identifier 394, an API access token 396, an API key 398, a sub-channel name 310, and/or a sub-channel description 312.
-
- assigning a single or multiple automated human interface modules 2202 (with
sub-channel 212 level automated human interface module 2202 auto assignment) to a single sub-channel, - assigning a single third party bot to the
single sub-channel 212, - assigning a combination of native automated human interface modules 2202 and third party bots (with
sub-channel 212 level automated human interface module auto assignment) to the single sub-channel, or - assigning single or multiple automated human interface modules 2202 (with auto assign) and connection to third party bots from within an automated human interface module 2202; e.g. a given node 2210 with an automated human interface module 2202 can transfer a conversation to a third party bot or to another (native) automated human interface module 2202.
- assigning a single or multiple automated human interface modules 2202 (with
-
- module 2202-1 expression tags 2204: tomatoes, squash
- module 2202-1 expression tags 2204: broccoli, green beans, swiss chard
The direct session assessment mode is configured to present the following options: - Tomatoes (module 2202-1)
- Squash (module 2202-1)
- Broccoli (module 2202-2)
- Green Beans (module 2202-1)
- [Other] (fallback option; sends user to live chat or ‘default module 2202)
-
- automated human interface module 2202-1 has the tag 2204-1 “oranges”
- automated human interface module 2202-2 has the tag 2204-2 “apples”
- automated human interface module 2202-3 has the tag 2204-3 “kiwis”
In this example, the sub-channel 212 would respond to the user “Which topic would you prefer to discuss first?” (oranges) (apples). Note, in the case of multiple, but unequal matches the request back to the end user would be, for example “Which topic would you prefer to discuss first?” (oranges and pineapples) (apples) (kiwis).
-
- (Submit a new claim) (Check claim status)
This reflects natural conversational response and will on average result in a more streamlined resolution and better user experience, compared to the chat bot always automatically selecting the most highly matched option. Thus, in some embodiments, each node in the plurality of nodes of a bot is associated with a different plurality of tags as illustrated inFIG. 22 . One of the bot nodes in the bot node graph is a disambiguation node. A message from the end user is received by the bot that includes a communication that is free form input from the end user. The disambiguation node executes a process that evaluates the communication against each tag in each different plurality of tags associated with a node in the plurality of nodes of the bot, thereby obtaining one or more tags that match the communication. When the one or more matches is a single match, the disambiguation node passes the conversation to the node in the plurality of nodes that is associated with the matching tag. On the other hand, when the one or more matches is a plurality of matching tags, the disambiguation node offers the end user a plurality of options for proceeding with the conversation, where each option in the plurality of options is associated with a node in the plurality of nodes that is associated with a tag in the plurality of matching tags.
- (Submit a new claim) (Check claim status)
-
- hyperspace function: “I can transition our chat to topic “Submit a claim””
- Button options: (Transition chat) (Return to current chat) (Help menu) (New chat) (End chat) (Live Agent)
-
- hyperspace function: “I can transition our chat to one of the following topics: “Orange Salamanders”, “Orange Frogs” “Orange Snakes”
- Button options: (Orange Salamanders) (Orange Frogs) (Orange Snakes) . . . (End Chat) (Live Agent)
Claims (20)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/876,378 US11102155B2 (en) | 2015-03-25 | 2020-05-18 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US17/408,033 US11533281B2 (en) | 2015-03-25 | 2021-08-20 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/066,623 US12034682B2 (en) | 2015-03-25 | 2022-12-15 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/676,125 US20240406127A1 (en) | 2015-03-25 | 2024-05-28 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562137843P | 2015-03-25 | 2015-03-25 | |
US201562264850P | 2015-12-08 | 2015-12-08 | |
US201562265988P | 2015-12-11 | 2015-12-11 | |
US15/081,766 US9450901B1 (en) | 2015-03-25 | 2016-03-25 | Channel based communication and transaction system |
US15/269,697 US9641470B2 (en) | 2015-03-25 | 2016-09-19 | Channel based communication and transaction system |
US201662407873P | 2016-10-13 | 2016-10-13 | |
US15/294,368 US9647968B2 (en) | 2015-03-25 | 2016-10-14 | Systems and methods for invoking chatbots in a channel based communication system |
US15/452,486 US10187337B2 (en) | 2015-03-25 | 2017-03-07 | Systems and methods for invoking chatbots in a channel based communication system |
US15/919,987 US10659403B2 (en) | 2015-03-25 | 2018-03-13 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US16/876,378 US11102155B2 (en) | 2015-03-25 | 2020-05-18 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/919,987 Continuation US10659403B2 (en) | 2015-03-25 | 2018-03-13 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/408,033 Continuation US11533281B2 (en) | 2015-03-25 | 2021-08-20 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US17/408,033 Continuation-In-Part US11533281B2 (en) | 2015-03-25 | 2021-08-20 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Publications (2)
Publication Number | Publication Date |
---|---|
US20200351227A1 US20200351227A1 (en) | 2020-11-05 |
US11102155B2 true US11102155B2 (en) | 2021-08-24 |
Family
ID=62907282
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/919,987 Active US10659403B2 (en) | 2015-03-25 | 2018-03-13 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US16/876,378 Active US11102155B2 (en) | 2015-03-25 | 2020-05-18 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US17/408,033 Active US11533281B2 (en) | 2015-03-25 | 2021-08-20 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/066,623 Active US12034682B2 (en) | 2015-03-25 | 2022-12-15 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/676,125 Pending US20240406127A1 (en) | 2015-03-25 | 2024-05-28 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/919,987 Active US10659403B2 (en) | 2015-03-25 | 2018-03-13 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/408,033 Active US11533281B2 (en) | 2015-03-25 | 2021-08-20 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/066,623 Active US12034682B2 (en) | 2015-03-25 | 2022-12-15 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
US18/676,125 Pending US20240406127A1 (en) | 2015-03-25 | 2024-05-28 | Systems and methods for navigating nodes in channel based chatbots using natural language understanding |
Country Status (1)
Country | Link |
---|---|
US (5) | US10659403B2 (en) |
Families Citing this family (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11012568B2 (en) * | 2009-01-28 | 2021-05-18 | Virtual Hold Technology Solutions, Llc | System and method for providing chat-based customer callbacks |
US20230199119A1 (en) * | 2009-01-28 | 2023-06-22 | Virtual Hold Technology Solutions, Llc | System and method for providing chat-based customer callbacks |
US9634855B2 (en) | 2010-05-13 | 2017-04-25 | Alexander Poltorak | Electronic personal interactive device that determines topics of interest using a conversational agent |
US10601745B2 (en) | 2015-03-25 | 2020-03-24 | Pypestream Inc. | Systems and methods for channel based communication and engagement through advertising units |
US10200369B1 (en) * | 2016-02-16 | 2019-02-05 | Symantec Corporation | Systems and methods for dynamically validating remote requests within enterprise networks |
US10681182B1 (en) * | 2016-04-06 | 2020-06-09 | Uipco, Llc | Multi-device work flow management method and system for managing work flow data collection for users across a diverse set of devices and processes by unifying the work process to be data and device agnostic |
KR101731867B1 (en) * | 2016-08-16 | 2017-05-04 | 주식회사 엔터플 | Method and apparatus for sharing user event between chatbots |
FR3057080A1 (en) * | 2016-09-30 | 2018-04-06 | Orange | METHOD OF RETURNING A PLURALITY OF EXCHANGED MESSAGES WITH A CONVERSATIONAL AGENT |
US10902147B2 (en) * | 2016-11-04 | 2021-01-26 | Intellisist, Inc. | System and method for performing screen capture-based sensitive information protection within a call center environment |
US10853430B1 (en) * | 2016-11-14 | 2020-12-01 | American Innovative Applications Corporation | Automated agent search engine |
US10685047B1 (en) * | 2016-12-08 | 2020-06-16 | Townsend Street Labs, Inc. | Request processing system |
US11381527B2 (en) * | 2016-12-15 | 2022-07-05 | Huawei Technologies Co., Ltd. | Information prompt method and apparatus |
US20180217971A1 (en) * | 2017-01-27 | 2018-08-02 | Saeid Safavi | Method and Apparatus for Efficient Creation and Secure Transfer of User Data Including E-Forms |
US10503908B1 (en) * | 2017-04-04 | 2019-12-10 | Kenna Security, Inc. | Vulnerability assessment based on machine inference |
US10666581B2 (en) * | 2017-04-26 | 2020-05-26 | Google Llc | Instantiation of dialog process at a particular child node state |
US11126920B2 (en) * | 2017-05-12 | 2021-09-21 | Fujitsu Limited | Interaction scenario display control method and information processing apparatus |
US10817483B1 (en) | 2017-05-31 | 2020-10-27 | Townsend Street Labs, Inc. | System for determining and modifying deprecated data entries |
US10917483B2 (en) * | 2017-06-22 | 2021-02-09 | Numberai, Inc. | Automated communication-based intelligence engine |
US12118576B2 (en) * | 2017-07-12 | 2024-10-15 | Qualtrics, Llc | Distributing electronic surveys through a messenger platform |
US10771529B1 (en) * | 2017-08-04 | 2020-09-08 | Grammarly, Inc. | Artificial intelligence communication assistance for augmenting a transmitted communication |
EP3451175A1 (en) * | 2017-08-31 | 2019-03-06 | Entit Software LLC | Chatbot version comparision |
US10951558B2 (en) * | 2017-09-27 | 2021-03-16 | Slack Technologies, Inc. | Validating application dialog associated with a triggering event identification within user interaction data received via a group-based communication interface |
US10951552B2 (en) * | 2017-10-30 | 2021-03-16 | International Business Machines Corporation | Generation of a chatbot interface for an application programming interface |
GB2569335B (en) * | 2017-12-13 | 2022-07-27 | Sage Global Services Ltd | Chatbot system |
US10771407B2 (en) * | 2017-12-29 | 2020-09-08 | Paypal, Inc. | Multi-level bot architecture for data access |
US10795886B1 (en) | 2018-03-30 | 2020-10-06 | Townsend Street Labs, Inc. | Dynamic query routing system |
US11030412B2 (en) * | 2018-04-10 | 2021-06-08 | Verizon Patent And Licensing Inc. | System and method for chatbot conversation construction and management |
US11018997B2 (en) | 2018-04-12 | 2021-05-25 | Disney Enterprises, Inc. | Systems and methods for maintaining a conversation |
US10594635B2 (en) * | 2018-04-20 | 2020-03-17 | Oracle International Corporation | Managing customer relationship using multiple chat servers designed to interface with service applications |
US11170161B2 (en) * | 2018-05-11 | 2021-11-09 | Citrix Systems, Inc. | Generating conversation models from documents |
EP3576084B1 (en) * | 2018-05-29 | 2020-09-30 | Christoph Neumann | Efficient dialog design |
US10805386B2 (en) * | 2018-07-25 | 2020-10-13 | Slack Technologies, Inc. | Reducing transmissions by suggesting digital content for display in a group-based communication interface |
US11244233B2 (en) * | 2018-08-29 | 2022-02-08 | Accenture Global Solutions Limited | Intelligent adaptor service in unified automation platforms for robotic process automation |
US10698745B2 (en) * | 2018-08-29 | 2020-06-30 | Accenture Global Solutions Limited | Adapter extension for inbound messages from robotic automation platforms to unified automation platform |
US11461398B2 (en) | 2018-08-31 | 2022-10-04 | Accenture Global Solutions Limited | Information platform for a virtual assistant |
US10891950B2 (en) * | 2018-09-27 | 2021-01-12 | International Business Machines Corporation | Graph based prediction for next action in conversation flow |
EP3634018A1 (en) * | 2018-10-02 | 2020-04-08 | Siemens Aktiengesellschaft | System for data communication in a network of local devices |
US11120058B2 (en) | 2018-10-22 | 2021-09-14 | Adobe Inc. | Generating and providing stacked attribution breakdowns within a stacked attribution interface by applying attribution models to dimensions of a digital content campaign |
US11347781B2 (en) | 2018-10-22 | 2022-05-31 | Adobe Inc. | Dynamically generating attribution-model visualizations for display in attribution user interfaces |
US11140110B2 (en) * | 2018-10-26 | 2021-10-05 | International Business Machines Corporation | Adaptive dialog strategy for multi turn conversation systems using interaction sequences |
US11663501B2 (en) * | 2018-11-01 | 2023-05-30 | American Express Travel Related Services Company, Inc. | Information support system using artificial intelligence |
US11347809B2 (en) | 2018-11-13 | 2022-05-31 | Adobe Inc. | Performing attribution modeling for arbitrary analytics parameters |
US10970338B2 (en) * | 2018-11-13 | 2021-04-06 | Adobe Inc. | Performing query-time attribution channel modeling |
US11423422B2 (en) | 2018-11-13 | 2022-08-23 | Adobe Inc. | Performing query-time attribution modeling based on user-specified segments |
US10896034B2 (en) * | 2018-11-14 | 2021-01-19 | Babu Vinod | Methods and systems for automated screen display generation and configuration |
US11803556B1 (en) | 2018-12-10 | 2023-10-31 | Townsend Street Labs, Inc. | System for handling workplace queries using online learning to rank |
KR20200086856A (en) * | 2019-01-10 | 2020-07-20 | 최재호 | Apparatus and method of file sharing based on chat room |
US20200342462A1 (en) * | 2019-01-16 | 2020-10-29 | Directly Software, Inc. | Multi-level Clustering |
US11431664B2 (en) * | 2019-02-18 | 2022-08-30 | State Farm Mutual Automobile Insurance Company | Outbound dialer and messaging system and user interface for group messaging |
US11140102B1 (en) * | 2019-03-29 | 2021-10-05 | Verizon Media Inc. | Systems and methods for initiating communication between users based on machine learning techniques |
US11113475B2 (en) * | 2019-04-15 | 2021-09-07 | Accenture Global Solutions Limited | Chatbot generator platform |
US10679012B1 (en) * | 2019-04-18 | 2020-06-09 | Capital One Services, Llc | Techniques to add smart device information to machine learning for increased context |
US11637792B2 (en) * | 2019-04-19 | 2023-04-25 | Oracle International Corporation | Systems and methods for a metadata driven integration of chatbot systems into back-end application services |
US10997968B2 (en) * | 2019-04-30 | 2021-05-04 | Microsofttechnology Licensing, Llc | Using dialog context to improve language understanding |
US11030257B2 (en) * | 2019-05-20 | 2021-06-08 | Adobe Inc. | Automatically generating theme-based folders by clustering media items in a semantic space |
US11303587B2 (en) * | 2019-05-28 | 2022-04-12 | International Business Machines Corporation | Chatbot information processing |
US11695761B2 (en) * | 2019-06-04 | 2023-07-04 | ZPE Systems, Inc. | Secure access of remote device |
US10977058B2 (en) * | 2019-06-20 | 2021-04-13 | Sap Se | Generation of bots based on observed behavior |
US11321394B2 (en) * | 2019-06-24 | 2022-05-03 | Thatdot, Inc. | Graph processing system |
US11057320B2 (en) * | 2019-06-27 | 2021-07-06 | Walmart Apollo, Llc | Operation for multiple chat bots operation in organization |
US11871308B2 (en) * | 2019-07-29 | 2024-01-09 | TapText llc | System and method for link-initiated dynamic-mode communications |
US11532020B2 (en) * | 2020-01-20 | 2022-12-20 | Taptextllc | System and method for omnichannel text-based communication system utilizing an automated assistant |
US11087333B2 (en) * | 2019-07-30 | 2021-08-10 | Salesforce.Com, Inc. | Facilitating session-based read/write of context variables to share information across multiple microservices |
US10614800B1 (en) | 2019-08-19 | 2020-04-07 | Voicify, LLC | Development of voice and other interaction applications |
US10762890B1 (en) * | 2019-08-19 | 2020-09-01 | Voicify, LLC | Development of voice and other interaction applications |
US11508365B2 (en) | 2019-08-19 | 2022-11-22 | Voicify, LLC | Development of voice and other interaction applications |
US11271876B2 (en) * | 2019-08-22 | 2022-03-08 | Adobe Inc. | Utilizing a graph neural network to identify supporting text phrases and generate digital query responses |
US12265571B2 (en) * | 2019-09-02 | 2025-04-01 | Ozecom Pty Ltd | Text classification method |
US11531707B1 (en) | 2019-09-26 | 2022-12-20 | Okta, Inc. | Personalized search based on account attributes |
US11227583B2 (en) * | 2019-11-05 | 2022-01-18 | International Business Machines Corporation | Artificial intelligence voice response system having variable modes for interaction with user |
US11425245B2 (en) * | 2019-11-08 | 2022-08-23 | Salesforce, Inc. | Method and system for capturing data of actions |
US11275901B2 (en) * | 2019-12-03 | 2022-03-15 | International Business Machines Corporation | Context retrieval for chatbots |
EP3861461A1 (en) * | 2019-12-20 | 2021-08-11 | Google LLC | Providing a resilient application programming interface for geographic services |
EP4100864A4 (en) * | 2020-02-07 | 2024-03-06 | Royal Bank of Canada | System and method for conversational middleware platform |
US11582190B2 (en) * | 2020-02-10 | 2023-02-14 | Proofpoint, Inc. | Electronic message processing systems and methods |
US10841251B1 (en) * | 2020-02-11 | 2020-11-17 | Moveworks, Inc. | Multi-domain chatbot |
US11431658B2 (en) * | 2020-04-02 | 2022-08-30 | Paymentus Corporation | Systems and methods for aggregating user sessions for interactive transactions using virtual assistants |
WO2021205516A1 (en) * | 2020-04-06 | 2021-10-14 | 富士通株式会社 | Conversation control program, conversation control method, and information processing device |
EP3905148A1 (en) * | 2020-04-28 | 2021-11-03 | Directly, Inc. | Multi-level clustering |
EP3905149A1 (en) * | 2020-04-28 | 2021-11-03 | Directly, Inc. | Automated generation and maintenance of virtual agents |
US11146512B1 (en) * | 2020-05-12 | 2021-10-12 | ZenDesk, Inc. | Handing off customer-support conversations between a human agent and a bot without requiring code changes |
US11122165B1 (en) | 2020-05-29 | 2021-09-14 | Verizon Patent And Licensing Inc. | Systems and methods for customer service agent-guided chat session digital assistant |
CN114124415B (en) * | 2020-08-13 | 2023-05-12 | 腾讯科技(深圳)有限公司 | Information interaction method and device in target interaction application |
US11496575B2 (en) * | 2020-09-10 | 2022-11-08 | T-Mobile Usa, Inc. | Enhanced messaging as a platform |
US20220108413A1 (en) * | 2020-10-06 | 2022-04-07 | Convertsation Ed Inc. | Systems and Methods for Providing Civil Discourse as a Service |
US11930097B2 (en) | 2020-10-14 | 2024-03-12 | Ttec Holdings, Inc. | Integrated orchestration of intelligent systems |
CN114430378B (en) * | 2020-10-15 | 2023-08-18 | 中国移动通信集团浙江有限公司 | Anomaly detection method and device for chat robot, computing device and storage medium |
CA3139276A1 (en) * | 2020-11-16 | 2022-05-16 | Heyday Technologies Inc. | System and method for product searching based on natural language processing |
US12010116B2 (en) * | 2020-12-03 | 2024-06-11 | ZPE Systems, Inc. | Secure access of remote device |
US20220366905A1 (en) * | 2021-05-17 | 2022-11-17 | Google Llc | Enabling natural conversations for an automated assistant |
US20220398635A1 (en) * | 2021-05-21 | 2022-12-15 | Airbnb, Inc. | Holistic analysis of customer sentiment regarding a software feature and corresponding shipment determinations |
US12041020B2 (en) * | 2021-06-14 | 2024-07-16 | LiveChat Software S.A. | System and method for asynchronous messaging combined with a real-time communication |
WO2023017528A1 (en) * | 2021-08-12 | 2023-02-16 | Imemori Technologies Private Limited | System and method for creating an intelligent memory and providing contextual intelligent recommendations |
US11943189B2 (en) | 2021-08-12 | 2024-03-26 | Imemori Technologies Private Limited | System and method for creating an intelligent memory and providing contextual intelligent recommendations |
CA3228534A1 (en) | 2021-08-12 | 2023-02-16 | Yohana Llc | Systems and methods for representative support in a task determination system |
US12094458B2 (en) * | 2022-02-10 | 2024-09-17 | Oracle International Corporation | Multi-channel conversation processing |
US11689486B1 (en) * | 2022-03-02 | 2023-06-27 | Microsoft Technology Licensing, Llc | Topic overlap detection in messaging systems |
US12141540B2 (en) * | 2022-03-03 | 2024-11-12 | International Business Machines Corporation | Message mapping and combination for intent classification |
US12141529B1 (en) * | 2022-03-22 | 2024-11-12 | Amazon Technologies, Inc. | Relevant object embedding in aggregated answers to questions regarding broad set of objects |
US11977779B2 (en) | 2022-05-11 | 2024-05-07 | Bank Of America Corporation | Smart queue for distributing user requests to automated response generating systems |
US11889153B2 (en) | 2022-05-11 | 2024-01-30 | Bank Of America Corporation | System and method for integration of automatic response generating systems with non-API applications |
US12147788B2 (en) | 2022-05-11 | 2024-11-19 | Bank Of America Corporation | System and method for intelligently generating code for use in integrating automated response generating systems with non-API applications |
US20240020328A1 (en) * | 2022-07-18 | 2024-01-18 | Dell Products L.P. | Systems and methods for intelligent document verification |
US20240029088A1 (en) * | 2022-07-19 | 2024-01-25 | Adp, Inc. | System for customer churn prediction and prevention |
CN115527537A (en) * | 2022-11-24 | 2022-12-27 | 广州小鹏汽车科技有限公司 | Voice interaction method, server and computer readable storage medium |
US12231378B2 (en) * | 2023-06-08 | 2025-02-18 | Sap Se | Realtime conversation AI insights and deployment |
US20240422262A1 (en) * | 2023-06-18 | 2024-12-19 | Genesys Cloud Services, Inc. | Technologies for contact center agent incentivization via automated gamification |
CN118468890B (en) * | 2024-07-15 | 2024-12-06 | 科大讯飞股份有限公司 | Menu navigation method, device, equipment, storage medium and product |
Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044142A (en) | 1997-05-06 | 2000-03-28 | Telefonaktiebolaget L M Ericsson | Method and arrangement for integrating intelligent network services with operator assisted services |
US20030023691A1 (en) * | 2001-07-27 | 2003-01-30 | Knauerhase Robert C. | Routing messages using presence information |
US20030028451A1 (en) | 2001-08-03 | 2003-02-06 | Ananian John Allen | Personalized interactive digital catalog profiling |
US20030055907A1 (en) | 2001-09-18 | 2003-03-20 | Todd Stiers | Clientless electronic mail MIME attachment re-delivery system via the web to reduce network bandwidth usage |
US20050080862A1 (en) * | 2003-10-14 | 2005-04-14 | Kent Larry G. | Communication suite engine |
US20050102401A1 (en) | 2003-10-10 | 2005-05-12 | Bea Systems, Inc. | Distributed enterprise security system for a resource hierarchy |
US20060036679A1 (en) | 2002-07-26 | 2006-02-16 | International Business Machines Corporation | Pub/sub message invoking a subscribers client application program |
US20060036671A1 (en) | 2004-08-14 | 2006-02-16 | Samsung Electronics Co., Ltd. | Content display system for sharing content between display apparatuses |
US20070192414A1 (en) * | 2001-03-31 | 2007-08-16 | Mingte Chen | User interface for multi-channel communication |
US20070206086A1 (en) | 2005-01-14 | 2007-09-06 | Experticity, Inc. | On-line expert provision system and method |
US20080104244A1 (en) | 2006-11-01 | 2008-05-01 | Paul Ming Chen | Provisioning of resources in a computer network |
US20100064015A1 (en) | 2008-09-05 | 2010-03-11 | Sacks David O | System And Method For Collaborative Short Messaging And Discussion |
US20100114938A1 (en) | 2008-10-20 | 2010-05-06 | Yahoo! Inc. | Search results for a topic that include a list of messaging users that have previously searched on that topic |
US8122084B2 (en) * | 2002-10-29 | 2012-02-21 | Sap Ag | Collaborative conversation channels |
US20120089698A1 (en) * | 2010-10-07 | 2012-04-12 | Erick Tseng | Preferred contact channel for user communications |
US20130191481A1 (en) * | 2012-10-12 | 2013-07-25 | Freedomone Mobile, Inc. | Systems and methods for subscription management in a multi-channel context aware communication environment |
US8677451B1 (en) | 2010-06-22 | 2014-03-18 | Cellco Partnership | Enabling seamless access to a domain of an enterprise |
CA2884775A1 (en) | 2012-09-14 | 2014-03-20 | Thinkat Co.,Ltd. | Method for phone authentication in e-business transactions and computer-readable recording medium having program for phone authentication in e-business transactions recorded thereon |
US20140280936A1 (en) * | 2013-03-15 | 2014-09-18 | Venkataramanan Nandagopal | Systems, methods, and apparatuses for implementing an interface to populate and update an entity graph through socially relevant user challenges |
US20150310446A1 (en) * | 2014-04-28 | 2015-10-29 | Kenneth D. Tuchman | Method and System for Providing Support Services Using Interactive Media Documents |
US9240970B2 (en) * | 2012-03-07 | 2016-01-19 | Accenture Global Services Limited | Communication collaboration |
US20160127557A1 (en) * | 2014-11-05 | 2016-05-05 | Avaya Inc. | System and method for agent selection in an enterprise |
US9450901B1 (en) | 2015-03-25 | 2016-09-20 | Pypestream Inc. | Channel based communication and transaction system |
US9647968B2 (en) | 2015-03-25 | 2017-05-09 | Pypestream Inc | Systems and methods for invoking chatbots in a channel based communication system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108469B2 (en) * | 2003-10-14 | 2012-01-31 | At&T Intellectual Property I, L.P. | User interface for a communication suite |
-
2018
- 2018-03-13 US US15/919,987 patent/US10659403B2/en active Active
-
2020
- 2020-05-18 US US16/876,378 patent/US11102155B2/en active Active
-
2021
- 2021-08-20 US US17/408,033 patent/US11533281B2/en active Active
-
2022
- 2022-12-15 US US18/066,623 patent/US12034682B2/en active Active
-
2024
- 2024-05-28 US US18/676,125 patent/US20240406127A1/en active Pending
Patent Citations (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044142A (en) | 1997-05-06 | 2000-03-28 | Telefonaktiebolaget L M Ericsson | Method and arrangement for integrating intelligent network services with operator assisted services |
US20070192414A1 (en) * | 2001-03-31 | 2007-08-16 | Mingte Chen | User interface for multi-channel communication |
US20030023691A1 (en) * | 2001-07-27 | 2003-01-30 | Knauerhase Robert C. | Routing messages using presence information |
US20030028451A1 (en) | 2001-08-03 | 2003-02-06 | Ananian John Allen | Personalized interactive digital catalog profiling |
US20030055907A1 (en) | 2001-09-18 | 2003-03-20 | Todd Stiers | Clientless electronic mail MIME attachment re-delivery system via the web to reduce network bandwidth usage |
US20060036679A1 (en) | 2002-07-26 | 2006-02-16 | International Business Machines Corporation | Pub/sub message invoking a subscribers client application program |
US8122084B2 (en) * | 2002-10-29 | 2012-02-21 | Sap Ag | Collaborative conversation channels |
US20050102401A1 (en) | 2003-10-10 | 2005-05-12 | Bea Systems, Inc. | Distributed enterprise security system for a resource hierarchy |
US20050080862A1 (en) * | 2003-10-14 | 2005-04-14 | Kent Larry G. | Communication suite engine |
US20060036671A1 (en) | 2004-08-14 | 2006-02-16 | Samsung Electronics Co., Ltd. | Content display system for sharing content between display apparatuses |
US20070206086A1 (en) | 2005-01-14 | 2007-09-06 | Experticity, Inc. | On-line expert provision system and method |
US20080104244A1 (en) | 2006-11-01 | 2008-05-01 | Paul Ming Chen | Provisioning of resources in a computer network |
US20100064015A1 (en) | 2008-09-05 | 2010-03-11 | Sacks David O | System And Method For Collaborative Short Messaging And Discussion |
US20100114938A1 (en) | 2008-10-20 | 2010-05-06 | Yahoo! Inc. | Search results for a topic that include a list of messaging users that have previously searched on that topic |
US8677451B1 (en) | 2010-06-22 | 2014-03-18 | Cellco Partnership | Enabling seamless access to a domain of an enterprise |
US20120089698A1 (en) * | 2010-10-07 | 2012-04-12 | Erick Tseng | Preferred contact channel for user communications |
US9240970B2 (en) * | 2012-03-07 | 2016-01-19 | Accenture Global Services Limited | Communication collaboration |
CA2884775A1 (en) | 2012-09-14 | 2014-03-20 | Thinkat Co.,Ltd. | Method for phone authentication in e-business transactions and computer-readable recording medium having program for phone authentication in e-business transactions recorded thereon |
US20130191481A1 (en) * | 2012-10-12 | 2013-07-25 | Freedomone Mobile, Inc. | Systems and methods for subscription management in a multi-channel context aware communication environment |
US20140280936A1 (en) * | 2013-03-15 | 2014-09-18 | Venkataramanan Nandagopal | Systems, methods, and apparatuses for implementing an interface to populate and update an entity graph through socially relevant user challenges |
US20150310446A1 (en) * | 2014-04-28 | 2015-10-29 | Kenneth D. Tuchman | Method and System for Providing Support Services Using Interactive Media Documents |
US20160127557A1 (en) * | 2014-11-05 | 2016-05-05 | Avaya Inc. | System and method for agent selection in an enterprise |
US9450901B1 (en) | 2015-03-25 | 2016-09-20 | Pypestream Inc. | Channel based communication and transaction system |
US9641470B2 (en) | 2015-03-25 | 2017-05-02 | Pypestream Inc. | Channel based communication and transaction system |
US9647968B2 (en) | 2015-03-25 | 2017-05-09 | Pypestream Inc | Systems and methods for invoking chatbots in a channel based communication system |
Non-Patent Citations (1)
Title |
---|
International Search Report for International Patent Application No. PCT/US2016/024373, dated Jul. 12, 2016, 15 pages. |
Also Published As
Publication number | Publication date |
---|---|
US20220116341A1 (en) | 2022-04-14 |
US12034682B2 (en) | 2024-07-09 |
US10659403B2 (en) | 2020-05-19 |
US20200351227A1 (en) | 2020-11-05 |
US20180212904A1 (en) | 2018-07-26 |
US20240406127A1 (en) | 2024-12-05 |
US11533281B2 (en) | 2022-12-20 |
US20230318996A1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11102155B2 (en) | Systems and methods for navigating nodes in channel based chatbots using natural language understanding | |
US10187337B2 (en) | Systems and methods for invoking chatbots in a channel based communication system | |
US9948583B2 (en) | Channel based communication and transaction system | |
US10726427B2 (en) | Method and apparatus for building a user profile, for personalization using interaction data, and for generating, identifying, and capturing user data across interactions using unique user identification | |
US10681212B2 (en) | Virtual assistant aided communication with 3rd party service in a communication session | |
US12271803B2 (en) | Systems and methods for predicting and providing automated online chat assistance | |
US8244589B2 (en) | Personalized audio controlled shopping information service for a mobile device | |
JP2020184363A (en) | Techniques for product, service, and business recommendation | |
US20120166345A1 (en) | System and method for personalized customer service objects in contact centers | |
US11620656B2 (en) | System and method for personalization as a service | |
KR20150095624A (en) | System and methods for virtual agent recommendation for multiple persons | |
US11049169B2 (en) | System, computer program product, and method for automated gift determination and delivery | |
US11423451B1 (en) | Speech processing procurement system | |
US11722999B2 (en) | Communication channel merging system | |
KR20220141891A (en) | Interface and mode selection for digital action execution | |
US20180039618A1 (en) | Computerized group task digital assistance | |
US20240187358A1 (en) | Intelligent Assistant Content Generation | |
US10645053B2 (en) | Generating a new user base using attractive e-mail addresses | |
US20250123820A1 (en) | Dynamic user interfaces and content with reduced code development using an intelligent scenario simulation engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
AS | Assignment |
Owner name: PYPESTREAM INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SMULLEN, RICHARD;GARG, RAHUL A.;KIM, MINJUN;AND OTHERS;SIGNING DATES FROM 20180323 TO 20180326;REEL/FRAME:052693/0744 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: GREAT AMERICAN INSURANCE COMPANY, OHIO Free format text: SECURITY INTEREST;ASSIGNOR:PYPESTREAM INC.;REEL/FRAME:064737/0812 Effective date: 20230829 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE FOR LATE PAYMENT, SMALL ENTITY (ORIGINAL EVENT CODE: M2554); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |