Bot proxy for group communication service

Methods, systems, and software are disclosed herein for secured system access by means of a bot proxy for a bot within a group communication service. In an example embodiment, a bot within a selected group of a group communication service may receive a message from a user of the selected group. The bot may transmit, to a bot proxy node within a secured local network, information related to the message that is relevant to executing a selected command. The bot proxy node, in turn, may transmit an application programming interface (API) instruction to perform the selected command to a target server within the secured local network. The bot may send a response message, via the group communication service, to at least one user from the selected group based on a result of the selected command.

BACKGROUND

Group communication services can facilitate secure communications between multiple user nodes in a distributed communication environment. Members of a communication group can send messages that are broadcast to multiple other members of the group through personal communication devices in approximately real-time, over communication networks such as the internet. These communication groups allow teams or friends to stay connected even when far apart and on the move.

As individuals grow accustomed to easy and quick access to information, a way to integrate data access capabilities into a communication group would improve the robustness and appeal of group communication services. Further, allowing employees of a company to access the data and software of the company while the employees are on the move, by way of a group communication service, could improve work efficiency. However, the data and the computer systems on which the data and software are stored are valuable assets, and these assets must be protected from unauthorized access and tampering through the internet. Therefore data and computer systems may be located within a secured local network, behind protective systems such as firewalls that may interfere with access to these assets by users through a group communication service.

OVERVIEW

Technology is disclosed herein for integration of a bot application into a group communication service, which bot can access a protected network through a bot proxy interface node in response to messages from users of the group communication service. In an example embodiment, a bot within a selected group of a group communication service may receive a message from a user of the selected group. The bot may transmit, to a bot proxy node within a secured local network, information related to the message that is relevant to executing a selected command. The bot proxy node, in turn, may transmit an application programming interface (API) instruction to perform the selected command to a target server within the secured local network. The bot may send a response message, via the group communication service, to at least one user from the selected group based on a result of the selected command.

DETAILED DESCRIPTION

In the following detailed description of certain embodiments, reference is made to the accompanying drawings which form a part hereof, and which are shown by way of illustration of example embodiments. It is also to be understood that features of the embodiments and examples herein can be combined, exchanged, or removed, other embodiments may be utilized or created, and structural changes may be made without departing from the scope of the present disclosure.

In accordance with various embodiments, the methods and functions described herein may be implemented as one or more software programs running on one or more computer processors or controllers. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays, and other hardware devices can likewise be constructed to implement the methods and functions described herein. Methods and functions may be performed by modules, which may include one or more physical components of a computing device (e.g., logic, circuits, processors, etc.) configured to perform a particular task or job, or may include instructions that, when executed, can cause a processor to perform a particular task or job, or any combination thereof. Further, the methods described herein may be implemented as a computer readable storage medium or memory device including instructions that, when executed, cause a processor to perform the methods.

FIG. 1depicts a diagram of a system100including a bot proxy for a group communication service, in accordance with certain embodiments of the present disclosure. The system100may include a group communications service (GCS)102(which may also be referred to as a group messaging service), a network104, a bot service local area network (LAN)106, and a plurality of user nodes108A-108E. The network104may be a wide area network (WAN), such as the internet, connecting computing devices over a large geographical area.

The GCS102may include one or more computers, servers, or other systems to facilitate communication between user nodes108A-108E. The GCS102may permit communications between user nodes108in the form of audio messages transmitted via an over-the-top (OTT) communication service, which may use one or more networks104, such as the internet, thereby bypassing telecommunications platforms.

The GCS102may allow user nodes108A-108E to join or be added to one or more communication groups, such as group 1110and group 2112. Communication groups may include selected groupings of a subset of users less than all users of the GCS102. User nodes within a group may be able to communicate with other user nodes within the same group, via network104and GCS102. Access to a group may be restricted based on receiving an invitation from a creator or an administrator for the group, based on entering a secure password for a group, or other access-restriction methods. In an example, group 1110may include only employees of a particular company, allowing teams of employees to stay in communication with each other while working. In another example, a group may be established for fans of a particular television series so that the fans can discuss the series as a group.

