This application incorporates by reference for all purposes the full disclosure of co-pending U.S. patent application Ser. No. 16/744,017, filed Jan. 15, 2020, entitled “INTERFACE CLASSIFICATION SYSTEM” (Attorney Docket No. 0101560-015US0); U.S. patent application Ser. No. 16/744,021, filed Jan. 15, 2020, entitled “METHOD OF TRAINING A LEARNING SYSTEM TO CLASSIFY INTERFACES” (Attorney Docket No. 0101560-019US0); U.S. Pat. No. 10,846,106, filed Mar. 9, 2020, entitled “REAL-TIME INTERFACE CLASSIFICATION IN AN APPLICATION” (Attorney Docket No. 0101560-016US0); U.S. patent application Ser. No. 17/101,744, filed Nov. 23, 2020, entitled “REAL-TIME INTERFACE CLASSIFICATION IN AN APPLICATION” (Attorney Docket No. 0101560-016US1); U.S. patent application Ser. No. 16/680,392, filed Nov. 11, 2019, entitled “DYNAMIC LOCATION AND EXTRACTION OF A USER INTERFACE ELEMENT STATE IN A USER INTERFACE THAT IS DEPENDENT ON AN EVENT OCCURRENCE IN A DIFFERENT USER INTERFACE” (Attorney Docket No. 0101560-008US0); U.S. patent application Ser. No. 16/680,396, filed Nov. 11, 2019, entitled “UNSUPERVISED LOCATION AND EXTRACTION OF OPTION ELEMENTS IN A USER INTERFACE” (Attorney Docket No. 0101560-009US0); U.S. patent application Ser. No. 16/680,403, filed Nov. 11, 2019, entitled “DYNAMIC IDENTIFICATION OF USER INTERFACE ELEMENTS THROUGH UNSUPERVISED EXPLORATION” (Attorney Docket No. 0101560-010US0); U.S. patent application Ser. No. 16/680,406, filed Nov. 11, 2019, entitled “LOCATION AND EXTRACTION OF ITEM ELEMENTS IN A USER INTERFACE” (Attorney Docket No. 0101560-011US0); U.S. patent application Ser. No. 16/680,408, filed Nov. 11, 2019, entitled “UNSUPERVISED LOCATION AND EXTRACTION OF QUANTITY AND UNIT VALUE ELEMENTS IN A USER INTERFACE” (Attorney Docket No. 0101560-012US0); and U.S. patent application Ser. No. 16/680,410, filed Nov. 11, 2019, entitled “EXTRACTION AND RESTORATION OF OPTION SELECTIONS IN A USER INTERFACE” (Attorney Docket No. 0101560-013US0).
Enabling users of an interactive multiuser computer service to perform operations requiring authentication with a third-party service or application is often cumbersome or impractical unless that third-party service or application has been integrated in some manner with the interactive multiuser computer service platform itself. Without such integration, performing some actions involving the third-party service or application typically cannot be initiated from the interactive multiuser computer service platform and requires that the user perform the actions directly with the third-party service or application rather than through the interactive multiuser computer service. Additionally, it is difficult for other users of the interactive multiuser computer service to verify, on the interactive multiuser computer service platform, the validity of a claim by a user purporting to have performed some action that would have required authentication to the third-party service or application.
Various techniques will be described with reference to the drawings, in which:
Various interactive multiuser computer services include features where users of their platform can mark information they share with a metadata tag that enables cross-referencing of content. A metadata tag can often be searchable and trackable by monitoring services, and many entities utilize these metadata tags to further viral movements on the interactive multiuser computer service platforms. Techniques and systems described below relate to a system that, using metadata tags, can authenticate a user of an interactive multiuser computer service outside of the interactive multiuser computer service platform and perform an operation requiring authentication initiated from the interactive multiuser computer service.
In one example, a filter rule that corresponds to a first set of user records at a service provider is provided to a monitoring service. In the example, a first notification is received from the monitoring service indicating that a match to the filter rule has been detected in a first message on a platform of an interactive multiuser computer service, where the match includes a value, and where the first message was generated by a user of the platform.
Further in the example, as a result of determining that the user is associated with a second set of user records at the service provider, an application on the client device is caused, by transmitting a second notification to a client device of the user, to generate an interface with a prompt to authorize a transfer according to the value. Still in the example the transfer is completed in response to receiving, from the client device, an authorization of the transfer. Finally, in the example, a third message indicating successful completion of the transfer is transmitted to the interactive multiuser computer service.
In the preceding and following description, various techniques are described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of possible ways of implementing the techniques. However, it will also be apparent that the techniques described below may be implemented in different configurations without the specific details. Furthermore, well-known features may be omitted or simplified to avoid obscuring the techniques being described.
Techniques described and suggested in the present disclosure improve the field of computing, especially the field of user authentication, by detecting from a message on an interactive multiuser computer service platform that a user seeks to perform an action that requires authentication, and authenticating the user without further operations performed by the interactive multiuser computer service. Additionally, techniques described and suggested in the present disclosure improve the efficiency of interactive multiuser computer services because it allows third-party services to interact with and authenticate users of the interactive multiuser computer service without requiring special hardware or software integration with the interactive multiuser computer service platform. Moreover, techniques described and suggested in the present disclosure are necessarily rooted in computer technology in order to overcome problems specifically arising with the lack of ability to authenticate users of an interactive multiuser computer service without involving the interactive multiuser computer service in the authentication.
The user 102 may represent an individual, a computing system, an executing software application, a computing service, a computing resource, or other entity capable of controlling input to and receiving (e.g., visually, auditorily, etc.) output from the client device 104. The user 102 may have access to a set of user records and/or a profile with the interactive multiuser computer service 108, and may have a set of credentials (e.g., username, password, etc.) registered with the interactive multiuser computer service 108. In the present disclosure, a “set of user records” refers to a stored set of information at the respective service (e.g., the provider service 112, the monitoring service 110, the interactive multiuser computer service 108, etc.) that allows a user, an entity, or another service to authenticate to the respective service and to receive authorization to access resources provided by or connected to the respective service. To connect (log on) to the respective service, the connecting user, entity, or other service may authenticate itself with a username and password or other credentials. For example, the user 102 may authenticate to the interactive multiuser computer service 108 by presenting proof of possession of security credentials, such as by inputting one or more of a username, a password, access key, and/or digital signature via the client device 104, to gain access to the set of user records with the interactive multiuser computer service 108. The set of user records may include additional information associated with the respective user, entity, or other service, such as an identity of an account with the interactive multiuser computer service 108, one or more filter rules for the user, entity, or other service, an amount of a particular unit type that can be transferred out of the set of user records to another set of user records, and so on. The provider service 112 may store the set of user records for its users in the data store 114.
The client device 104, in some embodiments, is embodied as a physical device and may be able to send and/or receive requests, messages, or information over an appropriate network. Examples of such devices include personal computers, cellular telephones, handheld messaging devices, laptop computers, tablet computing devices, set-top boxes, personal data assistants, embedded computer systems, electronic book readers, and the like, such as the computing device 1500 described in conjunction with
The interactive multiuser computer service 108 may be a computing resource service that allows users to share messages, digital images, and/or videos with other users of the interactive multiuser computer service 108. The interactive multiuser computer service 108 may be a social networking service that enables users to build social networks or social relationships with other users who share similar interests, activities, backgrounds, or connections with other users. Additionally or alternatively, the interactive multiuser computer service 108 may be a blogging or microblogging service that allows users to transfer content, such as text, images, or video. Additionally or alternatively, the interactive multiuser computer service 108 may be a messaging service that allows users to send text messages, voice messages, share images, documents, user locations, live video, or other content with other users. Examples of interactive multiuser computer services include Twitter, Facebook, Parler, MySpace, Google+, Tumblr, YouTube, Instagram, Tik Tok, Snapchat, Reddit, Pinterest, Quora, Skype, and WhatsApp.
The interactive multiuser computer service 108 may provide each user with an individual forum on the interactive multiuser computer service 108 platform for the user to share content (e.g., the first message 106) and for other users to view, listen to, interact with, respond to, and comment upon the shared content (e.g., the second message 120). In some examples, a “platform” refers to software and/or hardware through which a computer service, such as the interactive multiuser computer service 108, implements its services for its users. The interactive multiuser computer service 108 platform may include functionality that allows the use of metadata tags. In some examples, a “metadata tag” refers to a keyword or term assigned to a piece of information. A metadata tag may help to describe an item to a classification, indicate possession, note boundaries, or indicate online identity and allowed to be found by browsing or searching. A metadata tag may be chosen informally by an item's creator or by its viewer. An example of a metadata tag is a hashtag. In some examples, a “hashtag” refers to a metadata tag that is prefaced by a hash symbol (#). Note however, that it is contemplated that a metadata tag may be prefaced or appended by various symbols or character combinations other than hash symbol, or may not even be prefaced or appended by a symbol at all.
The first message 106 may be data, such as text, graphics, audio, video, animation, or a hyperlink, directed by the client device 104 under the control of the user 102 to be uploaded to the interactive multiuser computer service 108. As noted above, the user 102 may have a set of user records with the interactive multiuser computer service 108 that includes a forum associated with the user 102 whereby the first message 106 may be posted to the forum and shared with other users of the interactive multiuser computer service 108. The first message 106 may also include one or more metadata tags as described in the present disclosure. An illustrative example of the first message 106 can be seen in
The monitoring service 110 may be a third-party service for monitoring interactive multiuser computer service platforms. The monitoring service 110 may deliver alerts to its clients when it detects a match to a filter rule in a forum on a monitored interactive multiuser computer service platform. In various embodiments, the provider service 112 may be a client of the monitoring service 110. In some examples, “detect” refers to sense, perceive, identify, discover, ascertain, respond to, and/or receive the existence, presence, and/or fact of. In various embodiments, a “match” does not necessarily require equality. For example, two values may match if they are not equal but are equivalent. As another example, two values may match if they correspond to a common object (e.g., value) or are in some predetermined way complementary and/or they satisfy one or more matching criteria. Generally, any way of determining whether there is a match may be used. For example, a regular expression filter rule of “ab+c” may match “abc,” “abbc,” “abbbc,” and so on (but not “ac”).
The provider service 112 may be another third-party service to which the user 102 may be subscribed. The provider service 112 may have the ability to enable a transfer of items, services, or value between the user 102 and the entity 116. In some embodiments, the provider service 112 may be capable of authenticating the user 102 as described in the present disclosure. The provider service 112 may provide a software application to the user 102 for execution on the client device 104, and the software application, when executed, may aid in enabling the transfer and/or authentication. In some implementations, the provider service 112 may be a services provider that provides network accessible systems to enable value transfers between users and other entities.
The data store 114 may be may be a repository providing non-transitory, persistent (non-volatile) storage for data objects, such as database records, flat files, and other data objects. Examples of data stores include file systems, relational databases, non-relational databases, object-oriented databases, comma delimited files, and other files. In some implementations, the data store 114 is a distributed data store. The data store 114 may store set of user records information for the user 102 and information identifying the user 102's set of user records with the interactive multiuser computer service 108. In this manner, the provider service 112 can determine which of its users is associated with the first message 106 on the interactive multiuser computer service 108 platform. Additionally or alternatively, the data store 114 may store set of user records information for the entity 116 and one or more filter rules associated with the entity 116. In this manner, the provider service 112 can determine which entity is to be the recipient of the transfer depending on the filter rule matched by the monitoring service.
For example, the user 102 may register his/her interactive multiuser computer service set of user records with the provider service 112. The provider service 112 may perform an initial verification process (e.g., using an application programming interface of the interactive multiuser computer service 108) to confirm that the interactive multiuser computer service 108 set of user records corresponds to the user 102. Thereafter, if the monitoring service 110 notifies the provider service 112 that a user set of user records of the interactive multiuser computer service 108 is associated with a posting of a metadata tag that corresponds with a filter rule provided by the provider service 112, the provider service 112 can access the data store 114 to determine that the interactive multiuser computer service 108 user set of user records corresponds to the user 102. Accordingly, the provider service 112 can push the notification 118 to the client device 104 of the user 102 to prompt the user 102 to initiate a process associated with the filter rule. In some examples, an application programming interface refers to a set of subroutine definitions, communication protocols, and/or software tools that provide a method of communication with components of a computing service, such as the monitoring service 110, a service of the provider service 112, or the interactive multiuser computer service 108.
The data store 114 may also store the relationship between the filter rule and the entity 116. As an illustrative example, the entity 116 may be a nature preserve named “MotherEarth” and may register a filter rule involving a hashtag “#TipMotherEarth” with the provider service 112. Thereafter, if the monitoring service 110 detects and reports to the provider service 112 that the first message 106 includes the “#TipMotherEarth” hashtag, the provider service 112 may access the data store 114 to identify that the hashtag corresponds to the “MotherEarth” entity and perform a process involving the user 102 and the entity 116, such as a transfer of value from the user 102 to the entity 116.
The entity 116 may be an individual, a group of individuals, an enterprise, or other group of individuals that has registered a filter rule, with the provider service 112, of the type described in the present disclosure. In some embodiments, the entity 116 is another user of the interactive multiuser computer service 108 also having a set of user records at the provider service 112.
The notification 118 may be an alert, a signal, or a message sent to the client device 104 by the provider service 112. In embodiments, the notification 118 is sent to the client device 104 through a network, such as the Internet, which may trigger the client device 104 to display an alert. The client device 104 may have downloaded and installed software application from the provider service 112, and selecting the alert or launching the downloaded software application may cause the notification 118 to be displayed to the user 102 on the client device 104. However, it is also contemplated that, in some embodiments, the notification 118 may be provided to the client device 104 via the interactive multiuser computer service 108; for example, the interactive multiuser computer service 108 platform may include a direct messaging feature through which the provider service 112 can additionally or alternatively direct the notification 118 to the user 102. In such an embodiment, selecting a hyperlink or other interface object (e.g., a graphical button) in the direct message via downloaded software for the interactive multiuser computer service 108 on the client device 104 may launch the downloaded software application from the provider service 112 on the client device 104. An illustrative example of such direct message can be seen in
Launching the downloaded software application of the provider service 112 on the client device 104 may cause the client device 104 to continue with the process initiated by the metadata tag that the user 102 included in the first message 106. As one example, as can be seen in
The second message 120 may be a response to the first message 106. For example, if the user 102 agreed to proceed with the transfer depicted in
The message 206 may be a message similar to the first message 106 of
The hashtag 222 may be a metadata tag that matches a filter rule associated with the entity of
The image 232 may be a digital image uploaded to the interactive multiuser computer service platform by the user. The image 232 may be two-dimensional image of a scene captured by an image capture device. The image 232 may be a numeric (e.g., binary) representation of a two-dimensional image that comprises a set of picture elements (pixels). The image 232 may contain a fixed number of rows and columns of pixels holding values that represent the brightness of a given color at that specific point. The image 232 may be formatted according to a specific image format, such as Graphics Interchange Format (GIF), JPEG, Portable Network Graphics (PNG), bitmap (BMP), or Tagged Image File Format (TIFF). In the illustrative example of
The monitoring service 310 may be, similar to the monitoring service 110 of
The metadata tag 322 may be a keyword or term associated with an entity, such as the entity 116 of
The filter rule being monitored by the monitoring service 310 may further include a numeric value 326 and/or a unit type 324. The numeric value 326 may be a number indicating an amount of the unit type 324. Although the regular expression filter rule given as an example above is specific to whole numbers, it is contemplated that filter rules using fractional or exponential numbers could be utilized in some implementations.
The unit type 324 may be any type of unit that can be quantized. In the illustrative example in
It is contemplated that the order of the metadata tag 322, the unit type 324, and the numeric value 326 could vary depending on implementation. For example, the unit type 324 and the numeric value 326 could be reversed or could precede the metadata tag 322. It is further contemplated that, in some embodiments, the unit type 324 and the numeric value 326 need not be included. For example, if the user prefers to keep the amount of the contribution to MotherEarth private, the user could just input “#TipMotherEarth” without an amount. In the interface of a software application of the provider service 112 running on the client device 104, such as the interface 500 of
It is still further contemplated that the transfer described in the present disclosure need not be a one-way transfer, but may involve a multi-directional transfer. For example, the entity 116 of
It is further contemplated that the transfer may be between two users of the interactive multiuser computer service. For example, the user 102 of
The notification 418 may be an indication to the user that the user's use of a metadata tag (e.g., the hashtag 222 of
As noted above, the interface 500 may be an interface of a software application provided by the provider service for enabling a process initiated by the user's use of the metadata tag on the interactive multiuser computer service platform. The interface 500 may include various interface elements to relay information to the user and to allow the user to interact with the software application executing on the client device. The software application to which the interface 500 corresponds may be provided to the user for execution on the client device by the provider service. When the software application launches, it may require the user to authenticate with the provider service, such as by prompting the user to provide proof of possession of credentials (e.g., username and password), provide biometric data (e.g., facial recognition, thumbprint, etc.), perform multi-factor authentication, or some other manner of confirming the user's identity. Once the application has authenticated the user, the provider service can confirm access its data store (e.g., the data store 114 of
The heading 528 may be a short description of the subject presented by the interface 500. In the illustrative example depicted in
The entity identity 532 may be a logo or other identifying mark identifying the recipient of the transfer. The entity identity 532 may provide additional assurance to the user that the transfer is being directed to the correct entity (e.g., the entity 116 if
The accept/cancel control objects 536 may be a pair of interface control elements whereby the user, by tapping on a touchscreen, selecting/clicking via a pointer, etc., can authorize the transfer and allow the process to proceed to the next step, or cancel the transfer and thereby abort the process. Selecting one or the other of the accept/cancel control objects 536 may send an indication of the selection to the provider service of the software application, whereupon the provider service may continue with performing the process (if the user accepted) or cancel performance of the process (if the user selected “Cancel”).
Note that the interface 500 is meant to be illustrative only, and it is contemplated that such an interface may vary from the interface 500 depicted in
As noted above, the interface 600 may be the interface 200 of
The metadata tag 622 may indicate that the second message 620 is provided on behalf of the entity of the transfer in response to the metadata tag 622 included in the first message 606. The second message 620 may be similar to the second message 120 of
Although not depicted in
The client device 740 may be similar to the client device 104 of
In 702, the user uploads a message to the interactive multiuser computer service via the client device 740. The message may include a metadata tag and/or other characters or values that match a filter rule being monitored for on the interactive multiuser computer service by the platform monitoring service.
In 704, the interactive multiuser computer service, having received the message, posts the message on its platform. The message may be posted on a public forum accessible to all or on a private forum of the interactive multiuser computer service accessible to a limited number of users and the platform monitoring service. An example of such a posted message can be seen in the interface 200 of
In 706, in the course of monitoring the interactive multiuser computer service platform, the platform monitoring service detects, in the message, a filter match (a match to a filter rule) provided to the platform monitoring service by the provider service. As a result of detecting the filter match, the platform monitoring service notifies the provider service of the match. The notification sent by the platform monitoring service to the provider service may include an identifier identifying the filter rule whose match was detected so that the provider service can match the filter rule to its corresponding entity.
In 708, the provider service determines if the user whose set of user records is associated with the message posted on the interactive multiuser computer service platform has a set of user records with the provider service. If the user does not have a set of user records with the provider service, the provider service may proceed to perform 710 and respond to the message posted by the user on the interactive multiuser computer service platform or direct message the user on the interactive multiuser computer service to register with the provider service in order to complete the transfer initiated by the answer.
In 712, the client device receives the prompt from the provider service for the user to register with the provider service. In 714, the user and the provider service perform a registration process (not pictured) to register the user with a set of user records with the provider service. Once the user has a set of user records set up with the provider service, the client device may proceed to 720, whereupon the user is prompted to confirm the transfer initiated with the message in 702.
However, if the user is registered with the provider service, in 716, the provider service may send a confirmation notification to prompt the user to confirm whether to proceed with the transfer initiated in 702. In 718, the client device notifies the user of the confirmation notification from the provider service, such as via the interface 400 of
In 722, the provider service determines whether the metadata tag and or other symbols that match the filter rule correspond to an entity registered with the provider service. If yes, the provider service proceeds to perform the operations of 728 to complete the transfer. If no, the process performed by the provider service may proceed to 724 to perform an entity interface process to complete the transfer through an interface (e.g., a website) of the entity (e.g., the process 800 of
In 728, the provider service completes the transfer with the entity. For example, the provider service may enable the transfer by transferring an amount corresponding to the amount indicated in the message of 702 from the user's set of user records to the provider service, and transferring the same amount from the provider service to the entity. In 730, the provider service responds to the message posted with the interactive multiuser computer service in 704 with the reply indicating completion of the process initiated in 702. In response, in 732, the interactive multiuser computer service posts the reply on its platform. An example of the reply can be seen with the second message 620 of
Note that one or more of the operations performed in 702-32 may be performed in various orders and combinations, including in parallel. For example, in some implementations, the operations of 722-26 may be performed prior to or in parallel with the operations of 708-20.
In 804, the system performing the process 700 determines an address of a website corresponding to the entity. It is contemplated that this determination may be made in a variety of ways, such as a list that the provider service has compiled mapping entities to the respective websites or by implementing a software agent, such as an Internet bot, to dynamically utilize an Internet search engine using an application programming interface provided by the search engine provider service or by simulating human interaction with the Internet search engine, to perform a search on the name of the entity. For example, in
The website of the entity may be unfamiliar to the provider service, and the manner in which value may be transferred from the provider service to the entity may not immediately be known to the provider service. Thus, in 806, the system performing the process 800 may utilize a machine learning algorithm in the manner described in U.S. patent application Ser. No. 16/744,017, U.S. patent application Ser. No. 16/744,021, U.S. Pat. No. 10,846,106, U.S. patent application Ser. No. 17/101,744, U.S. patent application Ser. No. 16/680,392, U.S. patent application Ser. No. 16/680,396, U.S. patent application Ser. No. 16/680,403, U.S. patent application Ser. No. 16/680,406, U.S. patent application Ser. No. 16/680,408, and U.S. patent application Ser. No. 16/680,410, fully incorporated by reference above, to identify the control functions of the website of the entity.
In 808, the system performing the process 800 utilizes the results of the machine learning algorithm of 806 to interact, such as by simulating human interaction with the elements of the interface determined usable to transfer the value from the provider service to the entity. In some examples, simulating human interaction (also referred to as performing simulated human interaction) refers to dynamically simulating input events (e.g., OnClick, OnMouseOver, OnDblClick, OnSelect, OnTouchStart, OnDrag, OnSubmit, etc. events) without human intervention. In 810, the system performing the process returns to 726 of
In 902, the client device having received a message input by the user through an interface of the client device, uploads the message to an interactive multiuser computer service platform. The message may be similar to the first message 106 of
In 904, after the upload of the message to the interactive multiuser computer service, the client device may receive a notification, such as the notification 118 of
In 908, the client device receives input from the user to proceed with the next portion of the process. For example, the user may select the “Click Here” hyperlink on the interface 400 of
Receipt of the input from the user may cause the client device to display, in 910, an authorization prompt for the provider service. The authorization prompt may prompt the user to authorize the provider service to proceed with the process initiated by the user in the message of 902. An example of such an authorization prompt is the interface 500 of
In 912, the client device receives input from the user, such as an input indicating acceptance or cancellation of the transfer depicted in the interface 500 of
In 1002, the software application executing on the client device receives information from the client device or from the provider service indicating that the provider service has sent a notification to the client device for the user to authorize whether or not to proceed with the process. The software application may receive the information as a result of a user selecting to proceed with the authorization from a notification screen, such as the interface 400 of
In 1004, the software application executing on the client device generates and displays an interface on a screen of the client device with functionality to allow the user to authorize proceeding with the process or to disallow preceding with the process. An example of the interface is the interface 500 of
In 1006, the software application executing on the client device receives a selection from the user through the interface, such as via touchscreen input, movement of an input device, voice command, or other such input, the input indicating approval or disapproval of proceeding with the process. In 1008, the software application determines which of either approval or disapproval the input received from the user in 1006 corresponds to. If the input indicated approval, the software application proceeds to 1010 and provides a notification to the provider service that the user selected to authorize proceeding with the process. On the other hand, if the input indicated disapproval, the software application proceeds to 1012 and provides a notification to the provider service that the user elected to cancel proceeding with the process. Note that one or more of the operations performed in 1002-12 may be performed in various orders and combinations, including in parallel.
In 1102, the provider service provides a filter rule to a monitoring service. The filter rule may be a set of criteria for determining whether a string of characters is found within a shared message on an interactive multiuser computer service platform forum. As noted above, the filter rule may be structured as a regular expression or some other rule for identifying matching strings of characters. The dashed line between 1102 and 1104 indicates that the operations of 1102 may be performed asynchronously and at some time earlier to those of 1104-24.
In 1104, the provider service receives a notification from the monitoring service that a match to the filter rule provided to the monitoring service by the provider service was found in a message associated with a user on an interactive multiuser computer service platform. In 1106, the provider service determines whether the user associated with the message has a set of user records with the provider service. If not, in 1108, the provider service contacts (e.g., via direct message through the interactive multiuser computer service) the user requesting that the user establish a set of user records with the provider service for the client-entity process to proceed. The process for creating a set of user records for the user is not depicted, for brevity.
In 1110, having created or confirmed the set of user records for the user, the provider service pushes a notification and/or authorization prompt to a client device of the user (e.g., the client device may be registered with the set of user records of the user at the provider) to accept or cancel the client-entity process initiated by the user's message with the match to the filter rule detected in 1104. An example of the notification and authorization prompt may be seen in the interfaces 400 and 500 of
In 1114, the provider service determines which of either authorization or cancellation is indicated by the response from the user. If cancellation is indicated, the provider service may proceed to 1124 to respond to the message on the interactive multiuser computer service with a second message indicating that the client-entity process was cancelled (e.g., “Transfer cancelled”). On the other hand, if the acceptance was indicated, in 1116, the provider service determines whether the entity associated with the filter rule has a set of user records with the provider service. If not, the provider service may proceed to 1118 to perform a process to dynamically explore and classify a website of the entity in order to determine how to enable the transfer using the entity's website. An example of this process can be seen in
In 1122, the provider service enables the client-entity transfer. For example, the provider service may perform a transfer of value from the client set of user records to the provider service, and then perform a transfer of value from the provider service to a set of user records of the entity (or vice versa as applicable, depending on the type of transfer). In situations where the entity does not have a set of user records registered with the provider service (e.g., see 1116-20), the entity may utilize a machine learning algorithm that has been developed to interact with the entity's website to complete the transfer (see 804-08 of
Lastly, in 1124, the provider service replies to the message of 1104 on the interactive multiuser computer service platform in which the match to the filter rule was detected. If the transfer was successfully completed, the reply may include words to that effect. If the transfer was not successfully completed, the reply may likewise indicate such. An example of such a reply is the second message 622 of
In 1202, the provider service begins the process from 1118 in
In 1206, the provider service determines the functionality of the various document object model (DOM) elements in the web pages. Techniques for unsupervised exploration to determine such element functionality may be found in U.S. patent application Ser. No. 17/101,744, U.S. patent application Ser. No. 16/680,392, U.S. patent application Ser. No. 16/680,396, U.S. patent application Ser. No. 16/680,403, U.S. patent application Ser. No. 16/680,406, U.S. patent application Ser. No. 16/680,408, and U.S. patent application Ser. No. 16/680,410, fully incorporated by reference above.
In 1208, having determined the functionality of the elements on the web pages, the provider service generates a process usable by the provider service to make a transfer of value from the provider service to the entity. The provider service then may implement the process in 1122. In 1210, the provider service may return to 1120 of
The platform monitoring service may be a service available to others to track metadata tags, such as hashtags, posted on forums of an interactive multiuser computer service. The platform monitoring service may have been provided access to the interactive multiuser computer service platform for this purpose. Thus, in 1302, the platform monitoring service may receive a request from a provider service to establish a set of user records with the platform monitoring service and, in response, may create a set of user records at the platform monitoring service for the provider service. Note that the dashed line between 1302 and 1304 indicates that the operations of 1302 may be performed asynchronously and at some time earlier to those of 1304-10.
In 1304, the monitoring service receives a filter rule from the provider service. As noted, the filter rule may be associated with an entity registered with the provider service. The filter rule may be specific to a particular combination of characters, such as a metadata tag and/or symbols or values. In 1306, the monitoring service monitors various forums of the interactive multiuser computer service. In 1308, the monitoring service determines whether, during monitoring the interactive multiuser computer service forums, a previously undetected (by the monitoring service) occurrence of a set of characters that matches the filter rule provided by the provider service in 1304 has been detected. If not, the monitoring service returns to 1306 to continue monitoring the interactive multiuser computer service forums.
On the other hand, if the monitoring service finds a match to the filter rule, in 1310, the monitoring service sends a notification to the provider service that the match was found. The notification may include information such as information identifying the filter rule that was matched, an identifier for the message that contains the characters that matched the filter rule, and information identifying the user who posted the message containing the characters that matched the filter rule. Note that one or more of the operations performed in 1302-10 may be performed in various orders and combinations, including in parallel.
In 1402, the entity performing the process 1400 may register a filter rule with the provider service. In this way, the provider service can correlate the filter rule with the entity and vice versa. The filter rule and the correlation may be stored in a data store, such as the data store 114 of
In 1404, additional parameters may be associated with the filter rule. Additional parameters may specify limitations for the filter rule, such as an expiration date, date/time ranges when the filter rule is valid, minimum or maximum amounts for the transfer, eligibility requirements for users of the interactive multiuser computer service to participate with the program associated with the filter rule, and so on.
Note that the dashed line between 1404 and 1406 indicates that the operations of 1302-04 may be performed asynchronously and at some time earlier to those of 1306. In 1406, the entity may receive from the provider service an indication that the filter rule was matched and a transfer completed (e.g., the process 1124 of
Note that, in the context of describing disclosed embodiments, unless otherwise specified, use of expressions regarding executable instructions (also referred to as code, applications, agents, etc.) performing operations that “instructions” do not ordinarily perform unaided (e.g., transmitting data, computations, etc.) denotes that the instructions are being executed by a machine, thereby causing the machine to perform the specified operations.
As shown in
In some embodiments, the bus subsystem 1504 may provide a mechanism for enabling the various components and subsystems of computing device 1500 to communicate with each other as intended. Although the bus subsystem 1504 is shown schematically as a single bus, alternative embodiments of the bus subsystem utilize multiple buses. The network interface subsystem 1516 may provide an interface to other computing devices and networks. The network interface subsystem 1516 may serve as an interface for receiving data from and transmitting data to other systems from the computing device 1500. In some embodiments, the bus subsystem 1504 is utilized for communicating data such as details, search terms, and so on. In an embodiment, the network interface subsystem 1516 may communicate via any appropriate network that would be familiar to those skilled in the art for supporting communications using any of a variety of available protocols, such as Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol (UDP), protocols operating in various layers of the Open System Interconnection (OSI) model, File Transfer Protocol (FTP), Universal Plug and Play (UpnP), Network File System (NFS), Common Internet File System (CIFS), and other protocols.
The network, in an embodiment, is a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, a cellular network, an infrared network, a wireless network, a satellite network, or any other such network and/or combination thereof, and components used for such a system may depend at least in part upon the type of network and/or system selected. In an embodiment, a connection-oriented protocol is used to communicate between network endpoints such that the connection-oriented protocol (sometimes called a connection-based protocol) is capable of transmitting data in an ordered stream. In an embodiment, a connection-oriented protocol can be reliable or unreliable. For example, the Transmission Control Protocol (TCP) is a reliable connection-oriented protocol. Asynchronous Transfer Mode and Frame Relay are unreliable connection-oriented protocols. Connection-oriented protocols are in contrast to packet-oriented protocols such as UDP that transmit packets without a guaranteed ordering. Many protocols and components for communicating via such a network are well known and will not be discussed in detail. In an embodiment, communication via the network interface subsystem 1516 is enabled by wired and/or wireless connections and combinations thereof.
In some embodiments, the user interface input devices 1512 includes one or more user input devices such as a keyboard; pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet; a scanner; a code scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems, microphones; and other types of input devices. In general, use of the term “input device” is intended to include all possible types of devices and mechanisms for inputting information to the computing device 1500. In some embodiments, the one or more user interface output devices 1514 include a display subsystem, a printer, or non-visual displays such as audio output devices, etc. In some embodiments, the display subsystem includes a cathode-ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), light emitting diode (LED) display, or a projection or other display device. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from the computing device 1500. The one or more user interface output devices 1514 can be used, for example, to present user interfaces to enable user interaction with applications performing processes described and variations therein, when such interaction may be appropriate.
In some embodiments, the storage subsystem 1506 provides a computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of at least one embodiment of the present disclosure. The applications (programs, code modules, instructions), when executed by one or more processors in some embodiments, provide the functionality of one or more embodiments of the present disclosure and, in embodiments, are stored in the storage subsystem 1506. These application modules or instructions can be executed by the one or more processors 1502. In various embodiments, the storage subsystem 1506 additionally provides a repository for storing data used in accordance with the present disclosure. In some embodiments, the storage subsystem 1506 comprises a memory subsystem 1508 and a file/disk storage subsystem 1510.
In embodiments, the memory subsystem 1508 includes a number of memories, such as a main random access memory (RAM) 1518 for storage of instructions and data during program execution and/or a read-only memory (ROM) 1520, in which fixed instructions can be stored. In some embodiments, the file/disk storage subsystem 1510 provides a non-transitory persistent (non-volatile) storage for program and data files and can include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, or other like storage media.
In some embodiments, the computing device 1500 includes at least one local clock 1524. The at least one local clock 1524, in some embodiments, is a counter that represents the number of ticks that have transpired from a particular starting date and, in some embodiments, is located integrally within the computing device 1500. In various embodiments, the at least one local clock 1524 is used to synchronize data transfers in the processors for the computing device 1500 and the subsystems included therein at specific clock pulses and can be used to coordinate synchronous operations between the computing device 1500 and other systems in a data center. In another embodiment, the local clock is a programmable interval timer.
The computing device 1500 could be of any of a variety of types, including a portable computer device, tablet computer, a workstation, or any other device described below. Additionally, the computing device 1500 can include another device that, in some embodiments, can be connected to the computing device 1500 through one or more ports (e.g., USB, a headphone jack, Lightning connector, etc.). In embodiments, such a device includes a port that accepts a fiber-optic connector. Accordingly, in some embodiments, this device converts optical signals to electrical signals that are transmitted through the port connecting the device to the computing device 1500 for processing. Due to the ever-changing nature of computers and networks, the description of the computing device 1500 depicted in
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. However, it will be evident that various modifications and changes may be made thereunto without departing from the scope of the invention as set forth in the claims. Likewise, other variations are within the scope of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain depicted embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed but, on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the scope of the invention, as defined in the appended claims.
In some embodiments, data may be stored in a data store (not depicted). In some examples, a “data store” refers to any device or combination of devices capable of storing, accessing, and retrieving data, which may include any combination and number of data servers, databases, data storage devices, and data storage media, in any standard, distributed, virtual, or clustered system. A data store, in an embodiment, communicates with block-level and/or object level interfaces. The computing device 1500 may include any appropriate hardware, software and firmware for integrating with a data store as needed to execute aspects of one or more applications for the computing device 1500 to handle some or all of the data access and logic for the one or more applications. The data store, in an embodiment, includes several separate data tables, databases, data documents, dynamic data storage schemes, and/or other data storage mechanisms and media for storing data relating to a particular aspect of the present disclosure. In an embodiment, the computing device 1500 includes a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across a network. In an embodiment, the information resides in a storage-area network (SAN) familiar to those skilled in the art, and, similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices are stored locally and/or remotely, as appropriate.
In an embodiment, the computing device 1500 may provide access to content including, but not limited to, text, graphics, audio, video, and/or other content that is provided to a user in the form of a Markup Language (e.g., HTML), Extensible Markup Language (XML), JavaScript, Cascading Style Sheets (CSS), JavaScript Object Notation (JSON), and/or another appropriate language. The computing device 1500 may provide the content in one or more forms including, but not limited to, forms that are perceptible to the user audibly, visually, and/or through other senses. The handling of requests and responses, as well as the delivery of content, in an embodiment, is handled by the computing device 1500 using PHP, Python, Ruby, Perl, Java, HTML, XML, JSON, and/or another appropriate language in this example. In an embodiment, operations described as being performed by a single device are performed collectively by multiple devices that form a distributed and/or virtual system.
In an embodiment, the computing device 1500 typically will include an operating system that provides executable program instructions for the general administration and operation of the computing device 1500 and includes a computer-readable storage medium (e.g., a hard disk, random access memory (RAM), read only memory (ROM), etc.) storing instructions that if executed (e.g., as a result of being executed) by a processor of the computing device 1500 cause or otherwise allow the computing device 1500 to perform its intended functions (e.g., the functions are performed as a result of one or more processors of the computing device 1500 executing instructions stored on a computer-readable storage medium).
In an embodiment, the computing device 1500 operates as a web server that runs one or more of a variety of server or mid-tier applications, including HTTP servers, FTP servers, Common Gateway Interface (CGI) servers, data servers, Java servers, Apache servers, and application servers. In an embodiment, computing device 1500 is also capable of executing programs or scripts in response to requests from user devices, such as by executing one or more web applications that are implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Ruby, PHP, Perl, Python, or TCL, as well as combinations thereof. In an embodiment, the computing device 1500 is capable of storing, retrieving, and accessing structured or unstructured data. In an embodiment, computing device 1500 additionally or alternatively implements a database, such as one of those available from Oracle®, Microsoft®, Sybase®, and IBM® as well as open-source servers such as MySQL, Postgres, SQLite, MongoDB. In an embodiment, the database includes table-based servers, document-based servers, unstructured servers, relational servers, non-relational servers, or combinations of these and/or other database servers.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (e.g., in the context of the following claims) is to be construed to cover both the singular and the plural, unless otherwise indicated or clearly contradicted by context. The terms “comprising,” “having,” “including” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected,” when unmodified and referring to physical connections, is to be construed as partly or wholly contained within, attached to or joined together, even if there is something intervening. Recitation of ranges of values in the present disclosure are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range unless otherwise indicated, and each separate value is incorporated into the specification as if it were individually recited. The use of the term “set” (e.g., “a set of items”) or “subset” unless otherwise noted or contradicted by context, is to be construed as a nonempty collection comprising one or more members. Further, unless otherwise noted or contradicted by context, the term “subset” of a corresponding set does not necessarily denote a proper subset of the corresponding set, but the subset and the corresponding set may be equal. The use of the phrase “based on,” unless otherwise explicitly noted or clear from context, means “based at least in part on” and is not limited to “based solely on.”
Conjunctive language, such as phrases of the form “at least one of A, B, and C,” or “at least one of A, B and C,” unless specifically noted otherwise or otherwise clearly contradicted by context, is otherwise understood with the context as used in general to present that an item, term, etc., could be either A or B or C, or any nonempty subset of the set of A and B and C. For instance, in the illustrative example of a set having three members, the conjunctive phrases “at least one of A, B, and C” and “at least one of A, B, and C” refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of A, at least one of B and at least one of C each to be present.
Operations of processes described can be performed in any suitable order unless otherwise indicated or otherwise clearly contradicted by context. Processes described (or variations and/or combinations thereof) can be performed under the control of one or more computer systems configured with executable instructions and can be implemented as code (e.g., executable instructions, one or more computer programs or one or more applications) executing collectively on one or more processors, by hardware or combinations thereof. In some embodiments, the code can be stored on a computer-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. In some embodiments, the computer-readable storage medium is non-transitory.
The use of any and all examples, or exemplary language (e.g., “such as”) provided, is intended merely to better illuminate embodiments of the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the implementation of the invention.
Embodiments of this disclosure are described, including the best mode known to the inventors for carrying out the invention. Variations of those embodiments will become apparent to those of ordinary skill in the art upon reading the description below. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for embodiments of the present disclosure to be implemented otherwise than as specifically described. Accordingly, the scope of the present disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the scope of the present disclosure unless otherwise indicated or otherwise clearly contradicted by context.
All references, including publications, patent applications, and patents, cited are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety.