Extensible chat robot framework

Through the comboable chatbot extension system, the flexibility and reusability of the expansion architecture in the prior art are solved, and flexible integration and efficient response of the extension are achieved.

CN120435852APending Publication Date: 2025-08-05MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380089787.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-01-31
Filing Date
2023-12-22
Publication Date
2025-08-05

AI Technical Summary

Technical Problem

The existing chatbot extension architecture lacks flexibility and reusability, is difficult to maintain, and is prone to errors when customizing integration of third-party services.

Method used

The comboable chatbot extension system is adopted. By combining the output of one extension as the input of another extension, the extension pipeline is defined, allowing the extension to declare its input, output and data modification, and supports parallel execution and priority management of multiple extensions, realizing in-depth integration of third-party extensions and chatbots.

Benefits of technology

Improves the flexibility and maintainability of chatbot extensions, reduces the need for custom integrated code, and enhances the reusability and responsiveness of the extensions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120435852A_ABST
    Figure CN120435852A_ABST
Patent Text Reader

Abstract

A system for combinable chat robot extensions is disclosed. Chat robot extensions are combined by taking outputs of one extension as inputs to another extension. This defines an extended pipeline that accepts the hint as input and provides the response as output. Combinability makes it easier to utilize functionality provided by other extensions, record outputs, execute tasks in parallel, and test extensions. In some configurations, each extension declares its accepted input, its produced output, and any modification thereof to data being passed through the pipeline. The extensions may also declare preferred locations in the pipeline, enabling developers to select whether to respond to the original cues as soon as possible or to wait and receive intermediate results generated by other extensions. At the end of the pipeline, a response is provided to the user via the chat robot.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] A chatbot is a computer program designed to simulate a conversation. A chatbot receives prompts such as "What time is it?" and responds with responses such as "2:00 PM." Chatbots can be integrated into various platforms, such as websites, messaging apps, and productivity apps. The earliest chatbots were developed in the 1960s and were based on simple rule-based systems. However, with advances in artificial intelligence (AI) and natural language processing (NLP) technology, chatbots have become more sophisticated and capable of understanding and responding to human input in a more natural way.

[0002] Extensions allow developers to expand a chatbot's functionality. For example, a weather extension enables users to ask whether it will rain. The weather extension can register to be invoked when weather-related keywords are detected in a prompt. However, existing chatbot extension architectures are monolithic—a single extension is responsible for providing a response to a prompt. This monolithic architecture lacks flexibility, is difficult to maintain, and is challenging to debug.

[0003] Chatbots can also be extended through custom integrations with other services. However, this requires understanding each third-party service. Furthermore, custom code written to integrate with each third-party service is often error-prone and difficult to maintain.

[0004] It is with respect to these and other considerations that the disclosure made herein is presented. Summary of the Invention

[0005] A system for composable chatbot extensions is disclosed. Chatbot extensions are composed by feeding the output of one extension into another. This defines a pipeline of extensions that accepts a prompt as input and provides a response as output. Composability makes it easier to leverage functionality provided by other extensions, log output, execute tasks in parallel, and test extensions. In some configurations, each extension declares the inputs it accepts, the outputs it produces, and any modifications it makes to the data being passed through the pipeline. Extensions can also declare a preferred position in the pipeline, enabling developers to choose whether to respond to the original prompt as quickly as possible, or wait and receive intermediate results generated by other extensions. At the end of the pipeline, a response is provided to the user via the chatbot.

[0006] In some configurations, the chatbot itself is implemented using composable extensions. This enables third-party extensions that are not part of the chatbot itself to be deeply integrated with the chatbot without having to write custom integration code. For example, when the chatbot does not know how to respond to a prompt, the chatbot can expose an integration point that calls a third-party extension as a fallback. Third-party extensions can be integrated at any point—from when the prompt first arrives until a response is provided, or at any step in the process. For example, an extension that orders pizza can register to be called as soon as a prompt is received, or wait to see what categories or other metadata are generated by other extensions.

[0007] When a pipeline contains more than one extension, the chatbot attempts to process them in the order they are requested. Simultaneously, the chatbot can analyze the declared inputs, outputs, and modifications for each extension and call them in the order that satisfies the greatest number of declared inputs. For example, an extension that posts chatbot responses to a social media account can request that the prompts it receives as input be deemed inoffensive. Another extension can declare a prompt to be inoffensive. The chatbot recognizes that the social media extension's input requirements are satisfied by the offensiveness detection extension, and therefore it will call the offensiveness detection extension first.

[0008] In addition to the prompt itself, the chatbot can also provide some or all of the conversation history to the extension. The conversation history can include messages that have been exchanged with the user and pending content responses that have been generated by the chatbot extension but not yet returned to the user. The chatbot can also provide metadata to the extension. The extension can use the metadata and conversation history to improve the quality of the responses it generates. For example, the conversation history adds context to the most recent prompt, while the metadata indicates what other extensions have been determined regarding the prompt.