In some examples, the GCS102may transmit communications from a user node108within a group to all other user nodes108within the same group, in a general broadcast. The GCS102may also permit a user node108to transmit a private message to a selected one or more users of a group to which the transmitting user node108is a member. User communications may be in the form of audio messages, which may be transmitted from the user node108over the network104to the GCS102, and then broadcast from the GCS102, over the network104, to all other user nodes108in the same group as the broadcasting user node. For example, a user of user node A108A may speak a message, which may be captured and transmitted as an audio transmission over network104to GCS102, which may in turn broadcast the message to user node B108B and user node C108C in approximately real-time.

The GCS102may maintain a user group database114. The user group database114may store information regarding all established user groups, and may include identifying information for which user nodes108are included in each group. For example, the user group database114may include a listing for group 1110that includes user or device identifiers for user node A108A, user node B108B, and user node C108C, and a listing for group 2112that includes identifiers for user node C108C, user node D108D, and user node E108E. As shown, a user node may be a member of multiple groups, as with user node C108C being a member of both group 1110and group 2112. When a user node is a member of multiple groups, messages from that user node may be broadcast to only users of a selected group identified by the transmitting user node108C (e.g. only broadcast to Group 1110), or the message may be broadcast to all groups to which the user node is a member.

Each user node108may include a transmission device112capable of connecting to the network104, such as a mobile phone, computer, smart watch, or similar device. A user node108may also include one or more personal devices116that can link to the transmission device112, such as via wired or wireless connections, including Wi-Fi®, Bluetooth®, and Bluetooth low energy (BLE). The personal device116may be configured to receive and send messages to and from the user of the user node108by way of the transmission device112. In an example embodiment, the personal device116may include a wearable speaker and microphone, such as a wearable pendant or headset, which can receive messages from a user (e.g. recording audio messages to transmit when a ‘transmit’ button on the personal device116is held down) and broadcast messages received from other users of a participant group.

The GCS102may also allow for one or more bots118to be added to a communication group. A bot118may be a software application configured to execute commands in response to messages from users of a group to which the bot has been added. For example, a bot118may be added to group 1110, being included in the group database114as either a user or special bot participant of group 1110. A user node108within a group to which a bot118has been added may transmit a message including a trigger phrase that activates functionality of the bot118. For example, user node A108A may send a message, “Weatherbot, what is the forecast for Tuesday?”. A participant bot118within group 1110may respond to the trigger phrase “Weatherbot” and may identify a request within the message to retrieve a weather forecast for Tuesday. In response, the bot118may send Tuesday's forecast to members of group 1110.

Bots118may be in the form of computer executable code stored to a memory and which, when executed, causes one or more computer processors to perform the bot's operations. Bots118may be stored and executed externally to the GCS102, for example being run at a bot service LAN106or another computer such as a transmission device112. Externally hosted bots118may be added to group(s) through the user group database114as a normal user node, with group messages sent to and received from the computer running the bot118via the network104.

In another example, bots118may be stored to and executed by a computer system of the GCS102. For example, the GCS102may maintain a bot library116of bots hosted or executed by the GCS102, such as bots A, B, and C118. An administrator for a group or the GCS102may add a bot as a participant of a group through the user group database114. When a message is received at the GCS102from a user node108of, e.g. group 1110, the GCS may look up the group 1 participants in the database114and determine whether a bot118is a member of group 1110. If so, the GCS102may perform operations on the message according to the program code for the participant bot(s)118.

In another example, a program may be stored at and executed by the GCS102that scans user messages for trigger phrases for a bot118. If a trigger phrase is detected, the GCS102may send the message to a computing device external to the GCS102that executes the code for the respective bot118. Other embodiments are also possible for managing bot integration into a group through the GCS102.

Functionality or information for a bot118may be provided by a service external to the GCS102, such as at bot service LAN106. For example, the bot service LAN106may include one or more computers or servers120, which can store information that can be accessed by a bot118, or which can perform calculations or operations on behalf of a bot118. For example, the bot service LAN106may include a weather service, with a server120storing weather information for various geographical regions. In another example, the bot service LAN106may include a hotel, with a server120having software and data of a work flow system for the hotel staff, including rooms to be cleaned or items to be delivered to hotel patrons. An administrator for the hotel bot service LAN106may request that a hotel workflow bot118be added to the bot library116, so that the hotel workflow bot118can be added to a communication group limited to staff for the hotel. Hotel staff may send communications through the GCS102to the hotel workflow bot118to access or update data at the hotel server120to determine jobs to be performed or to report when a task has been completed.

Computers120located within a bot service LAN106may include sensitive information that should be protected from unauthorized accesses over the network104. To this end, the bot service LAN106may include a firewall108to protect computers120within the bot service LAN106. The firewall108may be a network security system in the form of computers or software that filters traffic to or from bot service LAN106over the network104.

In order to facilitate communication and data access to computers120of the bot service LAN by an associated bot118, the bot service LAN106may include a bot proxy interface (I/F) node122. The bot proxy I/F node122(sometimes referred to herein as simply a bot proxy or bot proxy node) may include software running on a computer or server120of the bot service LAN106, or may include a dedicated computing device configured to perform the operations of the bot proxy described herein.

The bot proxy122may be configured to receive all access requests or commands from a bot118to the bot service LAN106, process the requests, and transmit messages from the bot service LAN106to the bot118. Messages to and from the bot proxy122may pass through the firewall108, or may optionally bypass (124) the firewall108. The bot proxy node may be configured to shield computers120of the bot service LAN106from direct internet access, and may prevent unauthorized communications (e.g. communications not received from an authorized bot118) from reaching secured servers120within the bot service LAN106. For example, the bot118associated with the bot proxy122may be configured to encrypt or digitally sign messages to the bot proxy122with a private key or another encryption method, so that only messages using the appropriate encryption can be decoded by the bot proxy122and allowed access to other computers120within the bot service LAN106.

The bot proxy122may be configured to format requests or commands from the bot118into a particular format, such as by generating an application program interface (API) instruction recognized or accepted by a target server120in order to instruct the server120to execute the command. The bot proxy122may perform other operations on messages received from the bot118, such as load balancing (e.g. distributing requests among multiple servers120to prevent overloading or delays at any particular server), routing commands to a target server120from multiple servers based on which bot-requested operations each server is configured to execute, compressing or decompressing data messages, caching recently or frequently accessed data from the servers120, or performing other processing operations. An example implementation of the system100is discussed in greater detail in regards toFIG. 2.

FIG. 2depicts a diagram of a system200including a bot proxy for a group communication service, in accordance with certain embodiments of the present disclosure. System200may correspond to system100ofFIG. 1, and reference may be made to elements from system100via corresponding identifier numbers. The system200may include a group202of at least one user nodes, a group communication service (GCS)102executing a bot C218, and a bot service LAN106including a bot proxy I/F node122.FIG. 2depicts an example implementation by which bot functionality may be invoked via the group communication server102and used to access the bot service LAN106via the bot proxy122.

A user message204may be sent (e.g. over network104) from a user node of group202to the GCS102. The user message204may be generated by a user device (e.g. transmission device112or personal device116) of a user node108. For example, a personal device116may capture audio data from a spoken message from a user. The audio data may be encoded, compressed, or otherwise processed at a device of the user node108, and may be included with other identifying information in the user message204to transmit to the GCS102. Identifying information that may be included with the user message204may include a group identifier (ID) for the group to which the message is being transmitted, a user ID associated with the user node sending the message, a message ID for the user message204, other identifying information, or any combination thereof. The user message204may be split into one or more data packets sent over the network104to the GCS102.

