A BOT (which is short for “robot”) is an automated application or program implemented within a presence-based, two-way communication network such as an instant messaging (IM) or voice over IP network (VoIP) with which a user can interact. The BOT interacts with the user in such a way as to appear to be just like any other user on the network. BOTs may be simple in nature, providing simplistic conversational text exchange between the BOT and a user, or may be more complex, enabling the integration, for example, of audio and video within an exchange between a BOT and a user. BOTs can be configured to interact with users in various ways. For example, a BOT may be programmed to answer questions about movie show times, to search the web, or to simply chat with users. While many users enjoy interacting with BOTs, BOTs are difficult and time consuming to create, requiring both programming skills and access to specialized BOT development tools.
The Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Interactive robot creation is described. A robot (BOT), which is an automated, interactive computer program implemented on a presence-based network, is configured to gather data from a user, and use the data that is gathered to create a new, user-defined BOT to be implemented on the presence-based network. A BOT may be created to interact via any type of two-way communication network, such as, but not limited to, an instant messaging network or a VoIP network. Data that may be gathered may include, for example, a name, an ID, and a password to be associated with the new BOT; a personality type to be associated with the new BOT; a knowledge base and/or a data source to be associated with the new BOT; selection of one or more standard features (e.g., searching or alert generation); data input such as RSS feeds; and/or reporting parameters. Once created, the new, user-defined BOT is automatically made available such that other users may interact with the new, user-defined BOT.
Interactive robot (BOT) creation as described below provides a mechanism by which a user may interact with a BOT to create and publish a new, user-defined BOT. A BOT is an automated application or program with which a user can directly interact via a presence-based two-way communication network as if the BOT were any other user on that network. The following discussion is directed to interactive BOT creation. While features of interactive BOT creation can be implemented in any number of different computing environments, they are described in the context of the following exemplary implementations.
Network environment 100 also includes BOT server 118, which includes one or more BOTs 120 and BOT factory 122. A BOT is an application or program with which a user can interact via a direct communication link. For example, in addition to being aware of the presence of user 102 and user 104, IM network server is also aware of the presence of BOT 120. Accordingly, user 102 can request that IM network server 108 facilitate establishment of a direct communication link 124 between user 102 and BOT 120. Once this link is established, user 102 and BOT 120 are able to interact as if BOT 120 were another user.
BOT factory 122 is implemented as a BOT, and is available for interaction via IM network server 108. For example, a direct communication link 126 may be established between user 102 and BOT factory 122 to enable user 102 to interact with BOT factory 122. BOT factory 122 is configured to request information from a user, and based on the received information, create a new, user-defined BOT, which is then hosted on BOT server 118, and available for interaction with users via the IM network.
Arrow 204 indicates that a conversation is established between user device 202 and BOT factory 122. As described above with reference to
In addition to maintaining BOT factory 122, BOT server 118 (which may be implemented as one or more physical devices), also maintains user-defined BOTS 208(1), 208(2), . . . , 208(N). After receiving the requested data, BOT factory 122 creates a new user BOT 208(N+1), as indicated by arrow 210.
Referring to
User-defined BOT 208 includes BOT ID store 510, Q&A store 512, conversation module 514, reporting module 516, features module 518, and data source module 520. The illustrated components of user-defined BOT 208 are for illustrative purposes only, and are not intended to limit the scope of interactive BOT creation, as described herein. In alternate implementations, a user-defined BOT may include additional components not shown in
In an exemplary implementation, BOT ID store 510 is configured to maintain a name, ID, and password associated with the user-defined BOT 208. For example, the BOT created as shown in
Conversation module 514 is a code module that enables user-defined BOT 208 to converse with other users. In an exemplary implementation, conversation module 514 includes procedural code that enables user-defined BOT 208 to interpret questions received from a user, and to respond to those questions, based on data stored in Q&A store 512. Reporting module 516 is a code module that defines how (or if) user-defined BOT 208 provides reports to the user who created user-defined BOT 208. For example, user-defined BOT 208 may send a report by email (or other delivery mechanism) at regular intervals (e.g., daily, weekly, monthly) to inform the BOT creator of how many conversations the user-defined BOT 208 has participated in, and with whom.
Features module 518 is a code module that enables user-defined BOT 208 to implement any number of additional features, such as, for example, a search, blog integration, or alert generation. Similarly, data source module 520 is a code module that enables user-defined BOT 208 to gather data from any number of other sources (e.g., an RSS feed or any other APT with open access) to be included in the knowledge base (e.g. Q&A store 512) associated with user-defined BOT 208.
Because BOT factory 122 is also a BOT, it includes components similar to those described above with reference to user-defined BOT 208. For example, BOT factory 122 includes BOT ID store 522, Q&A store 524, conversation module 526, reporting module 528, features module 530, and data source module 532. These components provide the same functionality to BOT factory 122 as the respective components of user-defined BOT 208 (i.e., BOT ID store 510, Q&A store 512, conversation module 514, reporting module 516, features module 518, and data source module 520).
In addition, BOT factory 122 also includes additional components. Namely, persona store 534, features store 536, reporting store 538, and data source store 540. Persona store 534 is configured to maintain various code segments that may be used to generate a conversation module, such as conversation module 514. In an exemplary implementation, BOTs implemented with each of the various code segments will have different “personalities”. For example, code segments may be available for generating a BOT with a grumpy personality, a happy personality, or a surly personality. As an example, a user may ask the BOT a question such as, “How are you?” A BOT with a grumpy personality may respond with, “I'm not in the mood for small talk—what do you want?” A BOT with a happy personality may respond with, “Great! Thanks for asking.” A BOT with a surly personality may respond with, “None of your business!” In an exemplary implementation, persona store 534 maintains several common user interactions that are grouped by personality. For example, persona store 534 may maintain four responses to the question, “How are you”, namely, response A, response B, response C, and response D. Response A may be associated with a happy personality; response B and response C may be associated with a grumpy personality; and response C and response D may be associated with a surly personality. Similar mappings may exist for different interactions and different personas.
In the described exemplary implementation, BOT factory 122 is configured to provide users with a choice of available personas. Based on which option the user selects, the new BOT will be created to include a corresponding conversation module selected from the persona store 534. Similarly, features store 536 includes code modules for implementing any number of standard features within a user-defined BOT. As a user defines a new BOT, for any of the available features that the user selects, code modules are copied from features store 536 for inclusion as a features module in the new BOT. The same is also true for reporting store 538 and data source store 540.
In an alternate implementation, one or more of persona store 534, features store 536, reporting store 538, and data source store 540 are maintained separate from BOT factory 122, but may be accessed by BOT factory 122. For example, persona store 534, features store 536, reporting store 538, and data source store 540 may be maintained in memory 506 and accessed by BOT factory 122. Furthermore, user-defined BOT 208 may be implemented to access code modules stored in one or more of persona store 534, features store 536, reporting store 538, and data source store 540, rather than including a full copy of a code module.
Methods for implementing interactive BOT creation may be described in the general context of computer executable instructions. Generally, computer executable instructions include routines, programs, objects, components, data structures, procedures, and the like that perform particular functions or implement particular abstract data types. The methods may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
At block 602, a connection between a user and a BOT factory is established. The BOT factory is a BOT that is configured to interact with a user to help the user create a new, user-defined BOT. For example, user 102 submits to IM network server 108, a request to establish a connection with BOT factory 122. Based on that request, IM network server 108 facilitates establishment of a direct connection 126 between user 102 (e.g., a device being used by user 102) and BOT factory 122.
At block 604, identifying information associated with the BOT to be created is determined. For example, BOT factory 122 requests a name, ID, and password to be associated with the new BOT, and the user provides the requested data.
At block 606, a conversation style for the BOT to be created is determined. For example, BOT factory 122 presents a list of available conversation styles (also referred to herein as “personas”), based on data stored in persona data store 534. The user then selects the persona or conversation style to be implemented for the BOT that is being created.
At block 608, a knowledge base for the BOT to be created is populated. For example, the user may enter a series of questions and corresponding answers for the BOT to be aware of. Alternatively, the user may upload to BOT factory 122, a file containing a list of questions and corresponding answers.
At block 610, standard features to be implemented as part of the BOT to be created are determined. For example, BOT factory 122 may provide the user with a list of available standard features, and the user may select one or more of the available features to be implemented as part of the BOT to be created.
At block 612, reporting characteristics to be associated with the BOT to be created are determined. For example, the user may specify what type of data is to reported, a frequency with which the data is to be reported, and a means by which the data is to be reported.
At block 614, data sources for the BOT to monitor are determined. For example, the user may specify a rich site summary (RSS) feed, blog, or other type of data source for the BOT to monitor and extract data from.
At block 616, the user-defined BOT is created. For example, BOT factory creates a new, user-defined BOT 208. The identifying information gathered as described above with reference to block 604 is maintained in BOT ID store 510; a code module corresponding to the conversation style determined as described above with reference to block 606 is implemented as conversation module 514; questions and answers gathered as described above with reference to block 608 are maintained in Q&A store 512; code modules corresponding to standard features determined as described above with reference to block 610 are implemented as features module 518; code modules implementing the reporting characteristics determined as described above with reference to block 612 are implemented as reporting module 516; and code modules configured to monitor data sources determined as described above with reference to block 614 are implemented as data source module 520. Furthermore, the ID associated with the newly created BOT is made available to IM network server 108 so that users are able to access and interact with the newly created BOT.
Although embodiments of interactive BOT creation have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as exemplary implementations of interactive BOT creation.