[0009] Extensions can add new messages to a conversation, modify messages created by another extension but not yet returned to the client, or add or modify metadata. For example, an extension that helps a user order pizza could add a new message to a conversation asking for the user's favorite toppings. An extension that filters out offensive content could modify existing messages in a conversation to omit offensive terms. An extension that analyzes responses for accuracy could add metadata indicating that a claim made by a previous extension has been verified by an external source.

[0010] In some configurations, extensions perform these operations according to standards defined by the chatbot. Standardization enables extensions from different parties to interoperate with each other. For example, when inserting key-value pairs into a JavaScript Object Notation (JSON) file containing a response, an extension can use standardized key names. Subsequent extensions in the extension pipeline can then reliably retrieve the data stored in a standardized manner. Different standards are envisioned for different operations that a chatbot extension can perform, such as naming a field in a JSON file that stores an address "address."

[0011] Extensions can also declare the level of granularity at which they receive text generated by previous extensions. An extension can wait for a previous extension in the pipeline to create a complete response before starting. Alternatively, an extension can choose to receive sub-parts of a response as they are generated, such as paragraphs, sentences, or tags. Processing a response as a stream of sub-parts enables an extension to start processing significantly faster than waiting for a complete response. This is especially useful when the response is generated by a generative language model, which may take several seconds or even minutes to respond to a single prompt. For example, a speech processing extension that verbalizes a response can choose to receive the output of a previous extension as a stream of sentences or words, thereby enabling it to be spoken out while the response is being generated.

[0012] By reading the following detailed description and examining the associated drawings, features and technical advantages other than those explicitly described above will become apparent. This summary is intended to introduce in simplified form a series of concepts that are further described below in the detailed description. This summary is not intended to identify the key or essential features of the claimed subject matter, nor is it intended to be used as an aid to determining the scope of the claimed subject matter. For example, the term "technology" may refer to (multiple) systems, (multiple) methods, computer-readable instructions, (multiple) modules, algorithms, hardware logic, and / or (multiple) operations as permitted by the context described above and throughout the document. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The detailed description is described with reference to the accompanying drawings. In the drawings, the leftmost digit(s) of a reference number identifies the figure in which the reference number first appears. The same reference numbers in different figures indicate similar or identical items. References to individual items in a plurality of items may use reference numbers with letters or letter sequences to refer to each individual item. General references to items may use specific reference numbers without letter sequences.

[0014] Figure 1 A chatbot is shown enhanced with a chatbot extension.

[0015] Figure 2Shows the configuration file for the chatbot extension.

[0016] Figure 3 Shows the pipeline for handling prompts in the chatbot extension.

[0017] Figure 4 A request provided to the chatbot extension is shown.

[0018] Figure 5 Shows the response received from the chatbot extension.

[0019] Figure 6 is a flowchart of an example approach for an extensible chatbot framework.

[0020] Figure 7 is a computer architecture diagram showing an illustrative computer hardware and software architecture for a computing system capable of implementing various aspects of the techniques and technologies presented herein.

[0021] Figure 8 is a schematic diagram of a distributed computing environment in which various aspects of the techniques presented herein can be implemented. DETAILED DESCRIPTION

[0022] Extensions are applications developed by first or third parties that can be added to a chatbot to enhance its functionality. Previous chatbot extensions were typically invoked using keywords. For example, if an extension registration uses the keyword "weather," the extension can be invoked by asking "What's the weather like today?" The extension then returns the response to the chatbot to be displayed. These types of extensions lack reusability, which increases their cost. They also lack flexibility and are more difficult to troubleshoot when problems arise. In contrast, the chatbot extensions disclosed herein are composable, allowing extensions to build on the output of other extensions.

[0023] Figure 1 A chatbot enhanced with a chatbot extension is shown. User 102 operating a computing device 104 navigates browser 106 to a chatbot website 108. Chatbot website 108 is an example of an application that utilizes a generative language model to interact with users in a human-like manner. Typically, chatbot 140 used by chatbot website 108 is located on a remote computing device, but it can also be implemented by computing device 104.

[0024] The chatbot user interface 110 includes a prompt 112 that is entered into a prompt input box 114. Clicking or otherwise initiating a trigger associated with a submit button 116 causes the prompt 112 to be submitted to the chatbot 140. The chatbot user interface 110 displays a history of messages between the user 102 and the chatbot 140, such as prompts 122 and responses 124.

[0025] Chatbot 140 contains configurations 142—one or more configurations 152 that have been registered by extensions 150. Extensions 150 extend the functionality of chatbot 140. As discussed in more detail below, extensions 150 are composable because the output of one extension can be used as the input of another. Chatbot extensions are also composable because they read and write metadata as requests are passed through the extension pipeline.