The user message204may be received at the GCS102and undergo message processing, for example at message processing module206. Message processing206may include extracting information from user message204, such as identifying information and audio data. Message processing206may also include performing data compression or decompression, error correction for corrupted data packets or other problems, audio data adjustments to balance sound levels or message clarity, speech-to-text conversion, other processing operations, or any combination thereof.

During message processing206, the GCS102may extract the group ID from the user message204, and access the communication groups database114to determine other user nodes within the group202to which to send the user message204. In the depicted example embodiment, the groups database114includes a first listing212A of member user nodes and bots of group 1, and a second listing212B for member user nodes and bots of a group 2, as well as listings for other communication groups. Each listing212may include identifying information for users and bots within the group. For example, each user node or bot may have a unique identifier, an internet protocol (IP) address to which messages should be sent, or other identifying information. The listing212may also identify whether a member bot is hosted at and should be processed by the GCS102, or that the bot is hosted externally to the GCS102. Particular users or bots may be included in multiple groups. For example, user C and bot C may be included in the listings for group 1212A and group 2212B. If a bot is included in more than one group, such as bot C218, a different unique instance of the bot C218may be included in each group, or a single bot instance may handle messages from all groups to which the bot C218is a member. A bot instance may be a distinct processing thread that operates independently of other processing threads for the same bot. In an example, bot C218may include a first instance208A for processing messages from group 1, and a second instance208B for processing messages from group 2.

The GCS102may forward or transmit the user message204to other user nodes108within the group202, such as to all member user nodes of the group202or to specific target user nodes identified in the user message204. If the GCS102determines that the group202includes one or more bots hosted by the GCS102, the GCS102may invoke the bot(s) based on receiving the user message204. For example, group202may include bot C218, and so the GCS102may send user message204to bot C218. In some embodiments, all user messages from a group in which bot C218is a member will be sent to bot C218, while in other embodiments only messages that invoke the functionality of bot C218may be sent to bot C218. To identify whether the user message204invokes bot C218, the audio data may be scanned by the message processing node206or the bot C218software for one or more trigger phrases. Trigger phrases may include a name for bot C218, or a specific command that bot C218recognizes (e.g. “what is the weather?”). The audio data may be scanned for a trigger phrase directly (e.g. by searching the audio data for a recognized audial data sequence), or by first converting the audio data to another format. For example, the audio data may undergo speech-to-text conversion during message processing206or by the bot C218to generate a text version of the audio data, and then the text may be scanned for a trigger phrase.

As explained above, the processor or computer executing bot C218may run or maintain multiple instances of bot C218for handling messages from different groups, such as instance 1208A and instance 2208B. A user message204may be provided to the instance corresponding to the group from which the user message204was received.

Bot C218may execute program code or method500A based on receiving a message, where500A may correspond to the method flow diagram500A ofFIG. 5. Bot C218may process the user message204, which may include converting the audio data into a text message or other parsable format, and then scanning the audio or text data to determine a particular function or command for bot C218to execute. If bot C218determines that the message does not invoke functionality of bot C218, or includes a command that bot C218does not recognize, it may disregard the message or sent a response message210that indicates that no command was recognized.

A response message210may be generated by bot C218with result information for a user command in audio format, or in a text format that may be converted to an audio format by message processing node206of the GCS102. The response message210may also include information or metadata identifying a target group or user node to which the message should be sent via the GCS102.

If bot C218does recognize a command in the user message204, bot C218may generate a bot message214to send to the bot proxy node122. Bot message214may include various identifying information or metadata, such as a bot ID for bot C218(which may include a unique identifier for a particular bot instance208), a message ID for the bot message214, a type of command to be executed at the bot service LAN106, and one or more variables to define the parameters of the command type. For example, for a hotel management bot C218, a command type may include a request to send items to a particular room, where the variables may include one or more items to deliver, the room number, and a priority level. The type of command and relevant variables may be extracted by bot C218from the audio data of the user message204. In some embodiments, bot C218may format the command type and variables into an API format that can be processed by a target server of the bot service LAN106. Bot C218may maintain addressing information, encryption information, or other information that can be used to generate the bot message214and send it across network104, so that it will be received and accepted at the bot proxy node122.

