Abstract:
Example systems and methods provide for maintaining a list of printer associations between user addresses and a set of network printers. A print request directed to a destination email address may be received from a respective user address. Examples provided herein can determine whether one or more of the set of network printers is associated with the respective user address based on the list of printer associations.

Description:
RELATED APPLICATIONS 
       [0001]    This application is a Continuation of U.S. patent application Ser. No. 13/077,183, entitled “METHODS AND SYSTEMS FOR FULFILLMENT OF A PRINT REQUEST,” filed Mar. 31, 2011, the aforementioned application being hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND 
       [0002]    A printer can be attached directly to a computing device or it may be connected to a computing device over a network. In the case of a printer connection over a network, a user can submit print jobs from the computing device to the printer over the network. To submit a print job to a network printer, a printer driver is typically installed on the user computing device. In the case of multiple available network printers, the user typically needs to know something about the available network printers (e.g., location, availability, capabilities, etc.) to select a printer best suited for handling a particular print job. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0003]    The following description includes discussion of figures having illustrations given by way of example of implementations of embodiments of the invention. The drawings should be understood by way of example, not by way of limitation. As used herein, references to one or more “embodiments” are to be understood as describing a particular feature, structure, or characteristic included in at least one implementation of the invention. Thus, phrases such as “in one embodiment” or “in an alternate embodiment” appearing herein describe various embodiments and implementations of the invention, and do not necessarily all refer to the same embodiment. However, they are also not necessarily mutually exclusive. 
           [0004]      FIG. 1  is a block diagram illustrating a system according to various embodiments. 
           [0005]      FIG. 2  is a block diagram illustrating a system according to various embodiments. 
           [0006]      FIG. 3  is a flow diagram of operation in a system according to various embodiments. 
           [0007]      FIG. 4  is a flow diagram of operation in a system according to various embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0008]    HP ePrint technology, available from the Hewlett-Packard Company of Palo Alto, Calif., enables assignment of an email address to a printer and allows a user to print with the printer by sending an email to the printer&#39;s email address. The email address assigned to the printer may be a complex randomly generated sequence of letters and numbers. While such an email address is beneficial from a security standpoint (e.g., prevents spamming the printer), it may be very difficult for users to remember. 
         [0009]    Various embodiments described herein allow users to send a print job via email to a generic email address (e.g., one that is easy to remember). The print job is then redirected to an email-enabled printer based, in part, on the sender&#39;s email address. Because print jobs are directed to printers based on the sender&#39;s email address, multiple users can use the same generic address and have their print requests sent to different printers. In alternate embodiments, users can send print jobs via social media platforms such as Facebook (Facebook, Inc. of Palo Alto, Calif.) and Twitter (Twitter, Inc. of San Francisco, Calif.). Further explanations and examples are provided herein. 
         [0010]      FIG. 1  is a block diagram illustrating a server system according to various embodiments.  FIG. 1  includes particular components, modules, etc. according to various embodiments. However, in different embodiments, more, fewer, and/or other components, modules, arrangements of components/modules, etc. may be used according to the teachings described herein, In addition, various components, modules, etc. described herein may be implemented as one or more software modules, hardware modules, special-purpose hardware (e.g., application specific hardware, application specific integrated circuits (ASICs), embedded controllers, hardwired circuitry, etc.), or some combination of these. 
         [0011]    In  FIG. 1 , server system  120  enables a user to email a print job from user device  110  to a printer (e.g., printer  130 ) over one or more communications networks, such as a local area network (LAN) and/or wide area network (WAN). In one example, network  100  includes the Internet or other mobile communications network (e.g., 3G or 4G mobile device network). 
         [0012]    Server system  120  includes an email server  122 , a decision module  124  and a dispatch module  126 . As illustrated by the dotted line in  FIG. 1 , the components of server system  120  may be combined into a single physical server device or they may be distributed among multiple server devices, such as, for example, in a cloud computing infrastructure. 
         [0013]    Email server  122  receives an email from user device  110 . User device  110  can be any computing device capable of sending an email including, but not limited to, desktop computers, notebooks, smartphones, tablet computers, television sets, and other “smart” devices. In various embodiments, email server  122  is dedicated to handling print requests, so all emails received by email server  122  are assumed to be print requests. Decision module  124  selects a printer to fulfill the print request based on the sender&#39;s email address and a printer characteristic. For example, a user, Bob, has previously registered his email address (e.g., bob@xyz.com) with printer  130  (and only printer  130  in this example). The registration is maintained by server system  120 . Thus, when email server  122  receives an email from bob@xyz.com, decision module  124  selects printer  130  to fulfill the print request based on Bob&#39;s email address being registered to printer  130  (and only printer  130 ). 
         [0014]    In the example above, note that decision module  124  selects printer  130  based on the sender email address(e.g., bob@xyz.com) as opposed to the destination address. An email address, as used herein, is a string of characters separated into two parts by an “@”—the “local part” comes before the “@” and the domain comes after the “@” (i.e., local-part@domain). So, for example, email server  122  might be associated with the domain “hpeprint.com” and printer  130  might have the email address 23sf7yudf7kt@hpeprint.com. However, in various embodiments, if printer  130  is the only printer with which Bob has registered his email address, Bob could send an email (e.g., with an attachment to be printed) to a generic email address such as, for example, myprinter@hpeprint.com and decision module  124  would select printer  130  based on Bob&#39;s email address being registered with printer  130 . Under such a scenario, a different user, Jan, who has registered her email address (ian@awesomemail.com) with printer  140  could also send an print request to myprinter@hpeprint.com and decision module  124  would match her email address with printer  140  and thus select printer  140  to fulfill the print request. Any generic destination address could be used to send a print request as long as the appropriate domain for the server system (e.g., server system  120 ) is used in the destination address. 
         [0015]    Dispatch module  126  dispatches the print request to the selected printer. The data to be printed may be included in the body of the email, as an attachment to the email, or referenced via a URI (Uniform Resource Identifier). For example, an email print request might include embedded text, images, or a document, photo, image, spreadsheet, or other suitable attachment. Accordingly, dispatch module  126  includes the data to be printed (e.g., text, document, and/or image, etc.) when dispatching the print request to the selected printer. 
         [0016]      FIG. 2  is a block diagram illustrating a server system according to various embodiments.  FIG. 2  includes particular components, modules, etc. according to various embodiments. However, in different embodiments, more, fewer, and/or other components, modules, arrangements of components/modules, etc. may be used according to the teachings described herein. In addition, various components, modules, etc. described herein may be implemented as one or more software modules, hardware modules, special-purpose hardware (e.g., application specific hardware, application specific integrated circuits (ASICs), embedded controllers, hardwired circuitry, etc.), or some combination of these. 
         [0017]    In  FIG. 2 , server system  230  enables a user to email a print job from user device  210  to a printer (e.g., printer  250 , 260 ) over one or more communications networks, such as a local area network (LAN) and/or wide area network (WAN). In one example, network  200  includes the Internet or other mobile communications network (e.g., 3G or 4G mobile device network). As illustrated by the dotted line in  FIG. 2 , the components of server system  230  may be combined into a single physical server device or they may be distributed among multiple server devices, such as, for example, in a cloud computing infrastructure. 
         [0018]    User device  210  can be any computing device capable of sending an email including, but not limited to, desktop computers, notebooks, smartphones, tablet computers, and the like. When a user of device  210  desires to print something (e.g., a document, image, etc.), the user initiates a print request by sending an email to an email-enabled printer. The email is sent from the user&#39;s outgoing mail server  220  to the email server  232  of server system  230 . In various embodiments, email server  232  is dedicated to handling print requests, so all emails received by email server  232  are assumed to be print requests. However, in alternate embodiments, email server  232  might also receive emails not related to print requests. In such embodiments, email server  122  might include a filter to distinguish print requests from other emails, for example, based on the destination domain. 
         [0019]    Decision module  234  selects a printer to fulfill the print request based on the sender&#39;s email address and a printer characteristic. Server system  230  maintains a list of printer associations in database  248 . In other words, database  248  maintains a mapping of email addresses and the email-enabled printers to which those email addresses have been registered and/or whitelisted. An email address may be mapped to one printer or many printers. Database  248  also maintains information about email-enabled printers affiliated with server system  230  that are open or semi-open. In other words, some email-enabled printers might not be restricted to use only by registered email addresses or email addresses on a printer whitelist. Thus, these printers might be available to a user even if the user&#39;s email address has no previous association with the printer. 
         [0020]    In one example, decision module  234  selects a printer to fulfill the print request based on the sender&#39;s email address and the geo-location of the printer. Though not necessary, the printer selection might be further based on the destination address of the print request. For example, server system  230  might recognize a generic email address, such as nearest@hpeprint.com, for requesting a print job based on a user&#39;s proximity to various email-enabled printers affiliated with server system  230 . 
         [0021]    Database  248  maintains geo-location information for email-enabled printers affiliated with server system  230 . Filter module  236  filters the list of printers in database  248  to include only those printers that are available to a user based on the user&#39;s email address. So, for example, if server system  230  is handling a request from user Bob (e.g., sent to nearest@hpeprint.com), filter module  236  would filter the list of printers to include only the printers available to Bob based on his email address (bob@xyz.com). As discussed previously, this list might include printers to which Bob is registered as well as open or semi-open printers to which bob@xyz.com is not blacklisted. 
         [0022]    Proximity module  238  determines (e.g., via triangulation) the printer nearest to Bob from the filtered list based on the stored geo-location information for the printers as well as geo-location information for Bob (which, in the static case, could be stored with his email address in database  248  or, in the case of dynamic location due to use of a mobile device, could be embedded in the print request). In this example, if the filtered list of printers includes printer  250  and printer  260 , proximity module  238  determines that printer  260  is nearest to Bob (who is using user device  210 ). Based on this information, decision module  234  selects printer  260  to fulfill the print request from Bob. In various embodiments, email server  232  sends Bob a response email identifying printer  260  as the printer handling the print request. 
         [0023]    In a different example, decision module  234  selects a printer to fulfill the print request based on the sender&#39;s email address and a printer capability necessary to fulfill the print request. When a print request is received, evaluation module  240  evaluates the data to be printed from the print request to determine the printer capabilities needed to fulfill the print request. For example, the data to be printed might be in color, thereby dictating the need for a color printer. Alternatively, evaluation module  240  might determine that the size of the requested print job is large and requires a printer with sufficient ink and/or toner to complete the job. Other printer needed capabilities, requirements and/or statuses could be determined via evaluation as well (e.g., automatic 2-sided printing, paper size in the paper tray, etc.). 
         [0024]    In view of the printer capability needed to fulfill the request, decision module  234  selects an available printer (where availability is again determined by filter module  238  based on the sender email address) that meets the printer capability criteria from the evaluation. In various embodiments, email server  232  may notify the user of the printer selection. 
         [0025]    In yet another example, decision module  234  selects a printer to fulfill the print request based on the sender&#39;s email address, the destination email address and the printer identity. In this example, decision module  234  compares the list of printer identities associated (e.g., registered, whitelisted, etc.) with the sender email address (e.g., via registration, whitelist. etc.) against the local-part of the destination address to discern the intended printer destination. 
         [0026]    One way to discern the intended printer destination is to perform a string-analysis operation comparing the local-part of the destination address against the printer identities. In such cases, the printer identity that most closely matches the local-part of the address is selected. This “fuzzy” string-matching operation does not require a perfect character-for-character match. For example, if user Bob intended to send a print request email to printer250@hpeprint.com but he accidentally misspelled the destination address (e.g., printer250@hpeprint.com), decision module  234  might determine, based on string analysis, that Bob intended to send the email to printer250@hpeprint.com and select printer  250  to fulfill the print request. In other words, decision module  234  leverages known printer associations (between sender email address and email-enabled printers), to select the intended printer even if the destination address is misspelled. 
         [0027]    The string analysis described herein can be expanded to include contextual analysis. For example, if user Bob owns a home printer and a work printer, he might register his email address with server system  230  to associate it with both printers. As the owner, he might name his work printer “bobworkprinter” and his home printer “bobhomeprinter” and these identities are stored, for example, in database  248 . Accordingly, the destination email address for his work printer might be bobworkprinter@hpeprint.com. In various embodiments, decision module  234  deciphers destination intent by context in view of the printers associated with the sender email address. So, in the example above, assuming user Bob had only his work and home printers associated with his email address, he might send an email to bobofficeprinter@hpeprint.com and decision module  234  might determine from the word “office” in the local-part of the destination address that Bob&#39;s intent is to send the request to his work printer as opposed to his home printer based on the context that “office” is more likely associated with work than home. 
         [0028]    In each of the examples above, server system  230  may cause email server  232  to send a clarification email to the sender of the print request. The clarification email might inform the user of which printer has been selected to fulfill the request. However, the clarification email might also include a selectable list of multiple printers that satisfy the criteria for the print request (e.g., available printers within a certain distance, printers that have certain capabilities, etc.). Each printer on the list could include a hyperlink for selecting the printer. By selecting one of the printers on this list (e.g., via hyperlink), the printer selection is sent to server system  230  via email reply or by other suitable communications protocol. Decision module  234  then proceeds with the user&#39;s selection for fulfilling the print request. 
         [0029]    Dispatch module  242  receives an indication of the selected printer from decision module  234  and dispatches the print request to the selected printer. The data to be printed may have been included in the body of the email or as an attachment to the email. For example, an email print request might include a document, photo, image, spreadsheet, or other suitable attachment. Accordingly, dispatch module  126  includes the data to be printed (e.g., text, document, and/or image, etc.) when dispatching the print request to the selected printer. 
         [0030]    Server system  230  might also include a rendering module  241  or other suitable module to render and/or format the print data before sending it to printer. 
         [0031]    Various modules and/or components illustrated in  FIG. 2  may be implemented as a computer-readable storage medium containing instructions executed by a processor (e.g., processor  244 ) and stored in a memory (e.g., memory  246 ). 
         [0032]      FIG. 3  is a flow diagram of operation in a server system according to various embodiments.  FIG. 3  includes particular operations and execution order according to certain embodiments. However, in different embodiments, other operations, omitting one or more of the depicted operations, and/or proceeding in other orders of execution may also be used according to teachings described herein. 
         [0033]    A server system receives  310  an electronic message from a sender. The electronic message may be an email message, a social media message (e.g., Facebook message, Twitter message or “tweet”, Instant Messenger message, etc.), or other user-generated electronic message. The destination address of the message is indicative of a print request. The destination address can be an email address, a user mailbox (e.g., Facebook mailbox), a user account “handle” (e.g., a Twitter username), or other suitable destination. For example, if the message is an email message, the domain part of the destination email address may be indicative of a print request. The email message includes data to be printed. For example, the data might be included in the body of the email (e.g., as text, images, etc.) or the data might be included as an attachment to the email. In another example, a printer tied the server system might have its own Twitter account. Thus, sending a message or “tweet” to the printer&#39;s Twitter account may be indicative of a print request. 
         [0034]    The server system determines  320  a printer to fulfill the print request based at least on the sender&#39;s address and a printer characteristic. For example, the server system might maintain a list of printer associations including those associated with the sender&#39;s email address. From the list of printers associated with the sender&#39;s email address, one or more printer characteristics might be used to determine the appropriate printer to fulfill the request. Examples of printer characteristics might include printer location, printer identity, printer capabilities, etc. 
         [0035]    Upon selection of a printer, the server system sends  330  the data to be printed to the selected printer for fulfillment of the print request. 
         [0036]      FIG. 4  is a flow diagram of operation in a server system according to various embodiments.  FIG. 4  includes particular operations and execution order according to certain embodiments. However, in different embodiments, other operations, omitting one or more of the depicted operations, and/or proceeding in other orders of execution may also be used according to teachings described herein. 
         [0037]    A server system receives  410  a print request message (e.g., via email, Twitter, Facebook, etc.) from a user. The server system may be distributed, for example, across a cloud computing infrastructure. The server system may determine  412  a printer for fulfilling the print request based on geographic location. For example, in the case of an email message, the destination email address in the print request may specify a preference for the nearest available printer (e.g., nearest@hpeprint.com). In such cases, the server system determines  414  the printers available to the sender of the print request based on the sender&#39;s email address. Available printers might include printers that have registered the sender&#39;s email address printers that include the sender&#39;s email address on a whitelist, and/or printers that are open or semi-open to any user not specifically blacklisted. Based on the available printers, the server system selects  416  the nearest available printer using geo-location information for the printers and the user. 
         [0038]    Alternatively, the server system might determine  418  a printer to fulfill the print request based on a user selection. For example, upon receiving the email print request, the server system might determine  420  a list of printers that have an association with the sender (i.e., user) email address (e.g., via registration or whitelist). The server system sends a clarification email back to the sender of the print request with the list of printers associated with the sender. In various embodiments, the user can select a printer via hyperlink or other suitable mechanism. The user selection may be communicated to the server system via email or some other suitable communications protocol. The server system receives  424  the printer selection and proceeds accordingly. 
         [0039]    Another alternative is for the server system to determine  426  a printer to fulfill the print request based on one or more printer capabilities. In such cases, the server system might evaluate  428  the data to be printed from the print request email to determine one or more printer capabilities needed to fulfill the print request. For example, the data to be printed might include a color image, requiring a color printer. Or, the data might be indicative of a particular paper size needed to fulfill the request. The server system determines  430  the printers available to the user and then selects  432  from the available printers a printer that has the capabilities needed to fulfill the print request. 
         [0040]    In yet another example, the server system might analyze the destination email address (e.g., the local-part of the address) for the print request to determine an intended printer for fulfilling the print request. In such cases, the server system generates  434  a list of printers associated with the sender (e.g., based on the sender email address) of the print request. The server system then compares  436  the destination email address against the list of printers associated with the sender. The comparison enables the server system to recognize the user&#39;s intent in view of misspellings, contextual similarities, etc. For example, if a user is registered with Katherine&#39;s printer (e.g., katherineprinter@hpeprint.com), Lisa&#39;s printer (e.g., lisaprinter@hpeprint.com), and Jeff&#39;s printer (e.g., jeffprinter@hpeprint.com) and sends a print request to katharineprinter@hpeprint.com, the server system might determine that the user&#39;s intent was to send the request to Katherine&#39;s printer even though the user misspelled Katherine&#39;s name in the email address. In another example, a user might own a work printer (e.g., workprinter@hpeprint.com) and a home printer (e.g., homeprinter@hpeprint.com). If the user sent an email print request to houseprinter@hpeprint.com, the server system might determine that the user&#39;s intent was to send the request to homeprinter@hpeprint.com given that the “house” is contextually more similar to “home” than it is to “work.” 
         [0041]    To further facilitate the analyzing discussed above, the server system could store additional information (e.g., tags, metadata, etc.) about a printer beyond associated email addresses, device capabilities and geo-location information. For example, tags might include a product family identifier or model number tag, a registered owner tag, or other user-generated tags such as tag identifying the business or institution housing the printer (e.g., library, coffee shop, etc.). Such tags could be used to further enhance the server system&#39;s ability to determine a user&#39;s intent when selecting a printer. 
         [0042]    In view of the comparison between printers associated with the sender and the local-part of the destination email address, the server system selects  438  a printer representative of the user&#39;s intent. 
         [0043]    In each of the examples described above, upon selection of a printer, the server system sends  440  the data to be printed from the email print request to the selected printer for fulfillment of the print request. 
         [0044]    In the embodiments described above, it should be noted that different users could use the same destination email address to send print requests to different printers. For example, user A and user B might each have their own email-enabled printer registered with the server system. Because the server system selects a printer to fulfill each print request based on the sender email address, user A could send a print request to a generic email address (e.g., myprinter@hpeprint.com) and the server system would route the print request to user A&#39;s printer. At the same, if user B sends a print request to the same address (e.g., myprinter@hpeprint.com), the server system would route the print request to user B&#39;s printer based on the sender email address. 
         [0045]    Various modifications may be made to the disclosed embodiments and implementations of the invention without departing from their scope. Therefore, the illustrations and examples herein should be construed in an illustrative, and not a restrictive sense.