[0026] In some configurations, a chatbot extension 150 interacts with a chatbot 140 without registering a configuration 152. In such a scenario, one or more chatbot extensions 150 can provide prompts to the chatbot 140, similar to how a user would provide prompts to the chatbot 140. Responses provided by the chatbot 140 can be further processed by the extension 150 according to the configuration 152. These responses can then be provided to other chatbot extensions 150, which may or may not call the chatbot 140, enabling multiple chatbot extensions 150 to form an extension chain. Each extension in the extension chain can call the chatbot 140 before returning a response to a subsequent chatbot extension 150 or the user.

[0027] Figure 2 The configuration file of the chatbot extension is shown. The configuration file 152A may include one or more of an identifier 202, a name 204, a uniform resource locator (URL) 206, a priority ranking 208, a template 210, a header 214, a filter 216, and / or an output 218. The configuration file 152 may be a JSON file, an XML file, or any other human-readable markup file. The configuration file 152 may also be computer-readable.

[0028] The identifier 202 may be any unique sequence of numbers or letters that can be used to refer to a particular chatbot extension. The name 204 refers to a descriptive name for the chatbot extension 150A associated with the configuration 152 .

[0029] URL 206 is an HTTP endpoint that the chatbot 140 can use to invoke the chatbot extension 150A. While references to web-based chatbot extensions are made throughout this document, this is merely one example of a technique for referencing a chatbot extension. Similarly, other techniques are contemplated, such as referring to a local executable file. When the chatbot 140 has determined to invoke a specific chatbot extension 150, it may do so by submitting an HTTP request to URL 206. In some configurations, URL 206 also describes the HTTP verb or other connection parameters that can be used to invoke the target chatbot extension.

[0030] When multiple chatbot extensions 150 are registered with a chatbot 140, a priority 208 is used to determine the order in which they are executed. The priority 208 can be a ranking. In some configurations, extensions associated with lower rankings are executed first. Extensions with the same ranking can be executed in parallel.

[0031] In some configurations, the chatbot follows conventions that assign specific priorities to specific points in the extension pipeline. By following these conventions, extensions can collaborate on when they will run relative to each other and relative to important events in the extension pipeline.

[0032] For example, an extension that adds or modifies metadata can be assigned a priority of -1. An extension that responds to a user's message before any other components run can have a priority of 100. This can include no-code or low-code extensions that "hardcode" a specific response, such as returning a predetermined greeting or returning the IP address of the chatbot 140, respectively.

[0033] In some configurations, the chatbot 140 itself is implemented using composable chatbot extensions. In some configurations, the composable chatbot extensions that implement the chatbot 140 are part of an extension pipeline. Examples of these built-in extensions include natural language understanding (NLU) extensions, extensions that interface with traditional search engines, extensions that obtain responses from generative language models, and the like. Priority 2010 can be associated with extensions that respond to user messages after rules have run but before any other major components of the chatbot have run.

[0034] Prioritization 6100 can provide content based on NLU classification. NLU classification can extract intent and entities from the prompt. If the chatbot 140 is unsure how to handle the prompt, generating a response based on NLU classification can be a fallback.

[0035] Sorting 8100 can be associated with an extension that sorts responses generated by previously executed extensions and selects the best response to use as the response of the chatbot 140. Sorting 10100 can add a new message after all components have been completed. An extension with a priority of 20020 can modify the final response of the chatbot 140. An extension with a priority of 30010 can enhance the response with a suggested user response or automatically complete the user's message. An extension with a priority of 30100 can generate a call-out to attract the user's attention. The specific priority rankings listed above are examples, and other values are similarly contemplated. In addition, other types of operations are similarly contemplated.

[0036] A template 210 is a text string into which references to data contained in a request are inserted. The template 210 allows for the dynamic generation of responses based on structured data obtained from the context in which the user 102 is operating, as well as from data generated by previous extensions. The template 210 is used to implement a "low-code" extension—an extension that does not call an HTTP-based service, but instead computes a response based on the request received and based on a template contained in the configuration file itself. For example, if the extension is provided with a conversation of messages that have been exchanged between the user 102 and the chatbot 140, the template 210 can generate output based on the text of one or more messages in the conversation.

[0037] Header 214 includes string key-value pairs that can be referenced by filters 216 , templates 210 , or other dynamic aspects of extension 150 .

[0038] Filters 216 are conditions that determine whether the corresponding chatbot extension 150 will process a particular request. If no filter 216 is listed, the corresponding extension 150 will always be called. Similar to templates that generate output in response to a request, filters can refer to data included in the request. For example, if any message in the conversation includes the text "hey", a filter can return "true". If there are multiple filters 216, they can be configured to be satisfied only when all filters are evaluated to true or at least one of the filters is evaluated to true. In some configurations, filters refer to data in the request by a JSON path. Additionally or alternatively, regular expressions can be used when determining whether the associated extension should be called for a particular request.

[0039] Filters can be based on the text contained in one or more previous messages in a conversation, the number of previous messages, and the content of a specific message (such as the first or last message in a conversation). Filters can also refer to content source attributes. For example, when the content source of a message in a conversation is a specific search engine, the extension can be selectively run. Filters can also be based on metadata generated by previous extensions, such as NLU classifications, prompts, or whether a previous response was offensive.

[0040] Output 218 indicates the output of the no-code extension and the low-code extension. As mentioned above, the no-code extension returns hard-coded values, such as string literals. The low-code extension uses templates to dynamically generate responses based on string literals, template operators (such as string concatenation), and references to data submitted in the request being processed.

[0041] Figure 3 A pipeline 300 is shown in which a chatbot extension 150 processes a prompt 312 of a request 310A. As shown, pipeline 300 includes extension 150A, extension 150B, and extension 150C. These extensions can be ordered based on their relative priority values 208. As each extension is executed, a response 320 is received and incorporated into a subsequent request 310. For example, response 320A generated by extension 150A may include a message generated by extension 150A. This message may be added to the dialog included in request 310B. This message may be added based on criteria defined by chatbot 140. In this way, extension 150B has access to the output of extension 150A. Extension 150B generates response 320B and adds it to request 310B for submission to extension 150C. Request 310B also includes the content of response 320A and request 310A, enabling extension 150C to access all data generated by extensions 150A and 150B.

[0042] Generative language models give the impression of confidence and assertiveness, but they are not always completely accurate. One use case for a composable chatbot extension is to double-check factual claims made by a generative language model. Extension 150B shows connections to external information sources 340, such as search engines, online dictionaries, and the like. Extension 150B can use this information to verify the content of response 320A.

[0043] The extended pipeline 300 emits output 330, which may include one or more messages. These messages may be returned to the browser 106 for display to the user 102.

[0044] In some configurations, the chatbot extension 150 utilizes a chatbot 140 that can be invoked without registration. For example, extension 150A receives a request 310A including a prompt 312. Extension 150A can modify the prompt 314 before forwarding it to the chatbot 140. For example, extension 150A can sanitize the prompt 312 to remove offensive language. Extension 150A can then receive a response 322 from the chatbot 140. Response 322 can then be modified before being provided to chatbot extension 150B. Extension 150B can also invoke the chatbot 140 while responding to request 310A.

[0045] Figure 4 Request 400 is shown being provided to chatbot extension 150. Request 400 includes dialog 402 and pending content response 404. Dialog 402 includes messages 412 and identifier 410. Dialog 402 contains messages 412 that have been exchanged between user 120 and chatbot 140. Identifier 410 is a unique identifier used by templates, filters, and other chatbot extensions to refer to a particular dialog. Pending content response 404 includes a response that has been generated by a previously executed chatbot extension 150 but has not yet been returned to browser 106.

[0046] Message 420 is one of messages 412. Message 420 includes a message identifier 422, an author 424, text 426, and metadata 430. Message identifier 422 is a unique string of letters or characters that can be used to refer to a specific message. Author 424 is a description of the chatbot extension 150 that generated the specific message. Text 426 includes the actual text of the message.

[0047] Metadata 430 includes an indication 432 that text 426 is offensive and an indication 434 of a natural language understanding classification of text 426. For example, if it is considered to contain offensive descriptions of religion, offensive 432 may be set to true by extension. NLU classification 434 may include entities identified in text 426, such as named entities, geographic regions, dates and times, intent, sentiment, etc.

[0048] Subsequent extensions 150 can access metadata 430 and act accordingly. For example, extension 150B can determine that one of the messages 412 generated by extension 150A is offensive. Extension 150B can store this indication in the corresponding metadata 430. Extension 150C can then attempt to modify the offensive message.

[0049] Figure 5Responses 500 received from chatbot extension 150 are shown. Responses 500 include response 502 and a message to be rewritten 504. Each response 520 includes a response identifier 522, an author 524, a user interface element 526, and a message 528. Response identifier 522 identifies response 520. Author 524 is the human-readable name of the chatbot extension 150 that generated response 520. UI element 526 can be markup, such as HTML. UI element 526 can be some intermediate description of the user interface that renders response 520, such as an AdaptiveCard. User interface element 526 can be generated by template 210 or can be hard-coded. Message 528 includes the text of response 520. Message 528 can be provided to chatbot user interface 110 for display.

[0050] The rewritten message 540 in the rewritten message 504 includes a message identifier 542, an author 544, text 546, metadata 530, rewritten text 550, and content source 552. The extension 150 can rewrite some or all of the message, for example, by removing emoticons, correcting grammar, removing prohibited language, etc. The message identifier 542 and the author 544 are unique identifiers and names associated with a particular rewritten message. The text 546 contains the text of the message before it is rewritten. The metadata 530 is combined with the above Figure 4 The metadata 530 described above is similar. After a message has been generated, the metadata 530 of the message can be modified, just as the text of the message can be modified. Rewritten text 550 includes the text that replaces the original text 546. Content source 552 includes the name of the chatbot extension 150 that modified the text and / or metadata of the existing message.

[0051] refer to Figure 6 The routine 600 begins at operation 602 where a first configuration 152A for a first chatbot extension 150A and a second configuration 152B for a second chatbot extension 150B are received. In this manner, the chatbot 140 can invoke an extension 150 by obtaining a URL or other identifier from the corresponding configuration 152.

[0052] Next, at operation 604, a chatbot prompt 312 is received from the client device 104. The chatbot prompt 312 may originate from the user 102. The chatbot prompt 312 may be simple or complex and may reference a previously entered prompt 312 or response 320 as part of a conversation. For example, the chatbot prompt 312 may ask the chatbot 140 to compose a song, describe bioelectricity, or solve a math problem.

[0053] Next, at operation 606, a prompt 312 is provided to the first chatbot extension 150A. In some configurations, filters 216 and other rules described herein are used to determine which extensions 150 will be invoked. Rankings and / or dependencies between extensions 150 can be used to determine the order in which they are invoked. These filters 216 and rules can be obtained from the configuration 152 that has been registered with the chatbot 140.

[0054] Next, at operation 608, a first response 320A is received from the first chatbot extension 150A. Some extensions, such as those included with the chatbot 140, may use a generative language model to create a response 320A to the prompt. Other extensions 150 may clean up the prompt 312 or a response 320 generated by a previous extension. Other extensions 150 may perform language analysis, add or remove emoticons, or any of a number of operations that may be applied when the chatbot 140 generates a response 320 to the prompt 312 provided to the user.

[0055] Next, at operation 610, the prompt 312 and the first response 320A are provided to the second chatbot extension 150B. In this manner, the results of the first extension 150A can be used by the second extension 150B. For example, the first extension 150A can remove offensive language and return the resulting text in the first response 320A. The second chatbot extension 150B can then use the first response 320A to synthesize speech, post to a social network account, or perform some other action on the cleaned results.

[0056] Next, a second response 320B is received from the second chatbot extension 150B at operation 612. The second response is commensurate with the operation performed by the second chatbot extension 150B.

[0057] Then, at operation 614 , the message 528 of the second response 320B is provided to the client 104 for display in the chatbot user interface 110 .

[0058] The specific implementation of the technology disclosed herein is a matter of choice depending on the performance and other requirements of the computing device. Therefore, the logical operations described herein are referred to as states, operations, structural devices, actions, or modules in various ways. These states, operations, structural devices, actions, and modules can be implemented with hardware, software, firmware, dedicated digital logic, and any combination thereof. It should be understood that more or fewer operations than those shown in the accompanying drawings and described herein may be performed. These operations may also be performed in a different order than described herein.

[0059] It should also be understood that the method shown can be terminated at any time and need not be performed in its entirety. Some or all of the operations in the method and / or substantially equivalent operations can be performed by executing computer-readable instructions contained on a computer storage medium, as defined below. The term "computer-readable instructions" and variations thereof as used in the specification and claims are used broadly herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, and the like. Computer-readable instructions can be implemented on a variety of system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, and the like.

[0060] Thus, it should be understood that the logical operations described herein may be implemented as (1) a sequence of computer-implemented actions or program modules running on a computing system, and / or (2) interconnected machine logic circuits or circuit modules within the computing system. Implementation is a matter of choice depending on the performance and other requirements of the computing system. Thus, the logical operations described herein are variously referred to as states, operations, structural devices, actions, or modules. These operations, structural devices, actions, and modules may be implemented in software, firmware, dedicated digital logic, or any combination thereof.

[0061] For example, the operations of routine 600 are described herein as being implemented at least in part by modules that execute features disclosed herein, which modules may be dynamic link libraries (DLLs), static link libraries, functions generated by application programming interfaces (APIs), compilers, interpreters, scripts, or any other set of executable instructions. Data may be stored in data structures in one or more memory components. Data may be retrieved from a data structure by addressing a link or reference to the data structure.

[0062] Although the following description refers only to the components in the figure, it should be understood that the operation of routine 600 can also be implemented in many other ways. For example, routine 600 can be implemented at least in part by a processor or local circuit of another remote computer. In addition, one or more operations of routine 600 can alternatively or additionally be implemented at least in part by a chipset working alone or in combination with other software modules. In the example described below, one or more modules of the computing system can receive and / or process the data disclosed herein. Any service, circuit or application suitable for providing the technology disclosed herein can be used in the operations described herein.

[0063] Figure 7Additional details are shown for an example computer architecture 700 for a device, such as a computer or server configured as part of the systems described herein, capable of executing computer instructions (eg, modules or program components described herein). Figure 7 The computer architecture 700 shown in the figure includes (multiple) processing unit(s) 702, a system memory 704 including random access memory 706 ("RAM") and read only memory ("ROM") 708, and a system bus 710 that couples the memory 704 to the processing unit(s) 702.

[0064] Processing unit(s) such as processing unit(s) 702 may represent, for example, a CPU-type processing unit, a GPU-type processing unit, a field programmable gate array (FPGA), another type of digital signal processor (DSP), or other hardware logic components, which in some instances may be driven by a CPU. For example, but not limitation, illustrative types of hardware logic components that may be used include application-specific integrated circuits (ASICs), application-specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), and the like.

[0065] A basic input / output system, containing the basic routines that help to transfer information between elements within the computer architecture 700, such as during startup, is stored in ROM 708. The computer architecture 700 also includes a mass storage device 712 for storing an operating system 714, application(s) 716, modules 718, and other data described herein.

[0066] The mass storage device 712 is connected to the processing unit(s) 702 through a mass storage controller connected to the bus 710. The mass storage device 712 and its associated computer-readable media provide non-volatile storage to the computer architecture 700. Although the description of computer-readable media contained herein refers to a mass storage device, those skilled in the art will understand that computer-readable media can be any available computer-readable storage media or communication media that can be accessed by the computer architecture 700.

[0067] Computer-readable media may include computer-readable storage media and / or communication media. Computer-readable storage media may include one or more of volatile memory, non-volatile memory, and / or other permanent and / or secondary computer storage media, and removable and non-removable computer storage media implemented in a method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data. Thus, computer storage media includes media in tangible and / or physical form included in a device and / or in a hardware component that is part of or external to the device, including but not limited to random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), phase change memory (PCM), read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, compact disk read-only memory (CD-ROM), digital versatile disks (DVD), optical cards or other optical storage media, magnetic cassettes, magnetic tape, magnetic disk storage devices, magnetic cards or other magnetic storage devices or media, solid-state memory devices, storage arrays, network-attached storage devices, storage area networks, hosted computer storage devices, or any other storage memory, storage devices, and / or storage media that can be used to store and maintain information for access by a computing device.

[0068] Unlike computer-readable storage media, communication media can embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal (such as a carrier wave) or other transmission mechanism. As defined herein, computer storage media does not include communication media. In other words, computer-readable storage media does not include communication media that itself consists solely of a modulated data signal, carrier wave, or propagated signal.

[0069] According to various configurations, the computer architecture 700 can operate in a networked environment using logical connections to remote computers via a network 720. The computer architecture 700 can be connected to the network 720 via a network interface unit 722 connected to the bus 710. The computer architecture 700 can also include an input / output controller 724 for receiving and processing input from a number of other devices including a keyboard, a mouse, a touch screen, or an electronic stylus or pen. Similarly, the input / output controller 724 can provide output to a display screen, a printer, or other types of output devices.

[0070] It should be understood that the software components described herein, when loaded into (multiple) processing unit 702 and executed, can convert (multiple) processing unit 702 and the overall computer architecture 700 from a general-purpose computing system to a special-purpose computing system that is customized to facilitate the functions described herein. (Multiple) processing unit 702 can be constructed from the following components: any number of transistors or other discrete circuit elements, which can assume any number of states individually or collectively. More specifically, in response to the executable instructions contained in the software modules disclosed herein, (multiple) processing unit 702 can operate as a finite state machine. These computer-executable instructions can convert (multiple) processing unit 702 by specifying how (multiple) processing unit 702 transitions between states, thereby converting the transistors or other discrete hardware elements that constitute (multiple) processing unit 702.

[0071] Figure 8 An illustrative distributed computing environment 800 is depicted that is capable of executing the software components described herein. Figure 8 The distributed computing environment 800 shown in FIG can be used to execute any aspects of the software components presented herein. For example, the distributed computing environment 800 can be used to execute various aspects of the software components presented herein.

[0072] Thus, the distributed computing environment 800 can include a computing environment 802 running on, in communication with, or as part of a network 804. The network 804 can include various access networks. One or more client devices 806A to 806N (hereinafter collectively and / or generically referred to as "clients 806" and also referred to herein as computing devices 806) can communicate with the computing environment 802 via the network 804. In one illustrated configuration, the clients 806 include a computing device 806A, such as a laptop, desktop computer, or other computing device; a tablet or tablet computing device ("tablet computing device") 806B; a mobile computing device 806C, such as a mobile phone, smartphone, or other mobile computing device; a server computer 806D; and / or other devices 806N. It should be understood that any number of clients 806 can communicate with the computing environment 802.

[0073] In various examples, computing environment 802 includes a server 808, a data storage device 810, and one or more network interfaces 812. Server 808 can host various services, virtual machines, portals, and / or other resources. In the configuration shown, server 808 hosts virtual machines 814, web portals 816, mailbox services 818, storage services 820, and / or social networking services 822. Figure 8As shown in , server 808 may also host other services, applications, portals, and / or other resources (“other resources”) 824 .

[0074] As mentioned above, the computing environment 802 may include a data storage device 810. According to various implementations, the functionality of the data storage device 810 is provided by one or more databases running on or in communication with the network 804. The functionality of the data storage device 810 may also be provided by one or more servers configured to host data for the computing environment 802. The data storage device 810 may include, host, or provide one or more real or virtual data repositories 826A to 826N (hereinafter collectively and / or generically referred to as "data repositories 826"). The data repositories 826 are configured to host data used or created by the servers 808 and / or other data. In other words, the data repositories 826 may also host or store web documents, Word documents, presentation documents, data structures, algorithms for execution by the recommendation engine, and / or other data utilized by any application. Various aspects of the data repositories 826 may be associated with a service for storing files.

[0075] The computing environment 802 can communicate with or be accessed by a network interface 812. The network interface 812 may include various types of network hardware and software for supporting communication between two or more computing devices (including, but not limited to, computing devices and servers). It should be understood that the network interface 812 can also be used to connect to other types of networks and / or computer systems.

[0076] It should be understood that the distributed computing environment 800 described herein can provide any number of virtual computing resources and / or other distributed computing functions to any aspect of the software elements described herein, which can be configured to perform any aspect of the software components disclosed herein. According to various implementations of the concepts and technologies disclosed herein, the distributed computing environment 800 provides the software functions described herein as services to computing devices. It should be understood that computing devices can include real or virtual machines, including but not limited to server computers, web servers, personal computers, mobile computing devices, smart phones and / or other devices. Therefore, various configurations of the concepts and technologies disclosed herein enable any device configured to access the distributed computing environment 800 to utilize the functions described herein for providing the technologies disclosed herein, as well as other aspects.

[0077] This disclosure is supplemented by the following sample clauses:

[0078] Example 1: A method comprising: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receiving a prompt; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to the second chatbot extension; receiving a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; and providing a message of the second response for display.

[0079] Example 2: The method of Example 1, further comprising: determining to call the second chatbot extension based on a filter condition included in the second configuration evaluating to true.

[0080] Example 3: The method of example 1, wherein metadata properties modified by the first chatbot extension are provided to the second chatbot extension.

[0081] Example 4: The method of example 3, wherein the first configuration declares that the first chatbot extension modifies the metadata attribute.

[0082] Example 5: The method of example 3, wherein the metadata attribute indicates whether the prompt contains offensive language.

[0083] Example 6: The method of example 1, wherein the second chatbot extension is provided with a dialog of messages generated by the previous chatbot extension.

[0084] Example 7: The method of Example 6, wherein the second chatbot expands the dialog to modify the message.

[0085] Example 8: A computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by a processing system, cause the processing system to: receive a prompt from a client device; modify the prompt; provide the modified prompt to a chatbot; receive a response from the chatbot; provide the modified prompt and a first response to a chatbot extension, causing the chatbot extension to provide a message to the client device for display.

[0086] Example 9: The computer-readable storage medium of example 8, wherein the chatbot extension emits a log entry based on the response.

[0087] Example 10 The computer-readable storage medium of Example 8, wherein the chatbot is implemented using chatbot extensions, and wherein the second chatbot extension extends one of the chatbot extensions that implement the chatbot.

[0088] Example 11: A processing system comprising: a processor; and a computer-readable storage medium having computer-executable instructions stored thereon, which, when executed by the processor, cause the processing system to: receive a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receive a prompt from a client device; provide the prompt to the first chatbot extension; receive a first response from the first chatbot extension; provide the prompt and the first response to the second chatbot extension, wherein the first chatbot extension and the second chatbot extension comprise an extension pipeline; receive a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; and provide a message of the second response for display.

[0089] Example 12: The processing system of Example 11, wherein the hint is provided to the extended pipeline, and wherein the second response is received from the extended pipeline.

[0090] Example 13: The processing system of example 11, wherein the first configuration declares a preferred position of the first chatbot extension in the pipeline.

[0091] Example 14: The processing system of example 11, wherein the chatbot provides a collection of metadata attributes to the extension pipeline, and wherein the second chatbot extension adds or modifies a metadata attribute to the collection of metadata attributes.

[0092] Example 15: The processing system of example 14, wherein the second chatbot extension determines that the first response is accurate based on analysis of an external source.

[0093] Example 16: The processing system of example 15, wherein the metadata attribute indicates that the first response is accurate.

[0094] Example 17: The processing system of example 11, wherein the first configuration registers the first chatbot extension to be invoked by the chatbot when the chatbot is unable to respond to a prompt.

[0095] Example 18: The processing system of Example 11, wherein the first chatbot extension adds the first response to the conversation, wherein the second chatbot adds the second response to the conversation, and wherein providing the message of the second response for display includes providing the conversation for display.

[0096] Example 19: The processing system of example 11, wherein the second configuration states that the second chatbot extension is to be invoked after the first chatbot extension has been invoked.

[0097] Example 20: The processing system of example 11, wherein the second chatbot extension receives a stream of sub-portions of the first response as the first response is generated.

[0098] Although certain example embodiments have been described, these embodiments have been presented by way of example only and are not intended to limit the scope of the invention disclosed herein. Therefore, nothing in the foregoing description is intended to suggest that any particular feature, characteristic, step, module, or block is required or indispensable. In fact, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the spirit of the invention disclosed herein. The appended claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of certain inventions in the invention disclosed herein.

[0099] It should be understood that any reference to "first," "second," etc., elements in the Summary of the Invention and / or the Detailed Description is not intended to, and should not be interpreted as, necessarily corresponding to any reference to "first," "second," etc. elements in the claims. On the contrary, any use of "first" and "second" in the Summary of the Invention, the Detailed Description, and / or the claims can be used to distinguish between two different instances of the same element.

[0100] Finally, although various techniques have been described in language specific to structural features and / or methodological acts, it will be understood that the subject matter defined in the accompanying representations is not necessarily limited to the specific features or acts described. Rather, these specific features and acts are disclosed as example forms of implementing the claimed subject matter.

Claims

1. A method comprising: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; Receive reminders; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to the second chatbot extension; receiving a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; as well as The second response message is provided for display.

2. The method according to claim 1, further comprising: Determining to call the second chatbot extension is based on a filter condition included in the second configuration evaluating to true.

3. The method of claim 1 , wherein metadata attributes modified by the first chatbot extension are provided to the second chatbot extension.

4. The method of claim 3, wherein the first configuration states that the first chatbot extension modifies the metadata attribute. The method of claim 3 , wherein the metadata attribute indicates whether the prompt contains offensive language.

6. The method of claim 1 , wherein the second chatbot extension is provided with a dialog of messages generated by a previous chatbot extension.

7. The method of claim 6, wherein the second chatbot extension modifies the dialog of the message.

8. A computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by a processing system, causing the processing system to: receiving prompts from client devices; modifying said prompt; providing the modified prompt to the chatbot; receiving a response from the chatbot; The modified prompt and the first response are provided to a chatbot extension, causing the chatbot extension to provide a message to the client device for display.

9. The computer-readable storage medium of claim 8, wherein the chatbot extension issues a log entry based on the response.

10. The computer-readable storage medium of claim 8, wherein the chatbot is implemented using chatbot extensions, and wherein a second chatbot extension extends one of the chatbot extensions that implement the chatbot.

11. A processing system comprising: processor; as well as a computer-readable storage medium having computer-executable instructions stored thereon, the computer-executable instructions, when executed by the processor, causing the processing system to: receiving a first configuration of a first chatbot extension and a second configuration of a second chatbot extension; receiving prompts from client devices; providing the prompt to the first chatbot extension; receiving a first response from the first chatbot extension; providing the prompt and the first response to the second chatbot extension, wherein the first chatbot extension and the second chatbot extension comprise an extension pipeline; receiving a second response from the second chatbot extension, wherein the second response is generated based on the prompt and the first response; as well as The second response message is provided for display.

12. The processing system of claim 11, wherein the hint is provided to the extended pipeline, and wherein the second response is received from the extended pipeline.

13. The processing system of claim 11, wherein the first configuration declares a preferred location for the first chatbot extension in the pipeline.

14. The processing system of claim 11, wherein a chatbot provides a collection of metadata attributes to the extension pipeline, and wherein the second chatbot extension adds or modifies a metadata attribute to the collection of metadata attributes.

15. The processing system of claim 14, wherein the second chatbot extension determines that the first response is accurate based on an analysis of an external source.

16. The processing system of claim 15, wherein the metadata attribute indicates that the first response is accurate.

17. The processing system of claim 11, wherein the first configuration registers the first chatbot extension to be invoked by the chatbot when the chatbot fails to respond to the prompt.

18. The processing system of claim 11, wherein the first chatbot extension adds the first response to the conversation, wherein the second chatbot adds the second response to the conversation, and wherein providing the message of the second response for display comprises providing the conversation for display.

19. The processing system of claim 11, wherein the second configuration states that the second chatbot extension is to be invoked after the first chatbot extension has been invoked.

20. The processing system of claim 11, wherein the second chatbot extension receives a stream of sub-portions of the first response as the first response is generated.