Bot proxy node122may receive the bot message214and perform command processing instructions220, which may include executing program code or method500B, where500B may correspond to the method flow diagram500B ofFIG. 5. The bot proxy122may verify the source or authenticity of the bot message214, including performing decryption or digital signature verification. The bot proxy122may also determine a target server from a plurality of servers of the bot service LAN106based on the command or other metadata included in the bot message214. For example, bot service LAN106may include a bot service server 1216A, bot service server 2216B, and bot service server 3216C. Each bot service server may be configured to service or perform different types of commands, may be configured to distribute a processing load of incoming commands, or otherwise may be configured to work together or independently to service incoming commands from one or more bots. For example, bot service server 1216A may handle reservation requests for a hotel, bot service server 2216B may handle maintenance and cleaning requests from hotel staff, and bot service server 3216C may handle service requests from hotel patrons. In some embodiments, the different command types may originate from different bots, different instances of a same bot in different origin groups, or all from a single bot in a single group. The bot proxy122may identify a target server216based on a command type, bot ID, server load distribution, other factors, or any combination thereof. The bot proxy122may store or access LAN addressing information222to determine where to send each message to reach the determined target server216.

Command processing instructions220may also direct the bot proxy122to generate an API instruction or command based on the received bot message214and the target server216. For example, different servers216may accept commands in different API formats, and the bot proxy122includes instructions220on which API format to use based on the target server. Alternately, the bot message214may include a pre-formatted API instruction for the bot proxy to forward to the target server216.

After sending a command to a target server216, the bot proxy122may wait to receive a response from the target server216, including a result or acknowledgement for the command. The bot proxy122may generate a response message224, which may include a target bot ID, message ID, and a response data payload indicating the results from the target server216. The bot C218may receive the response224, and may generate a response message210to send to one or more user nodes108of group202in response to the user message204. The result information in the response message210may be converted from a text format to an audio format by bot C218, by message processing node206, or may be sent to group202in a text format. Response message210may be encoded for transmission by message procession module206of GCS102. The response message210may be received at transmission devices112of user nodes108in group202, and may be presented as an audio or text message at transmission device112or personal device116. An example method flow diagram for system200is discussed in regard toFIG. 3.

FIG. 3is a method flow diagram of a system including a bot proxy for a group communication service, in accordance with certain embodiments of the present disclosure. The method flow diagram illustrates information sent between and operations performed at elements of system200, such as group202, GCS102, bot218, bot interface proxy122, and bot service server(s)216. The method flow may proceed from the top to the bottom ofFIG. 3, although some elements may be performed in a different order from that depicted, omitted, or additional elements may be performed that are not illustrated.

A user node included in group202may send a message to GCS102. GCS102may process the message, such as performing decryption, error correction, decompression, data extraction, speech-to-text conversion, trigger phrase searches, other operations, or any combination thereof. Based on information extracted from the user message, the GCS102may identify members of group202, including bot218, for example by accessing a user groups database. The GCS102may then transmit the user message, or data from the user message, to bot218. The message may be transmitted over a network if bot218is not hosted or executed at the GCS102, or the message may be passed to an instance of the bot executing on a GCS102server, computer, or processor. In some embodiments, the GCS102may determine whether the user message includes a trigger phrase that invokes bot218before sending the message to the bot218.

The bot218may receive and perform processing on the message. Processing may include converting the message from speech to text format, or parsing the message to determine whether the message includes one or more trigger phrases to invoke an operation of the bot218. If the message does invoke functionality of the bot218, the bot218may extract information relevant to the bot operation from the message, such as a command type and variable information that may be used to execute the bot functionality. Processing the message may also include generating and sending a message to the bot proxy122, which message may include a command type, variables, a target server, an API instruction or command, other information, or any combination thereof. The bot218may encrypt or digitally sign the message to authenticate the message to the bot proxy122.

