Abstract:
A device may include a contact information database and a processor. The processor may interact with a participant in a session with an application, obtain information that is associated with the session, generate a message based on the obtained information after the session terminates, obtain a list of contacts that includes at least one of the participant and members in the contact information database, and send the message to a first one of the contacts, the message providing information to motivate one of the contacts to join a future session with the application.

Description:
BACKGROUND 
     Typical user-to-user communications include text messaging, sending/receiving emails, posting/reading messages at a blog site, and/or placing/receiving phone calls. 
     SUMMARY 
     According to one aspect, a device may include a contact information database; and a processor. The processor may interact with a participant in a session with an application, obtain information that is associated with the session, generate a message based on the obtained information after the session terminates, obtain a list of contacts that includes at least one of the participant and members in the contact information database, and send the message to a first one of the contacts, the message providing information to motivate one of the contacts to join a future session with the application. 
     Additionally, the message may include at least one of an audio clip, a video clip, a text message, or an email. 
     Additionally, the device may include a game console, a netbook, a laptop, a personal computer, or a server device. 
     Additionally, the device may include a cellular telephone or a personal digital assistant, and the contact information database may include at least one of an address book or a phone book. 
     Additionally, the contact information database may include at least one of a telephone number, an email address, a network address, or a uniform resource locator. 
     Additionally, the application may include at least one of a game or an online order entry program. 
     Additionally, the message may include at least one of: a request for the participant to join a game session; a challenge to the participant to defeat a character in a game; a description of how the participant was defeated by a character in a role playing game; a description of a type of product that the participant purchased during the session; or an electronic discount coupon. 
     Additionally, the obtained information may include at least one of an email address, a name of a character within the application, a time of the session, duration of the session, an outcome of the participant facing an obstacle in a game during the session, or a product description. 
     Additionally, before the processor sends the message, the processor may be further configured to select a time for sending the message based on the time of the session. 
     Additionally, before the processor sends the message, the processor may be further configured to call a communication application program interface to send the message. 
     According to another aspect, a method may include interacting with a participant in a first session with a game application installed on a device, obtaining information that is associated with the first session, generating a message based on the obtained information, obtaining a list of contacts based on at least one of a phone book of the participant or an address book of the participant, and sending the message to a first one of the contacts, the message providing information to motivate one of the contacts to join a future session with the game application. 
     Additionally, the method may further include collecting, during the first session, at least one of state information of the game application or state information associated with the device, and determining whether to send the message to the first one of the contacts, by comparing the collected state information to current state information of the device or the game application. 
     Additionally, generating the message may include inserting a challenge or taunt inside the message. 
     Additionally, sending the message may include sending an audio clip or a video clip. 
     Additionally, obtaining the information may include obtaining a name of a character whose role the participant assumed during the first session. 
     Additionally, the method may further include sending messages to other participants in the first session. 
     According to yet another aspect, a computer-readable medium may store computer-executable instructions. The computer-executable instruction may include instructions for interacting with a participant in a session, obtaining information that is associated with the session, generating a message based on the obtained information after the session terminates, and presenting the message to the participant to motivate the participant to join a future session. 
     Additionally, the session may include a commercial transaction or a gaming session. 
     Additionally, the instructions for sending the message may include instructions for at least one of playing an audio clip or a video clip, displaying an email message, a text message, or a short messaging service (SMS) message, or emulating a phone call. 
     Additionally, the computer-readable readable medium may further include instructions for: collecting, during the session, state information of a device that includes the computer-readable medium; and comparing the collected state information to current state information to determine whether to present the message. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more embodiments described herein and, together with the description, explain the embodiments. In the drawings: 
         FIG. 1  illustrates concepts described herein; 
         FIG. 2  is a diagram of an exemplary network in which the concepts described herein may be implemented; 
         FIG. 3  is a diagram of an exemplary user device of  FIG. 2 ; 
         FIG. 4  is a block diagram of an exemplary network device; 
         FIG. 5  is a block diagram of exemplary functional components of the network device of  FIG. 4 ; 
         FIG. 6  is illustrates the user device of  FIG. 2  receiving an exemplary text message from a proactive application of  FIG. 5 ; 
         FIG. 7  is a flow diagram of an exemplary process that is associated with the network device of  FIG. 4 ; and 
         FIG. 8  illustrates an example associated with the process of  FIG. 7 . 
     
    
    
     DETAILED DESCRIPTION 
     The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. As used herein, the term “game” or “computer game” may refer to a game played on a computer (e.g., a personal computer, a laptop, etc.), game station (e.g., game console), or mobile device (e.g., cellular phone). In some implementations of a computer game, the user may interact with other users over a network via computers, game stations, or mobile devices. 
     In the following, a device may allow an application hosted on the device to initiate a communication with a user of the device and/or other users that have engaged the user via the application over a network.  FIG. 1  illustrates an exemplary implementation of the above concept. Assume that a user Scott has concluded a role-playing session in a game Dragons of the Misty Mountains at user device  102 . Further, assume that, during the session, Scott has acted the role of Knight Macduff  104 - 1 , and saved Princess Juliette  104 - 2  from Dragon King  104 - 3 . 
     A few days after the session, game Dragons of the Misty Mountains may “call” (e.g., texting instant messaging, mimicking/emulating a telephone call, etc.) user device  102 . This may cause device  102  to provide a ringtone and/or to display the name “Dragon King” and/or an image of Dragon King  104 - 3 . If Scott accepts the call, Dragons of the Misty Mountains may, for example, encourage Scott to continue to play the game, challenge Scott to additional gaming sessions, or taunt Scott for “quitting.” If Scott does not accept the call, the call may be forwarded to Scott&#39;s voicemail. 
       FIG. 2  is a diagram of an exemplary network  200  in which the concepts described herein may be implemented. As shown, network  200  may include user devices  202 - 1  through  202 -N (collectively “user devices  202 ” and individually “user device  202 - x ”), network  204 , and server devices  206 - 1  through  206 -M (collectively “server devices  206 ” and individually “server device  206 - x ”). Depending on the implementation, network  200  may include additional, fewer, or different devices than the ones illustrated in  FIG. 2 . For example, in some implementations, network  200  may include hundreds, thousands, or more user devices. 
     User device  202 - x  may invite or request the user to perform an action (e.g., challenge the user to play a game). In some implementations, user device  202 - x  may send or receive invitations/information to/from other user devices  202  and/or server devices  206 . The invitations may request the users and/or other users to participate in a network activity (e.g., a network game, purchase a product or food (e.g., lunch) over the network, etc.), as well as present the user with useful information (e.g., a lunch menu at the user&#39;s favorite restaurant). 
     Network  204  may include a cellular network, a public switched telephone network (PSTN), a local area network (LAN), a wide area network (WAN), a wireless LAN, a metropolitan area network (MAN), an intranet, the Internet, a satellite-based network, a fiber-optic network (e.g., passive optical networks (PONs)), an ad hoc network, any other network, or a combination of networks. Devices that are shown in  FIG. 2  may connect to network  204  via wireless, wired, or optical communication links. In addition, network  204  may allow any of devices  202  to communicate with any other devices  202 . 
     Server device  206 - x  may invite or request one or more users at user devices  202  to perform an action (e.g., challenge the user to play a game) and/or present the users with useful information (e.g., a menu at a user&#39;s favorite restaurant). 
     In some implementations, server device  206 - x  may exchange information about the users and/or user devices  202  with other server devices  206 . For example, assume that John at user device  202 - 1  is playing a network game hosted at server device  206 - 1 , and Ben at user device  202 - 2  is playing the same game hosted at server device  206 - 2 . Server devices  202 - 1  and  202 - 2  may continually exchange game information pertaining to John and Ben to allow John and Ben to interact in the game. 
       FIG. 3  is a diagram of an exemplary user device  202 - x . User device  202 - x  may include any of the following devices: a mobile telephone; a cellular phone; a personal communications system (PCS) terminal that may combine a cellular radiotelephone with data processing, facsimile, and/or data communications capabilities; an electronic notepad, a laptop, a netbook, an ultra mobile personal computer (UMPC), and/or a personal computer; a personal digital assistant (PDA) that can include a telephone; a gaming device or console; a peripheral (e.g., wireless headphone); a digital camera; or another type of computational or communication device. 
     In this implementation, user device  202 - x  may take the form of a mobile phone (e.g., a cell phone). As shown in  FIG. 3 , user device  202 - x  may include a speaker  302 , a display  304 , control buttons  306 , a keypad  308 , a microphone  310 , sensors  312 , a front camera  314 , and a housing  316 . 
     Speaker  302  may provide audible information to a user of user device  202 - x . Display  304  may provide visual information to the user, such as an image of a caller, video images, or pictures. In addition, display  304  may include a touch screen for providing input to user device  202 - x . Control buttons  306  may permit the user to interact with user device  202 - x  to cause user device  202 - x  to perform one or more operations, such as place or receive a telephone call. Keypad  308  may include a telephone keypad. Microphone  310  may receive audible information from the user. Sensors  312  may collect and provide, to user device  202 - x , information (e.g., acoustic, infrared, etc.) that is used to aid the user in capturing images or in providing other types of information (e.g., a distance between a user and user device  202 - x ). Front camera  314  may enable a user to view, capture and store images (e.g., pictures, video clips) of a subject in front of user device  202 - x . Housing  316  may provide a casing for components of user device  202 - x  and may protect the components from outside elements. 
       FIG. 4  is a block diagram of a network device  400 , which may represent any of devices  202  and  206 . As shown in  FIG. 4 , network device  400  may include a processor  402 , a memory  404 , input/output components  406 , a network interface  408 , and a communication path  410 . In different implementations, device  400  may include additional, fewer, or different components than the ones illustrated in  FIG. 4 . For example, device  400  may include additional network interfaces, such as interfaces for receiving and sending data packets. 
     Processor  402  may include a processor, a microprocessor, an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), and/or other processing logic (e.g., audio/video processor) capable of processing information and/or controlling network device  400 . Memory  404  may include static memory, such as read only memory (ROM), and/or dynamic memory, such as random access memory (RAM), or onboard cache, for storing data and machine-readable instructions. Memory  404  may also include storage devices, such as a floppy disk, CD ROM, CD read/write (R/W) disc, and/or flash memory, as well as other types of storage devices. 
     Input/output components  406  may include a display screen (e.g., display  304 , etc.), a keyboard, a mouse, a speaker, a microphone, a Digital Video Disk (DVD) writer, a DVD reader, Universal Serial Bus (USB) lines, and/or other types of components for converting physical events or phenomena to and/or from digital signals that pertain to network device  400 . 
     Network interface  408  may include any transceiver-like mechanism that enables network device  400  to communicate with other devices and/or systems. For example, network interface  408  may include mechanisms for communicating via a network, such as the Internet, a terrestrial wireless network (e.g., a WLAN), a cellular network, a satellite-based network, a wireless personal area network (WPAN), etc. Additionally or alternatively, network interface  308  may include a modem, an Ethernet interface to a LAN, and/or an interface/connection for connecting network device  400  to other devices (e.g., a Bluetooth interface). 
     Communication path  410  may provide an interface through which components of network device  400  can communicate with one another. 
       FIG. 5  is a block diagram of exemplary functional components of network device  400 . Network device  400  may represent either user device  202 - x  or server device  206 - x . As shown, network device  400  may include communication function interfaces  502 , a proactive application  504 , a usage information database  506 , and a personal information database  508 . Depending on the implementation, network device  400  may include additional, fewer, or different functional components than those illustrated in  FIG. 5 . For example, network device  400  may include an operating system, document application, game application, etc. 
     Communication function interfaces  502  may include hardware and/or software interfaces for requesting and obtaining functionalities that are association with communication applications (e.g., an email client, a short messaging service (SMS) client, an instant messaging application, a browser, a telephone application, a video chat application, etc.) from network device  400 . Another application, such as proactive application  504 , may use communication function interfaces  502  to cause network device  400  to generate a ringtone, display a message, deliver a message (e.g., SMS message, email, IM message, browser page, etc.) from/to another user, game server, etc. 
     Proactive application  504  may include hardware and/or software components for interacting with a user of user device  202 - x  to perform tasks, collecting usage information pertaining to proactive application  504  (e.g., the time and the duration of the user&#39;s interaction with proactive application  504 ), and using the collected information to perform proactive actions, such as requesting the user to play a game, inviting the user to a gathering (e.g., a lunch at Joe&#39;s Pizza), informing the user of a special sale at the user&#39;s favorite retail store, calling/messaging the user&#39;s contacts, etc. 
     Depending on the implementation, proactive application  504  may include, for example, an application for receiving an order (e.g., order for lunch, a product, providing a reservation, etc.), a game application (e.g., a role playing game, a video game, etc.), an application for tracking a user&#39;s visits to different websites, etc. 
     Usage information database  506  may include records that pertain to use of proactive application  504 . For example, assume that proactive application  504  is an application for receiving an online order (e.g., a lunch order, a product (e.g., a pair of shoes) order, concert ticket order, etc.). In such a case, a record in usage information database  506  may include a caller&#39;s email address, phone number, and/or the caller&#39;s order selection (e.g., lunch selection, a specific product, the time-day-month of the order, etc.). In another example, assume that proactive application  504  is a game. In this case, the record may indicate how long the user played the game, characters that the user defeated or obstacles that the user overcame, the number of points that the user accumulated, the time-day-month of each of game sessions, other users that the user of device  202 - x  interacted with via the game, etc. Personal information database  508  may include contact information associated with the users of devices  202  (e.g., phone numbers, email addresses, etc.). 
       FIG. 6  is illustrates user device  202 - x  receiving a text message from proactive application  504 . As shown, Princess Juliette in Dragons of the Misty Mountains has sent a message to a user of user device  202 - x . Further, as shown, a text message that is shown on display  304  requests the user to play starting at 7:00 p.m. 
     Exemplary Processes 
       FIG. 7  is a flow diagram of an exemplary process  700  that is associated with network device  400 . Assume that proactive application  504  is running on either user device  202 - x  or server device  206 . Process  700  may begin with proactive application  504  obtaining state information of user device  202 - x  or proactive application  504  (block  702 ). For example, proactive application  504  may obtain the current time and the location of user device  202 - x  (e.g., based on output of global positioning system (GPS) application on user device  202 - x ), the load on processor  402 , identities of other applications that are executing on user device  202 - x /server device  206 , etc. 
     Proactive application  504  may obtain usage information (block  704 ). For example, proactive application  504  may obtain times, days, and/or locations at which proactive application  504  interacted with a user. For example, assume that proactive application  504  is a game. Proactive application  504  may retrieve the times/days during which a user played the game. In another example, assume that proactive application  504  is an online provisioning program that is hosted at server device  206 . Proactive application  504  may retrieve information on times/days during which the user shopped via proactive application  504 . 
     Proactive application  504  may determine whether to call or send a message to a past participant or the past participant&#39;s contacts (block  706 ). For example, proactive application  504  may determine, based on the state information (see block  702 ) and the usage information (see block  704 ), that the current state of user device  202 - x  or proactive application  504  matches the usage information. For example, assume that proactive application  504  is a game. When the current time approximately matches one of the times/days during which the user played proactive application  504 , proactive application  504  may decide to contact/alert the user. In some implementations, proactive application  504  may obtain the participant&#39;s authorization before contacting the user. In another example, assume that the location of user device  202 - x  matches the location at which another user of user device  202 - y  previously interacted with user device  202 - x . This in turn may cause proactive application  504  to send an alert to user device  202 - y.    
     If proactive application  504  includes an application for promoting sales, proactive application  504  may weigh additional information, such as at what price the user purchased a particular product, whether the current product on sale is the type of product the user purchased, whether today is close to the date of the sale, etc. If there is a significant match between the usage information and the additional information, proactive application  504  may determine that the user should be alerted or notified. 
     For example, assume that proactive application  504  takes online orders for lunch. In addition, assume that proactive application  504  has received an order for seafood pasta from John on a prior Wednesday at 1:00 p.m. In such an instance, on the following Wednesday, proactive application  504  may determine that that an email notification should be sent to John at 11:00 a.m. based on John&#39;s past lunch orders, to alert John to a slightly different or the same lunch special. 
     In some instances, proactive application  504  may determine that the current state of user device  202 - x  does not warrant interruptions from proactive application  504 . For example, the user may be engaged in work (e.g., inputting data at an accounting application). In another example, processor  402  of user device  202 - x  may be heavily loaded, and placing proactive application as a foreground process may cause user device  202 - x  to be irresponsive to user input. In these instances, proactive application  504  may decide against alerting and/or sending a message to the user. 
     If proactive application  504  determines that the participant/contacts are not to be contacted (block  706 —NO), proactive application  504  may return to block  702 , where proactive application  504  may continue to monitor the state of proactive application  504  or user device  202 - x . If proactive application  504  determines that the past participant/contacts are to be contacted (block  706 —YES), proactive application  504  may obtain contact information (block  708 ). 
     In obtaining the contact information, proactive application  504  may perform one or more lookups in personal information database  508 . For example, assume that John has played Dragons of the Misty Mountains. In this case, proactive application  504  may obtain email addresses, phone numbers, and/or other contact information for John&#39;s friends from personal information database  508 . John&#39;s friends may or may not have played Dragons of the Misty Mountains. In another example, proactive application  504  may look up contact information for users from whom John obtained updates to Dragons of the Misty Mountains. 
     Proactive application  504  may call or send a message to a past participant or the participant&#39;s contact (block  710 ). Continuing with the preceding example, proactive application  504  may invoke communication function interface  502  to send voice messages to phone applications in user devices  202 . If proactive application  504  is a game, proactive application  504  may play the role of one of the antagonists in the game, challenge the users to play, or even taunt the users for not playing the game. Alternatively, proactive application  504  may send a text message to John&#39;s friends who may or may not have played the game, indicating that John has been defeated by one of the antagonists in the game. 
     In another example, assume that proactive application  504  is an online sales program. Proactive application  504  may send email messages to users of devices  202  (e.g., purchasers), reminding the users of a sales event. In some instances, proactive application  504  may provide a discount or e-coupon via the email along with the reminders. 
     Proactive application  504  may determine whether the contacted device/person responds to the contact (block  712 ). For example, proactive application  504  may determine whether the contacted participant reengages proactive application  504  within a particular duration (e.g., purchases an online product one day after being contacted via an email message, plays the game within 10 minutes after being contacted via a phone call, etc.). A result of determining whether the contacted participant has responded to the contact as may be recorded as part of usage information. 
     Proactive application  504  may record usage information (block  714 ). For example, when the user of user device  202 - x  is interacting with proactive application  504 , proactive application  504  may record the time of the interaction, specific actions that the user performed (e.g., kill an antagonist in a game), the location of user device  202 - x , identities of other, networked participants at other user devices  202 , whether the user is interacting with proactive application  504  in response to the contact from proactive application  504 , etc. The usage information may be stored at usage information database  508 . 
     Example 
       FIG. 8  illustrates an example that is associated with proactive application  504 . The example is consistent with the above descriptions. Assume that a Freaky Brains server is installed on server device  206 - 1 , and that Freaky Brains clients are installed on Scott&#39;s user device  202 - 3 , Johan&#39;s user device  202 - 2 , Becky&#39;s user device  804 - 1 , and Sam&#39;s user device  804 - 2 . In addition, assume that Scott, Johan, Becky, and Sam played Freaky Brains over network  204  on Saturday 7:30 p.m. to 10:30 p.m. 
     Freaky Brains client runs in the background at Scott&#39;s device  202 - 3 , and periodically obtains the state of user device  202 - 3 . On Saturday morning, Freaky Brains client on Scott&#39;s device  202 - 3  compares the current time and location of device  202 - 3  to the time and location of Scott&#39;s previous gaming session. Based on the comparison, Freaky Brains client asks Scott if Scott will authorize Freaky Brains client to invite Johan, Becky, and Sam to a gaming session. Scott enjoys playing Freaky Brains, and, therefore, authorizes Freaky Brains client on device  202 - 3  to invite his friends. 
     Freaky Brains client performs a lookup of contact information for Johan, Becky, and Sam in Scott&#39;s address book on user device  202 - 3 , and places a call to each of user devices  202 - 2 ,  804 - 1 , and  804 - 2 , posing as Big Sister, one of the characters in Freaky Brains. Each of Johan, Becky, and Sam receives a call at user devices  202 - 2 ,  804 - 1 , and  804 - 2 , respectively. 
     During each of the calls, Big Sister states, “I am the Big Sister, the smartest woman in Freaky Brains. I have defeated Scott by the score of 10-to-9. Now I challenge you to outwit me starting tonight at 7:30 p.m. Be ready to be stupefied!” 
     At 7:30 p.m., Scott, Johan, Becky, and Sam connect to Freaky Brains server on server device  206 - 1 , and plays Freaky Brains. While Scott, Johan, Becky, and Sam play, Freaky Brain server and client on server device  206 - x  and user devices  202 - 3 ,  202 - 2 ,  804 - 1 , and  804 - 2  record usage information. 
     CONCLUSION 
     The foregoing description of implementations provides illustration, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the teachings. 
     For example, while series of blocks have been described with regard to the exemplary processes illustrated in  FIG. 7 , the order of the blocks may be modified in other implementations. In addition, non-dependent blocks may represent acts that can be performed in parallel to other blocks. Further, depending on the implementation of functional components, some of the blocks may be omitted from one process. 
     It will be apparent that aspects described herein may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects does not limit the invention. Thus, the operation and behavior of the aspects were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement the aspects based on the description herein. 
     It should be emphasized that the term “comprises/comprising” when used in this specification is taken to specify the presence of stated features, integers, steps or components but does not preclude the presence or addition of one or more other features, integers, steps, components, or groups thereof. 
     Further, certain portions of the implementations have been described as “logic” that performs one or more functions. This logic may include hardware, such as a processor, a microprocessor, an application specific integrated circuit, or a field programmable gate array, software, or a combination of hardware and software. 
     No element, act, or instruction used in the present application should be construed as critical or essential to the implementations described herein unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.