The bot proxy122may receive the message from bot218, and may perform processing on the message, such as decrypting the message, extracting a command type and variables data from the message, determining a target bot service server216for the command, generating an API command for execution at the sever216, performing other processing, or any combination thereof. The bot proxy122may determine an address of the target server within the secured LAN that includes the bot proxy122and bot servers216, and transmit an API command to the target protected server216. The bot service server216may execute the command and return a result to the bot proxy122. The bot proxy122may generate a message to return the result to the bot218, encrypt or otherwise encode the message, and transmit the message to the bot218(e.g. based on addressing or bot ID information included in the message received from the bot218).

Bot218may receive the result from the bot proxy122, and process the result. Processing may include extracting result information, generating a result message to send to one or more users of group202, performing text-to-speech conversion, other processing, or any combination thereof. The bot218may send the result message to the GCS102for broadcasting to one or more member user nodes of group202.

The GCS102may process the result message, such as by converting a text result message to an audio format using a text-to-speech converting service or system, and putting the result message in a format suitable for transmission over the network104. The GCS102may identify one or more target members of group202, for example by looking up addresses of user nodes in group202based on a group ID included with the result message from the bot218. In some embodiments, the result message may be transmitted to only a subset of members of group202, which may be based on user node identifiers included with the original user message or the result message from the bot218. For example, the result message may only be sent to the user node that transmitted the message including the bot trigger phrase. The GCS102may transmit the result message to the identified recipient(s) from group202.FIG. 4illustrates a flowchart for another method of using a bot proxy for group communication services as described herein.

FIG. 4is a flow diagram for a method400of using a bot proxy for a group communication service, in accordance with certain embodiments of the present disclosure. The method400may be performed by components of a group messaging architecture, such as group communication service102, bot C218, and bot proxy I/F node122of system200.

The method400may include adding a bot as a member of a communication group, at402. For example, an administrator for a communication group, or of the GCS, can use an interface portal (such as a website or mobile app) to add a bot as a member of the communication group. An administrator may select the bot to add from a library of pre-existing bots stored at and executed by the GCS. A new bot may be uploaded to the library of bots for hosting at the GCS. Alternately, an IP address or other addressing information may be provided for a bot hosted remotely from the GCS.

At404, a message may be received from a communication group in which the bot is a participant. The message may be processed into a parsable format, at406, such as by converting audio speech data into a text format. The parsable data may be analyzed to determine whether the message invokes a function of the bot, at408. For example, the message data may be searched for one or more trigger phrases or keywords to invoke a bot response. If the message does not invoke bot functionality, the method400may include disregarding the message, at410.

If the message does invoke bot functionality, the method400may include transmitting a bot request, including data relevant to the invoked bot function, from a bot to a bot proxy node, at412. For example, a command type, one or more command variables, a bot ID, group ID, user node ID, message ID, or other information may be sent to the bot proxy. At414, the method400may include determining a target protected server of a bot service LAN to service the bot request. The target protected server may be selected based on a command type, a group ID, a bot ID, server processing loads, other information, or a combination thereof. Method400may include generating an API command based on the relevant data from the bot request and the target server, at416, and transmitting the API command to the target server, at418.

At420, a response may be received from the target server, and the response may be transmitted to the bot. The response may then be formatted into a communication message for submission to one or more user nodes of the group that sent the message invoking the bot functionality, at422. For example, a result from the target server may be incorporated into a natural-language message, and a spoken audio form of the result message may be generated for transmission to user nodes. At424, the method400may include transmitting the communication message to the communication group in which the bot is a participant member.

In some embodiments, various steps of the methods disclosed herein may be omitted. For example, some bot operations may not result in a response message being sent to the group. In an exemplary embodiment, a user command to have the bot update a database may be performed by the bot silently, without the need to relay a response from a bot service server to members of the group. In such an embodiment, steps420through424may be omitted.

FIG. 5depicts another a flow diagram for a method of using a bot proxy for a group communication service, in accordance with certain embodiments of the present disclosure. The method ofFIG. 5may be conceptually divided into method steps500A, which may be performed by a bot, and method steps500B, which may be performed by a bot proxy I/F node. The method ofFIG. 5may be performed by components of a group messaging architecture, such as bot C218and bot proxy I/F node122of system200.

Beginning at502of method500A, a bot may receive a message from a user in a group in which the bot is a member or participant. At504, the bot may convert the message from an audio data format to a text format, for example using a speech-to-text converter. The bot may process the message to detect a trigger phrase, at506. For example, the bot may search the user message for one or more keywords that triggers a response from the bot. Trigger phrases may include a “name” for the bot, or a command phrasing that the bot is configured to recognize. The bot may identify a selected command based on the trigger phrase, or based on employing language parsing algorithms after a trigger phrase is detected, at508. The bot may transmit information relevant to the selected command to a bot proxy node associated with the bot, at510.

In method500B, the bot proxy node may receive the transmission from the bot, and may determine a target server from a plurality of servers within a secured LAN based on the selected command, at512. The bot proxy may generate an API instruction based on the information from the bot, the target server, other factors, a combination thereof, at514. At516, the bot proxy may transmit the API instruction to the target server, and may receive a response from the target server at518. The bot proxy may transmit result information to the bot based on the response, at520.

Resuming in method500A, the bot may receive the result information from the bot proxy, and generate a response message based on the result information, at522. The bot may format the response message into a natural language sentence or phrase configured to communicate the results of the selected command to a human recipient. At524, the bot may send the response message to the participant group, or to a subset of the user nodes of the recipient group, via a GCS. An example computing system configured to perform the methods and operations described herein is discussed in regard toFIG. 6.

FIG. 6is a diagram of a system600including a bot proxy for a group communication service in accordance with certain embodiments of the present disclosure. The computing system600may be one or more devices configured to perform the operations for a group communication service and bot proxy, including operations of the method flow diagram ofFIG. 3, the method ofFIG. 4, and the method ofFIG. 5. In some examples, the computing system600may include or be an example of one or more user devices112or116, one or more computers operating at the group communication service (GCS)102, one or more computers running a bot instance, one or more computers of a bot proxy I/F node122, one or more servers216of a bot service LAN106, or other computing devices of a group communication system architecture.

The computing system600may include a processing system602, a storage system604, a communication interface (I/F) system606, and a user I/F system608. The one or more of the components of the computing system600may be included on a single integrated circuit (e.g. a system on a chip, SoC), may be distributed among several circuits or hardware components, may be implemented as firmware or software modules executed by microprocessors, or in other configurations.

The processing system602may include one or more microprocessors or integrated circuits, such as application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other processor designs. The processing system602may include associated memory such as random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), or other volatile or nonvolatile memory. The processing system602may load instructions, executable code, or pending commands to the memory during operation.

The storage system604may include one or more nonvolatile data storage devices, such as hard disk drives, NAND Flash memory drives, read only memory (ROM), or other memory devices. The storage system605may store computer-readable instructions in the form of software or firmware code, which can be loaded into a memory of the processing system602and executed to cause a processor to perform a method according to the instructions. For example, the storage system604may store instructions for a bot proxy process400, which may correspond to one or more steps of the method400ofFIG. 4. The storage system may also store other information, such as communication group databases, bot-accessible databases or software systems, or other information or software instructions.

Communication I/F system606may include one or more wired or wireless communication I/F circuits allowing the computing system600to communicate with other devices over a network or other remote connection. For example, communication I/F system600may include an Ethernet port, a Wi-Fi transceiver, a Bluetooth transceiver, or other interface protocol elements.

User I/F system608may include one or more systems with which a user can interact, or which allow user interface devices to be connected to computing system600. For example, user I/F system608may include a display screen or monitor, a touch screen interface, a pointer device such as a mouse or trackpad, a keyboard, a speaker, a microphone, other devices, or a port that allows such devices to connect to the computing system600, such as a universal serial bus (USB) port.

The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatuses and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown.