SERVICES FOR MESSAGING APPLICATION WITH IN-BUILT WEB SEARCH

A method of providing services for a messaging application with in-built web search is performed by an internet server. The internet server receives a query request from the messaging application of a first user device and then processes the query request. Processing the query request includes communicating with one or more internet services to obtain query results. The internet server generates an encoded message that includes a reference to the query results and maintains a database that correlates the reference with the query results. The internet server then forwards a query response, including the query results and the encoded message, to the first user device. The reference to the query results are subsequently received at the internet server from a second user device. The internet server forwards the one or more query results to the second user device based on the received reference.

BACKGROUND

People often communicate with each other by electronic messages. For example, people may exchange text messages with the Short Message Service (SMS) protocol or via various instant messaging (IM) systems. Historically, SMS was effectively the only way to send a text message from a cellular phone. The messages sent via SMS are subject to strict size limits, and the sending of such messages were charged by phone carriers at SMS-specific rates. However, many modern cell phones have internet connectivity and the ability to participate in a wide variety of communication protocols, such as Hypertext Transfer Protocol (HTTP). HTTP has the ability to send content that has a wide variety of features (e.g., links, photos, audio, etc.) and allows messages of arbitrary length. Additionally, an HTTP message can be sent between any devices that are addressable on the Internet. Such messages are sent using the devices' ordinary Internet service (thereby avoiding the use of SMS-specific pricing, and avoiding any limitations associated with SMS systems).

While messages sent via HTTP often provide richer content, SMS continues to have legacy influence. Many phones have Internet service and can communicate by HTTP, but nearly all phones have SMS. When one person wants to send a message to another, the user often does not know what capabilities are available on the recipient's phone, so the sender often sends an SMS message in order to be able to reach the recipient without regard to what type of device the recipient has. But the decision to use SMS subjects the message to SMS's limitations.

DETAILED DESCRIPTION

Aspects of the present disclosure are directed to computing platforms (i.e., user equipment, internet server, etc.), computer-readable media, and processes for providing services for a messaging application with in-built web search.

As mentioned above, many user devices, such as cellular phones, smart phones, laptops, etc. include the ability to provide a user with internet access, such as through a web browser that communicates via one or more communication protocols, such as Hypertext Transfer Protocol (HTTP). In many instances, a user may desire to share internet content with another user. For example, a user may access an internet service (e.g., internet search engine, internet retailer, internet social networking service, etc.) to search for various content via a web browser, which the user then wishes to share with another user (e.g., friend, family member, co-worker, etc.). However, sharing the content typically requires the user to switch between applications. For example, a user may be required to copy a uniform resource locator (URL) from within a web browser application and then switch to a separate messaging application, where the URL may then be pasted into a message to send to one or more contacts from within the messaging application.

Furthermore, the URL copied into a messaging application may render the message incompatible with the messaging protocol utilized by the messaging application. For example, as mentioned above, certain messaging protocols may be subject to strict size limits (e.g., Short Message Service (SMS) protocol limited to 140 bytes (140 bytes*8 bits/byte=1120 bits). SMS messages can be encoded using a variety of alphabets: the default GSM 7-bit alphabet, the 8-bit data alphabet, and the 16-bit UCS-2 alphabet. Depending on which alphabet is utilized by the messaging application, this leads to the maximum character limit of 160 7-bit characters, 140 8-bit characters, or 70 16-bit characters. Thus, incorporating a native URL obtained via the web browser into a messaging application may result in a message that exceeds the maximum character limit of the messaging protocol utilized by the messaging application.

Accordingly, aspects of the present disclosure include providing services for a messaging application that includes in-built web search functionality. As will be described in further detail below, a messaging application with in-built web search may be installed on a user device, where the messaging application provides the user with the ability to query one or more internet services from within the messaging application, itself (e.g., without the need to switch to a separate web browsing application). The results of the query are then displayed within the messaging application, where the user may then select one or more of the query results to forward as a message to another user. In some aspects, the messaging application communicates with an internet server who performs the initial query and generates an encoded message. The encoded message is formatted, by the internet server, to comply with the messaging protocol that is utilized by the messaging application. By way of example, the encoded message generated by the internet server may include text that identifies one or more search terms used for the query, a short description or additional information about the query results, and a reference to the query results. In some aspects, the reference to the query results may be in the form of a URL that is dynamically generated by the internet server. The messaging application may then send the encoded message to another user via the messaging protocol (e.g., SMS). The recipient of the encoded message may then access the query results by way of the reference included in the encoded message (e.g., by displaying the query results within a compatible messaging application, or by activating a web browser via the URL included in the encoded message). These and other aspects will be described in further detail below.

A user device, or user equipment (UE), may be mobile or stationary, and may communicate with a radio access network (RAN). As used herein, the term “UE” may be referred to interchangeably as an “access terminal” or “AT”, a “wireless device”, a “subscriber device”, a “subscriber terminal”, a “subscriber station”, a “user terminal” or UT, a “mobile terminal”, a “mobile station” and variations thereof. Generally, UEs can communicate with a core network via the RAN, and through the core network the UEs can be connected with external networks such as the Internet. Of course, other mechanisms of connecting to the core network and/or the Internet are also possible for the UEs, such as over wired access networks, WiFi networks (e.g., based on IEEE 802.11, etc.) and so on. UEs can be embodied by any of a number of types of devices including but not limited to PC cards, compact flash devices, external or internal modems, wireless or wireline phones, and so on. A communication link through which UEs can send signals to the RAN is called an uplink channel (e.g., a reverse traffic channel, a reverse control channel, an access channel, etc.). A communication link through which the RAN can send signals to UEs is called a downlink or forward link channel (e.g., a paging channel, a control channel, a broadcast channel, a forward traffic channel, etc.). As used herein the term traffic channel (TCH) can refer to either an uplink/reverse or downlink/forward traffic channel.

FIG. 1illustrates a high-level system architecture of a wireless communication network100in accordance with various aspects. The wireless communication network100contains UEs1. . . N. The UEs1. . . N can include mobile phones, personal computers (e.g., a laptop computer, desktop computer, etc.), television receivers (e.g., a television, streaming device, digital video recorder, etc.), voice-activated virtual assistants, gaming consoles, and so on. For example, inFIG. 1, UEs1. . .2are illustrated as cellular mobile phones, UEs3. . .5are illustrated as cellular touchscreen mobile phones or smart phones, and UE N is illustrated as a desktop computer or laptop.

Referring toFIG. 1, UEs1. . . N are configured to communicate with an access network (e.g., the RAN120, an access point125, etc.) over a physical communications interface or layer, shown inFIG. 1as air interfaces104,106,108and/or a direct wired connection130. The air interfaces104and106can comply with a given cellular communications protocol (e.g., CDMA, EVDO, eHRPD, GSM, EDGE, W-CDMA, LTE, etc.), while the air interface108can comply with a wireless IP protocol (e.g., IEEE 802.11). The RAN120includes a plurality of access points that serve UEs over air interfaces, such as the air interfaces104and106. The access points in the RAN120can be referred to as access nodes or ANs, access points or APs, base stations or BSs, Node Bs, eNode Bs, and so on. These access points can be terrestrial access points (or ground stations), or satellite access points. The RAN120is configured to connect to a core network140that can perform a variety of functions, including bridging circuit switched (CS) calls between UEs served by the RAN120and other UEs served by the RAN120or a different RAN altogether, and can also mediate an exchange of packet-switched (PS) data with external networks such as Internet175. The Internet175includes a number of routing agents and processing agents (not shown inFIG. 1for the sake of convenience). InFIG. 1, UE N is shown as connecting to the Internet175directly (i.e., separate from the core network140, such as over an Ethernet connection of Wi-Fi or 802.11-based network). The Internet175can thereby function to bridge packet-switched data communications between UE N and UEs1. . .5via the core network140. Also shown inFIG. 1is the access point125that is separate from the RAN120. The access point125may be connected to the Internet175independent of the core network140(e.g., via an optical communication system such as FiOS, a cable modem, etc.). The air interface108may serve UE4or UE5over a local wireless connection, such as IEEE 802.11 in an example. UE N is shown as a desktop computer with a direct wired connection130to the Internet175, such as a direct connection to a modem or router, which can correspond to the access point125itself in an example (e.g., for a Wi-Fi router with both wired and wireless connectivity).

The core network140is configured to support one or more communication services (e.g., Voice-over-Internet Protocol (VoIP) sessions, Push-to-Talk (PTT) sessions, group communication sessions, social networking services, SMS messaging, RCS messaging, MMS messaging, etc.) for UEs that can connect to the core network140via the RANs120and/or via the Internet175, and/or to provide content (e.g., web page downloads) to the UEs.

Referring toFIG. 1, an internet server170is shown as connected to the Internet175. In some aspects, the internet server170is owned and operated by an entity that is separate from the mobile network operator (e.g., operator of core network140). In other aspects, the internet server170may be in direct communication and/or incorporated within core network140, itself. The internet server170can be implemented as a plurality of structurally separate servers, or alternately may correspond to a single server.

According to aspects of the present disclosure, one or more of the various UEs1-N illustrated inFIG. 1may include a locally-installed messaging application that includes an in-built web search functionality. Accordingly, the internet server170includes a messaging services module176that is configured to communicate with the messaging application. In some aspects, the messaging services module176is configured to perform a web search on behalf of the messaging application. In another aspect, the messaging services module176may generate and return an encoded message to the messaging application, where the encoded message is formatted to be compliant with a messaging protocol utilized by the messaging application. The messaging application may then send the encoded message to another user (i.e., the recipient) via the messaging protocol (e.g., SMS protocol). Furthermore, the encoded message may include a reference to the web search results which may be used by the recipient to communicate with the internet server170to retrieve the same web search results.

FIG. 2illustrates examples of UEs (i.e., user devices) in accordance with embodiments of the present disclosure. UEs200A and200B are possible implementations of any of the UEs1-N ofFIG. 1. The various device types illustrated inFIG. 2include a mobile phone (e.g., UE200A) and smart phone (e.g., UE200B).

UEs200A and200B, may also be referred to as cellular phones and includes portable telephones that can make and receive calls over a radio frequency link while the user is moving within a telephone service area.

While internal components of UEs such as the UEs200A and200B can be embodied with different hardware configurations, a basic high-level UE configuration for internal hardware components is shown as platform202inFIG. 2. The platform202can receive and execute software applications, data and/or commands transmitted from the RAN120that may ultimately come from the core network140, the Internet175and/or other remote servers and networks (e.g., internet server170, web URLs, etc.). The platform202can also independently execute locally stored applications without RAN interaction. The platform202can include a transceiver206operably coupled to an application specific integrated circuit (ASIC)208, or other processor, microprocessor, logic circuit, or other data processing device. The ASIC208or other processor executes the application programming interface (API)209layer that interfaces with any resident programs in the memory212of the wireless device. The memory212can be comprised of read-only or random-access memory (RAM and ROM), EEPROM, flash cards, or any memory common to computer platforms. The platform202also can include a local database214that can store applications not actively used in memory212, as well as other data. The local database214is typically a flash memory cell, but can be any secondary storage device as known in the art, such as magnetic media, EEPROM, optical media, tape, soft or hard disk, or the like.

Accordingly, an embodiment of the invention can include a UE (e.g., UE200A-B, etc.) including the ability to perform the functions described herein. As will be appreciated by those skilled in the art, the various logic elements can be embodied in discrete elements, software modules executed on a processor or any combination of software and hardware to achieve the functionality disclosed herein. For example, the platform202is illustrated as including a messaging application216. Messaging application216may be a messaging application that is configured to generate outgoing messages224and to receive incoming messages226. In some aspects, outgoing messages224and/or incoming messages226are sent/received via a messaging protocol, including, for example, short message services (SMS) protocol, multimedia messaging services (MMS) protocol, and/or rich communication services (RCS) protocol. A user interface218provided by the messaging application216may be configured to present the outgoing messages224and incoming messages226via a display included the UE.

Furthermore, as discussed above, the messaging application216may be configured to provide in-built web search capabilities. That is, the messaging application216may provide one or more user interface components via user interface218to allow a user to enter one or more search terms within the messaging application216, itself. The messaging application216may incorporate the search terms into a query request220which is then sent to the internet server170. In one example, the query request220is communicated to the internet server via the internet175. The messaging application216may then receive a query response222from the internet server170(e.g., via internet175). The query response222may include one or more query results, which may be displayed to the user via user interface218. In some aspects, the query results include text, images, audio, video, animations, and/or any combination thereof. The query response222may also include one or more encoded messages that are generated by the internet server170. The encoded message may include a reference to the query results and is formatted according to a messaging protocol utilized by the messaging application216. Thus, rather than sending the query results directly to another user device, the messaging application216may, instead, send the encoded message as an outgoing message224via the messaging protocol. The recipient of the encoded message may then use a reference included in the encoded message to retrieve the query results from the internet server170.

Thus, in some aspects, the ASIC208, memory212, API209, local database214, and messaging application216may all be used cooperatively to load, store and execute the various functions disclosed herein and thus the logic to perform these functions may be distributed over various elements. Alternatively, the functionality could be incorporated into one discrete component. Therefore, the features of the UEs200A and200B inFIG. 2are to be considered merely illustrative and the invention is not limited to the illustrated features or arrangement.

The wireless communication between the UEs200A and/or200B and the RAN120can be based on different technologies, such as CDMA, W-CDMA, time division multiple access (TDMA), frequency division multiple access (FDMA), Orthogonal Frequency Division Multiplexing (OFDM), GSM, or other protocols that may be used in a wireless communications network or a data communications network. Voice transmission and/or data can be transmitted to the UEs from the RAN using a variety of networks and configurations. Accordingly, the illustrations provided herein are not intended to limit the embodiments of the invention and are merely to aid in the description of aspects of embodiments of the invention.

FIG. 3illustrates an example internet server302. Internet server302is one possible implementation of internet server170ofFIG. 1. The components illustrated inFIG. 3may be implemented in different types of apparatuses in different implementations (e.g., in an ASIC, in an SoC, etc.). The illustrated components may also be incorporated into other apparatuses in a communication system. For example, other apparatuses in a system may include components similar to those described to provide similar functionality. Also, a given apparatus may contain one or more of the components. For example, an apparatus may include multiple transceiver components that enable the apparatus to operate on multiple carriers and/or communicate via different messaging protocols.

The internet server302may include at least one communication device (represented by the communication device304) for communicating with other nodes. For example, the communication device304may comprise a network interface that is configured to communicate with one or more network entities via a wire-based or wireless links. In some aspects, the communication device304may be implemented as a transceiver configured to support wire-based or wireless signal communication. This communication may involve, for example, sending and receiving: messages, parameters, or other types of information. Accordingly, in the example ofFIG. 3, the communication device304is shown as comprising a transmitter306and a receiver308.

The internet server302may also include other components that may be used in conjunction with the operations as taught herein. For example, the internet server302may include hardware310, one or more processors312, and memory314.

The hardware310may include additional hardware interfaces, data communications, and/or data storage hardware. For example, the hardware interfaces may include a data output device (e.g., visual display, audio speakers), and one or more data input devices. The data input devices may include, but are not limited to, combinations of one or more of keypads, keyboards, mouse devices, touch screens that accept gestures, microphones, voice or speech recognition devices, and any other suitable devices.

The processor312of internet server302may execute instructions and perform tasks under the direction of software components that are stored in memory314. For example, the memory314may store various software components that are executable or accessible by the one or more processors312of the internet server302. The various components may include software316, a software development kit (SDK) interface module317, a query request input module318, a query response output module320, a transient message processing module322, a web service module324, a machine learning service module326, and an internet services interface module328. The software316, SDK interface module317, query request input module318, query response output module320, transient message processing module322, web service module324, machine learning service module326, and internet services interface module328, collectively, may be one possible implementation of messaging services module176ofFIG. 1.

The internet services interface module328may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related to performing a query with one or more internet services (e.g., internet services336-342). In one aspect, the internet services interface module328may communicate with one or more internet services over the internet175via a plurality of application programming interfaces (APIs) provided by the internet services336-342.

The internet services336-342may include any service provided over the internet such as an internet search engine (e.g., BING), an internet retailer (e.g., AMAZON), an internet directory service (e.g., YELP), an internet database (e.g., GIPHY), an internet review service (e.g., ROTTEN TOMATOES), an internet news service (e.g., AP NEWS), an internet classified advertisements service (e.g., EBAY), an internet dating service (e.g., EHARMONY), an internet blog service, an internet forum service, an internet social networking service (e.g., FACEBOOK), an internet media sharing service (e.g., YOUTUBE), and an internet wiki service (e.g., WIKIPEDIA).

In operation, the internet services interface module328may select an API from among a plurality of APIs, where the selected API corresponds to at least one of the internet services336-342. In some examples, the selected API corresponds to a plurality of internet services336-342. That is, a single API may be selected for communicating with a plurality of internet services336-342. In yet another example, the internet services interface module328may select a plurality of APIs corresponding to an aggregation of several internet services336-342. For example, in response to a query request for a shopping-related search for a product, the internet services interface module328may select multiple APIs, each corresponding to an internet retailer (e.g., in response to receiving a search term “shoes” internet services interface module328may select a first API for communicating with a first internet retailer (NORDSTROMS), a second API for communicating with a second internet retailer (SAKS), and a third API for communicating with a third internet retailer (MACYS)). The internet services interface module328may then generate an API call332based on the selected API(s), where the API call332incorporates one or more of the search terms included in the query request220received from the messaging application216. The internet services interface module328may then receive an API response334from the corresponding internet service, where the API response334includes one or more query results. By way of example, assume the query request220includes a search term “coffee”. The internet services interface module328may then generate an API call332for an internet directory service (e.g., YELP), where the API call includes the search term “coffee”. The internet service interface module328may then receive an API response334from the internet directory service that identifies one or more coffee shops as well as additional information related to the coffee shops (e.g., location, description, ratings, etc.).

In one aspect, selecting which of the internet services336-342to query is based on user input received via the messaging application216. That is, the messaging application216may provide a user interface that allows the user to select one or more internet services along with the associated search terms. Thus, the query request220may not only include the search terms, but may also include an indication of which internet service was selected by the user. Accordingly, the internet services interface module328may be configured to select an API from among a plurality of known APIs based, at least in part, on the indication of the selected internet service included in the query request220. In some examples, the user may select multiple internet services for performing a search (e.g., MACYS, SAKS, and NORDSTROMS). Thus, in at least one aspect, the query request220includes an indication of multiple internet services that were selected by the user. In response, the internet services interface module328may select a respective API for each of the internet services indicated in the query request220.

In some examples, the API response334may include a large number of query results. Accordingly, the internet server302may be configured to select a subset of the received query results. In one example, the internet server302is configured to select which of the received query results are the most relevant. In some aspects, determining which of the query results are the most relevant may be performed by applying a machine learning technique to the received query results to obtain a smaller list/subset of query results.

By way of example, the machine learning service module326may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related to applying one or more machine learning techniques to the query results included in the API response334to obtain the most relevant query results.

In some examples, the machine learning service module326may implement a machine learning technique that is a supervised, unsupervised, or a reinforcement learning technique. Examples of supervised learning techniques include K-nearest neighbor (KNN), Naive Bayes, logistic regression, support vector machine (SVM), and others. Other supervised learning analysis techniques include linear or polynomial regression analysis, decision tress analysis, and random forests analysis. Examples of unsupervised learning analysis techniques include association analysis, clustering analysis, dimensionality reduction analysis, hidden Markov model analysis techniques, and others. Examples of clustering analysis techniques include K-means, principal component analysis (PCA), singular value decomposition (SVD), incremental clustering, and probability-based clustering techniques. The reinforcement learning technique may be, for example, a Q-learning analysis technique. The techniques described above are some examples of machine learning techniques that may be utilized by the machine learning service module326to determine which, if any, of the query results included in the API response334are to be provided to the user. These are not intended to be limiting.

In one example, the machine learning service module326is configured to collect a sufficient number (hundreds if not thousands) of training API responses334to train a deep learning method so that it functions well, and so is considered “strong.” In one embodiment, category-specific training documents are passed to, and ingested by, one or more deep learning methods best suited to handle natural language processing (NLP). The method more commonly used in the context of NLP and text analysis, are known to practitioners in the art as a recurrent neural networks (RNN). Such deep learning RNNs use hidden computational “nodes” and various “gates,” and require manipulation known in the art as “tuning.” After the process of “tuning”, the method will be evaluated to assess the degree to which it accurately identifies the textual test data it has never before encountered with the “vector space” it has been trained to recognize. When the system is trained to “understand” a particular type of query request220, it may be thought of as a “filter.” Typically, the system will consist of more than one filter. The system passes the enterprise data through each filter. For example, there can be a filter for GOOGLE queries and another filter for TWITTER queries, among others. Once the Deep Learning Engine is trained, the system indexes and also extracts text from each query and in any of the API responses334. Those of skill in the art given the benefit of the present disclosure will appreciate that other implementations are contemplated.

In some examples, the machine learning service module326may be configured to operate in a non-real-time mode by extracting existing API responses, e.g. from the previous day's API responses, and then store the data in a database. In other embodiments, the machine learning service module326may operate in real-time to intercept, index, store and extract text from API calls332and/or API responses334. After indexing, extracting text, and storing the API data in a database, the system passes that data to each of the category-specific methods, which are also referred to herein as “filters.” Each filter scores the data for each API response category for accuracy in comparison to how each filter was trained.

In some aspects, the machine learning service module326may also be configured to determine (e.g., calculate) a relevancy value for the query results based, in part, on the search terms used in the API call332. The machine learning service module326may then select one or more query results from the API response334based on the determined relevancy value. The relevancy value may then be utilized by the machine learning service module326in determining which query results to include in the query response222sent to the messaging application216(e.g., query results with a higher relevancy value may be prioritized over query results with a lower relevancy value).

The web service module324may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related to storing the one or more query results. In one example, the query results may be stored to memory314. In another example, the web service module324may be configured to store the one or more query results to database330. Furthermore, the web service module324may be configured to generate an encoded message that includes a reference to the one or more query results. The web service module324may also maintain the database330that correlates the dynamically generated reference with the one or more query results.

In general, the encoded message may be formatted by the internet server302according to a messaging protocol utilized by the messaging application216. For example, assuming the messaging protocol utilized by the messaging application216includes a maximum character limit, then the internet server302may format the encoded message to include a number of characters that is equal to or less than the maximum character limit. Furthermore, as mentioned above, the encoded message may include a dynamically generated reference to the one or more query results. In one example, the internet server302is configured to format the reference included in the encoded message as a uniform resource locator (URL) to direct a user device to the internet server302.

In some aspects, the internet server302is configured to generate multiple encoded messages, where each encoded message corresponds to a single query result included in the API response334. For example, the internet server302may generate a first encoded message that includes a first reference to a first query result included in the API response334. The internet server302may also generate a second encoded message that includes a second reference to a second query result included in the same API response334. Further details regarding the encoded messages and included references are described below with respect to the example provided inFIG. 5.

Referring still toFIG. 3, the internet server302further includes a query response output module320that may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related to forwarding/sending a query response222to the messaging application216of a user device. In some aspects, the query response222may include the one or more query results (e.g., results of a search performed by internet services interface module328) based on the search term(s) included in the received query request220. The query response222may also include one or more encoded messages (e.g., see encoded message500ofFIG. 5) that include, in part, the references to the one or more query results. In some examples, the query request220and/or the query response222are communicated between the internet server302and the messaging application216over the internet175via one or more internet protocols (e.g., TCP/IP). As mentioned above, in some aspects, the internet server302may be configured to generate multiple encoded messages, where each encoded message corresponds to a single query result. Thus, in some implementations, the query response222may include the multiple encoded messages that are generated by the internet server302.

The transient message processing module322may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related to receiving a transient message package350from the messaging application216. In some aspects, the transient message package includes content, an indication that the text message is to be transient (e.g., only lasting for a certain time period) and an indication of an intended recipient of the text message. In some aspects, the content included in the transient message package350includes a text message. However, in other examples, the content may include any media, video, audio, link, image, and/or file, that the user of messaging application216desires to share with another user. The transient message processing module322may store the content (e.g., in memory314) and generate an encoded message352that includes a reference to the stored content. In some examples, the transient message package may also include a maximum time period that is associated with the content. As will be described below, the internet server302may be configured to begin a transient timer in response to the recipient accessing the content, where the internet server302may continue providing access to the content to the recipient only if the time period, as indicated by the transient timer, is less than or equal to the maximum time period associated with that content.

As mentioned above, the various software components included in memory314may include an optional SDK interface module317. The SDK interface module317may include one or more instructions, which when executed by the one or more processors312direct the internet server302to perform operations related providing an access point/portal for developers/MNOs to provide them with the ability to include their content and/or customize the internet services provided to users via any messaging application including, but not limited to, messaging application216ofFIG. 2.

In one aspect, the SDK interface module317may be configured to provide a control dashboard, such as via a website, to allow MNOs, carriers, handset manufacturers, etc. with the ability to specify which internet services (e.g., internet services902-912ofFIG. 9) will be shown and/or hidden. The control dashboard may also provide the ability for the MNOs, carriers, and/or handset manufacturers with the ability to specify the order in which the various internet services are displayed via the user interface218of messaging application216. In some examples, the determination of which internet services are shown/hidden and/or the order in which internet services are displayed may be based on a model of the user device (e.g., phone model) and/or a build version of the user device.

The SDK interface module317may also be configured to provide an SDK extendable access point for developers of other applications (e.g., other applications installed on the user device) and or for developers of various internet services. The SDK extendable access point may be configured to allow a developer to integrate their services to an SDK provided by the internet server302. The developer may then upload their software code to the internet server302via the SDK interface module317where once the software code is reviewed and approved, is released to the SDK. Once released, users of the messaging application216may then be able to see the developers content within the messaging application216(e.g., via the in-built search function).

As mentioned above, other apparatuses in a system may include components similar to those described to provide similar functionality. Also, a given apparatus may contain one or more of the components. For example, an apparatus, separate and distinct from internet server302, may include one or more of the modules317-328illustrated inFIG. 3. By way of a particular example, the SDK interface module317may be incorporated into a structurally separate computing device (e.g., server) that may be configured to be communicatively coupled to internet server302.

In other examples, one or more of the services provided by the modules illustrated inFIG. 3may be hosted in a virtual machine on the cloud. In some cases, the internet server302may be on premises, or alternatively, may be hosted off premises. A service on the cloud may provide the services of part or all of internet server302. Thus, internet server302may either be a physical dedicated server, or may be a virtual machine. In the latter case, the cloud may represent a plurality of disaggregated servers which provide internet server302functionality and virtual storage/database functionality. The disaggregated servers are physical computer servers, which may have a processor, a memory, an I/O interface and/or a network interface. The features and variations of the processor, the memory, the I/O interface and the network interface are substantially similar to those described for the internet server302. Differences may be where the disaggregated servers are optimized for throughput and/or for disaggregation.

Cloud services that provide the functionality of internet server302may be made accessible via an integrated cloud infrastructure. The cloud infrastructure may provide additional service abstractions such as Platform as a Service (“PAAS”), Infrastructure as a Service (“IAAS”), and Software as a Service (“SAAS”).

FIG. 4is a message flow diagram of an example process for providing services for a messaging application with in-built web search. The message flow diagram ofFIG. 4illustrates communication between several networked devices, including user device1402, carrier network404, internet server406, internet service408, and user device2410. User device1402is one possible example of user devices200A and/or200B ofFIG. 2. Carrier network404is one possible example of RAN120and/or core network140ofFIG. 1. Internet server406is one possible example of internet server302ofFIG. 3. Internet service408is one possible example of at least one of the internet services336-342ofFIG. 3. User device2402is one possible example of user devices200A and/or200B ofFIG. 2.

As shown in process block412, the messaging application216of user device1402may generate a query. In one example, generating the query includes sending a query request220from the user device1402to the internet server406. As describe above, with reference toFIG. 3, the query request input module318may receive the query request220, where the query request220includes one or more search terms and, optionally, an indication of one or more internet services to utilize for the query.

Next, in process block414, the internet server406may process the received query request220. In some examples, processing the query request220may include communicating with internet service408to obtain one or more query results. As discussed above, communicating with internet service408may include selecting an API interface based on the indication of the internet service included in the query request220and then generating an API call332that includes the one or more search terms.

Next, in process block416the internet server406receives one or more query results from the internet services. As shown, the query results may be included in one or more API responses334generated by the internet service408. Processing the API response (i.e., process block416) may also include generating one or more encoded messages that includes a reference to the one or more query results as well as maintaining a database (e.g., database330ofFIG. 3) that correlates the generated reference to the one or more query results. The internet server406may then forward/send a query response222back to the messaging application216of the user device1402. In some examples, the query response222includes the one or more query results and one or more encoded messages.

Continuing with the description ofFIG. 4, in process block418, the messaging application216of the user device1402then sends a message. In one example, the message includes an encoded message420that was formatted according to a messaging protocol (e.g., SMS protocol) by internet server406. The user device1402may then send the encoded message420to another user device (e.g., user device2410) via the carrier network404.

As shown in process block422, the user device2then receives the encoded message420via the messaging protocol. A messaging application installed on the user device2410will then process the received encoded message420. How the messaging application installed on the user device2410processes the encoded message depends, in part, on whether the messaging application is compatible with the messaging application of the sending device (i.e., messaging application216of user device1402). For example, if the messaging application installed on user device2410is a compatible messaging application (e.g., same as the messaging application216installed on user device1402with in-built web search), then the messaging application of user device2410may be configured to automatically recognize the encoded message420as one that refers to one or more query results. Thus, the messaging application of user device2410may extract the reference423from the received encoded message420and send the reference423to the internet server406(e.g., via TCP/IP).

If, however, the messaging application of user device2410is a non-compatible messaging application (e.g., a messaging application without in-built web search), then the non-compatible messaging application may display the encoded message as text to the user of user device2410. As describe above, the encoded message420may include a URL that includes a reference to the one or more query results. Thus, the user of user device2410may activate the URL (either by selecting it or by pasting into a web browser), which then sends the reference423to the internet server406(e.g., as an HTTP message).

In process block424, upon receiving the reference423from the user device2410(either from a compatible messaging application or from a web browser), the internet server406then retrieves the query results. In one example, retrieving the query results includes retrieving one or more query results from database330ofFIG. 3based on the path/reference423received from the user device2410. The internet server406then forwards the one or more query results426to the user device2410. In some examples, communication between the internet server406and the user device2410is performed according to one or more internet protocols (e.g., TCP/IP).

Upon receiving the query results426, the user device2410may display the query results (e.g., text, images, videos, audio, etc.) either via the compatible messaging application installed on user device2410or via a web browser.

FIG. 5is a diagram illustrating an example encoded message500. Encoded message500is one possible example of an encoded message dynamically generated by the internet server406. Encoded message500is also one possible example of encoded message420ofFIG. 4that is sent from user device1to user device2according to a messaging protocol (e.g., SMS, MMS, RCS, etc.).

As shown inFIG. 5, the internet server302may format the encoded message500to include one or more search terms502. In one aspect, the search term502is the search term entered in the messaging application216by a user and forwarded to the internet server302in query request220. Encoded message500is also shown as including a description504of one or more of the query results. In some examples, the description504may include additional information of at least one of the query results. For example, if the query result relates to a location (e.g., business), the description504may include a name associated with the location (e.g., business name) and, optionally an address of the location (e.g., business address). By way of another example, if the query result relates to a product available via an internet retailer, the description504may include a name of the product, a current price of the product, a brief description of the product, and so on.

Also included in the illustrated example of the encoded message500is a URL506. In some examples, the URL506is dynamically generated by the internet server302and is provided to direct the recipient of the encoded message500(e.g., user device2410ofFIG. 4) to the internet server302. By way of example, the illustrated URL includes a scheme component508, a host name component510, and a path/reference component512.

In some aspects, the scheme component508identifies the protocol to be used to access the query results on the Internet175. The scheme component508may be HTTP (without SSL) or HTTPS (with SSL). The host name component510identifies the host that holds the query results on the internet175. For example, the host name component510may be the host name of internet server302.

The path/reference component512identifies the query results in the host that the user device wants to access. In the illustrated example ofFIG. 5, the reference included in the URL506is “YjN6d0Qc” and corresponds to the reference generated by the internet server302and maintained in database330.

Encoded message500is also shown as including a message length514. As mentioned above, the internet server302may be configured to format the encoded message500according to a messaging protocol utilized by the messaging application216. In some examples, the messaging protocol (e.g., SMS) may have a maximum character limit. Thus, the internet server302may format the encoded message500to have a message length514that includes a number of characters that are equal to or less than the maximum character limit of the messaging protocol.

In operation, the internet server302may implement one or more schemes for formatting the encoded message500to ensure that the number of characters included in the encoded message500is equal to or less than the maximum character limit. For example, the internet server302may be configured to insert only the first search term included in the query request220as the search term502included in the encoded message500. If the search term is greater than a first threshold character limit, then the internet server302may limit the search term502to the first threshold character limit while also removing the description504from the encoded message500. In another example, the URL506is limited to a fixed character limit (e.g., 27 characters). That is, in some aspects, all URLs generated by the internet server302may have the same number of characters.

As mentioned above, the internet server302may be configured to generate multiple encoded messages, where each encoded message corresponds to a single query result included in the API response334. However, in some examples, a user may desire to send multiple query results to another user. Thus, the example encoded message500may include an optional keyword(s)505. In some examples keyword(s)505include readable text, such as “More at” to indicate that additional query results are available via the URL506. In other aspects, the recipients messaging application (e.g., messaging application216) may be configured to automatically recognize the keyword(s)505included in encoded message500and automatically download all the corresponding query results without further user input. That is, messaging application216may be configured to process a received encoded message500by searching the encoded message500for one or more known keywords505. If the one or more keywords505are detected, the messaging application216may then be configured to automatically retrieve additional query results from the internet server302. In some aspects, if no keywords505are detected by the messaging application216, then the messaging application216may retrieve only a single query result corresponding to the reference512included in the URL506.

FIG. 6is a diagram illustrating an example table600for correlating one or more references602to one or more query results604maintained by an internet server302. Table600is one possible implementation of the data stored in database330ofFIG. 3. As shown inFIG. 6, table600includes a plurality of references602, where each reference602is correlated with at least one query result604. As mentioned above, an API response, such as API response334may include multiple query results, where the internet server302may generate a encoded message and corresponding reference for each of the query results. Thus, in one example, each of the references602stored in table600may correspond to a single query result, where table600may include an additional column (not shown) that identifies multiple references602as being associated with the same API response334. For example, continuing with the “coffee” example discussed above, the API response334from the internet directory service may identify multiple coffee shops. Thus, internet server302may be configured to generate an encoded message (e.g., encoded message500ofFIG. 5) for each of the coffee shops and enter a separate reference602for each coffee shop into table600. The table600may also include a unique ID (not shown) that identifies each of the coffee shops stored to table600as being part of the same query (i.e., part of the same API response334).

FIG. 7is a flow chart illustrating an example process700for providing services for a messaging application with in-built web search. Process700is one example process performed by internet server302ofFIG. 3. Process700will be described with reference to at leastFIGS. 2, 3, and 7

In a process block702, the query request input module318of internet server302receives a query request220, where the query request220is received from a message application (e.g., messaging application216) of a first user device (e.g., UE200A and/or UE200B ofFIG. 2). In some examples, the query request220includes one or more search terms as well as an indication of which internet services with which the internet server302is to perform a query.

Next, in a process block704, the internet server302processes the query request220. As shown, process block704includes process blocks706,708, and710. In process block706, the internet services interface module326communicates with one or more internet services (i.e., internet service336-342) to obtain one or more query results based on the query request. In particular, the internet services interface module326may select an API based on the indication of the desired internet service included in the query request220to generate an API call332that incorporates the one or more search terms of the query request220. Upon receiving the API response(s)334, process block708includes the internet server302generating one or more encoded messages (e.g., encoded message500ofFIG. 5). Next, in process block710, the internet server302may maintain a database (e.g., database330ofFIG. 3) that correlates a reference (e.g., path/reference512of encoded message500) to the one or more query results. In some examples, maintaining database330includes adding, modifying, and/or deleting one or more entries included in table600ofFIG. 6. In one example, each entry included in table600may include an associated expiration date (e.g., one day) such that entries may be periodically removed by the internet server302.

Still referring to process700ofFIG. 7, process block712includes the query response output module320for forwarding/sending the query response222to the messaging application216of the user device. As mentioned above, the query response222may include the one or more query results (e.g., internet resources such as text, images, videos, audio, etc.) and the encoded message(s) (e.g., encoded message500ofFIG. 5). Furthermore, as discussed above, the messaging application216may be configured to forward the encoded message500to another user device according to a messaging protocol (e.g., SMS, MMS, RCS, etc.). Thus, internet server302may format the encoded message500such that the encoded message500is compliant with the restrictions imposed by the messaging protocol utilized by the messaging application216(e.g., restricting number of characters included in the encoded message500to within a maximum character limit of the messaging protocol).

Next, in process block714, the internet server302receives the reference (e.g., reference/path512ofFIG. 5) to the one or more query results from a second user device (i.e., the user device that received the encoded message500from the messaging application216of the originating user device). In response to receiving the reference from the second user device, internet server302may retrieve the corresponding query results from database330and forward the retrieved query results to the second user device (i.e., process block716).

Further operations of the internet server302as well as of the messaging application216will now be described with reference to the various user interfaces illustrated inFIGS. 8-20. The user interfaces illustrated inFIGS. 8-17are possible examples of user interface218of messaging application216ofFIG. 2.

FIG. 8is an example user interface802of a messaging application with in-built web search (e.g., messaging application216ofFIG. 2). As shown inFIG. 8, user interface802may present one or more messages via a display of the user device. For example,FIG. 8illustrates outgoing messages806on the right-side of the display, whereas incoming messages804are presented on the left-side of the display. Further included in user interface802is a text input field808. In one example, text input field808is provided to allow a user of the user device to enter text to send to another user and/or to enter one or more search terms for performing a web search. Furthermore, a search option810is displayed on the user interface802as a virtual user interface element, such as a virtual button. However, in other implementations, search option810may be displayed on the user interface as other user interface elements such as a virtual toggle button, a picker, a pull-down menu, a text field, etc. In operation, the user may select the search option810to initiate a web search from within the messaging application216, itself. In response to selecting the search option810, the user interface802may display one or more internet service selection options which may be utilized for a web search. By way of example,FIG. 9illustrates a plurality of internet service selection options902-912displayed on the user interface802as virtual user interface elements, such as virtual buttons. However, in other implementations, the internet service selection options902-912may be displayed on the user interface802as virtual toggle buttons, pull-down menus, pickers, text fields, etc. In the illustrated example ofFIG. 9, each internet service selection option may be displayed on user interface802as a unique icon (e.g., logo, picture, etc.) associated with an internet service. Each internet service selection option902-912may further include text that identifies the associated internet service (e.g., “AMAZON”, “EBAY”, “BING”, etc.). In some examples, the internet services included on user interface802are internet services with which internet server302is capable of communicating with via an associated API.

Further illustrated as included in user interface802is an internet service configuration option914. In some examples, the number of available internet services may exceed the display capabilities of the user interface802. That is, more internet services may be available than can be reasonably displayed on the user interface802. Thus, internet service configuration option914may cause user interface802to display a configuration menu (not illustrated) that allows the user to select which internet services are presented on the user interface802and/or to configure the order in which the internet service selection options902-912are displayed on user interface802.

In response to selecting at least one of the internet service selection options902-912, the user interface802may populate the text input field808with an identifier of the selected internet service. For example,FIG. 10illustrates the text input field808as being populated with an identifier1002that identifies that the user has selected the “YELP” internet service. The user interface802may further display a virtual keyboard1006to allow the user to enter one or more search terms1004into the text input field808. In the illustrated example ofFIG. 10, the user has entered a search term “coffee”.

In response to entering the search term1004, the messaging application216may generate the query request220that includes the search term1004(e.g., “coffee”) as well as an indication of the selected internet service (e.g., “YELP”). The messaging application216then sends the query request220to the internet server302(e.g., via an internet protocol, such as TCP/IP). The messaging application216then receives the query response222that includes one or more query results. The one or more query results may then be displayed as one or more virtual user interface elements on user interface802of the messaging application216. For example,FIG. 11illustrates several query results displayed on the user interface802as a series of slidable cards1102-1106. In one aspect, each slidable card1102-1106corresponds to at least one query result. In the particular example ofFIG. 11, each slidable card1102-1106corresponds to a coffee shop that was returned as a query result obtained via the API responses334at the internet server302. In one aspect, each slidable card1102-1106may display a variety of information dependent on the API corresponding to the utilized internet service. For example, in the illustrated example ofFIG. 11, each query result includes an image associated with the coffee shop, an average rating, a name of the coffee shop, as well as an associate category (e.g., “coffee & tea”). The formatting and information included in each slidable card1102-1106may depend on the internet service selected. For example, assuming an internet retailer was selected as the internet service, then each slidable card1102-1106may display a name of the product, an image of the product, a current price of the product, as well as an average rating of the product.

Furthermore, if the query results relate to a physical location (e.g., business, school, government agency, etc.) then the user interface802may be configured to display a map1108. In one example, the map1108is an interactive map that allows the user to pan, zoom, or otherwise interact with the virtual map1108. Furthermore, the user interface802may overlay one or more markers corresponding to the query results (e.g., one marker for each slidable card1102-1106).

In another example, the slidable cards1102-1106may be configured to be interactive virtual user interface elements. For example, the user interface802may be configured to highlight a corresponding marker displayed on the map1108based on which slidable card1102-1106is currently selected by the user. Furthermore, the user interface802may be configured to allow the user to scroll through multiple slidable cards in response to a swipe-left and/or swipe-right gesture performed by the user. That is, the user interface802may be configured to only display a limited number of slidable cards at a time (e.g.,2.5). However, additional query results may have been included in the query response222received from the internet server302. Thus, the user interface802may allow the user to view additional sliding cards by displaying addition slidable cards in response to one or more gestures detected via a touch screen display of the user device.

Once the user has viewed the query results (e.g., as slidable cards1102-1106), the user may decide to forward all the query results to another user device. Accordingly, in one aspect, the user interface802may include a send option1202displayed on user interface802as a virtual button. However, send option1202may be implemented as one or more other user interface elements, such as a pull-down menu, picker, or as a gesture input.

In response to selecting the send option1202, the messaging application216may send the encoded message (e.g., encoded message500) to another user device via a messaging protocol (e.g., SMS). In addition, the user interface802may display an indication that the query results were sent to the other user device. For example,FIG. 12illustrates an indication1204that the query results associated with the internet server “YELP” using the search term “coffee” were sent.

FIG. 13is an example user interface802of a messaging application216with in-built web search for displaying additional information1302of a query result and user interface components1306for sending a single query result to another user device. In one example, user interface802may be configured to display additional information1302in response to a user selecting a slidable card (e.g., slidable cards1102-1106ofFIG. 11). As shown inFIG. 13, additional information other than was included in the slidable cards1102-1106may be presented on user interface802. For example,FIG. 13includes additional information1302corresponding to slidable card1104. As shown, additional information1302may include a phone number and full address of the business. Additional information may also include additional content1304. In one example, additional content1304may include advertisements that may or may not be related to the corresponding query result of the slidable card1104.

Furthermore, the user interface802ofFIG. 13may provide the user with the ability to forward a single result to another user device. That is, as discussed above with reference toFIG. 12a user may select the send option1202to send multiple query results to another user device. However, a user may desire to send just one of the query results. Thus, in one example, the user interface802ofFIG. 13includes an indication1306to allow a user to send a single query result in response to a gesture command (e.g., swipe up).

FIG. 14is an example user interface1402of a messaging application with in-built web search for displaying query results as multimedia content received from another user device. In one aspect, the user interface1402is of a messaging application that is the same as, or at least compatible with, the messaging application216ofFIG. 2. That is, messaging application216may include in-built web search, as well as the ability to display query results as multimedia content within the messaging application, itself. As shown inFIG. 14, the user interface1402may display messages1404-1408as well as the query results (e.g., as slidable cards1410-1414). In one example, the messaging application ofFIG. 14may receive the encoded message500from another user device via a messaging protocol (e.g., SMS protocol). In response to receiving the encoded message500, the messaging application ofFIG. 14may communicate with the internet server302to retrieve the one or more query results. As discussed above, communicating with the internet server302may include sending the reference (e.g., reference512) to the internet server302. In response to receiving the reference512, the internet server502may then provide the query results to the messaging application ofFIG. 14, which are then display via user interface1402as slidable cards1410-1414.

FIG. 15is an example user interface1502of a messaging application without in-built web search for displaying an encoded message providing a reference to query results as a text message received from another user device. That is, user interface1502may correspond to a messaging application that is unable to display multimedia content from within the user interface1502itself. Thus, the user interface1502may display the encoded message1508that is received via the messaging protocol (e.g., SMS) as text. In some examples, the messaging application ofFIG. 15, while not able to display multimedia content, may still recognize a URL. Thus, in some aspects, the messaging application ofFIG. 15may recognize the URL1510included in the encoded message1508as a URL. In some examples, the user device ofFIG. 15may be configured to launch a web browser in response to the user selecting the URL1510. Launching the web browser may initiate the web browser communicating (e.g., via HTTP messages) with the web service module324of the internet server302to display the one or more query results within the web browser.

FIG. 16Ais an example user interface1602of a messaging application with user interface components for allowing the generation of transient messages. In some situations, a user may desire to send a transient message to another user. However, the messaging protocol utilized by the messaging application may not provide native transient message functionality. As used herein, a transient message refers to a message that is configured to “disappear” or “self-destruct” after an elapsed period of time.

User interface1602is one possible implementation of user interface218ofFIG. 2. As shown inFIG. 16A, the user interface1602may include a transient message initiator1608displayed on the user interface1602as a virtual button user interface element. However, in other implementations, the transient message initiator1608may be displayed on the user interface1602as other user interface elements, such as a virtual toggle button, a pull-down menu, a picker, a text field, etc. In response to a user selecting the transient message initiator1608, the user interface1602may present one or more virtual user interface elements to allow the user to specify a maximum time period for the transient message. By way of example, in response to a press-and-hold gesture received via the transient message initiator1608, the user interface1602may display a user interface element, such as one or more buttons (e.g., radio, check box, etc.), a slider, a list box, a spinner, a drop-down list, a menu, a text box, and/or a combo box to allow the user to input a maximum time period to be associated with the message.

As mentioned above, the content included in the transient message may include any media, such as a text message, video, audio, link, image, and/or other file. Thus, when the user has entered the content to be sent, (e.g., text is entered via the text input field802), the user may select the send button1202to send a text message as a transient text message.

In response to selecting the send button1202, the messaging application (e.g., messaging application216) may generate a transient message package that is sent to the internet server302. In some aspects, the transient message package includes the content (e.g., text message), an indication that the text message is to be transient, and an indication of the intended recipient (e.g., phone number). In addition, the transient message package may further include the maximum time period associated with the content. In response to receiving the transient message package, the internet server302may store the content to memory (e.g., memory314) and generate an encoded message, where the encoded message includes a reference to the stored content. In one example, the reference is the path included in a dynamically generated URL. The internet server302may also maintain a database that correlates the reference to the stored content. The internet server302may then forward the encoded message to the intended recipient according to a messaging protocol (e.g., SMS). As will be described in further detail below, the recipient may then return the reference included in the encoded message (e.g., via an HTTP message based on the URL) to the internet server302, where the internet server302then retrieves the stored content (e.g., text message) and sends it to the recipient.

As mentioned above, the content included in the transient message may include any media, such as a text message, video, audio, link, image, and/or other file.FIG. 16Billustrates an example of user interface1602that allows a user to generate a transient message that includes content of an image1616. In operation, the user interface1602may display an additional content button1610. In response to selecting the additional content button1610, the messaging application216may provide the user with one or more options for selecting additional content (e.g., photo gallery with images available on the user device, files available on the user device, video gallery with videos available on the user device, etc.). In response to selecting the content (e.g., image1616), the user interface1602may display a preview area1612that includes a preview of the selected content (e.g., image1616). The user interface1602may also display an additional transient message initiator1614within or near the preview area1612. As shown inFIG. 16B, the additional transient message initiator1614is displayed on the user interface1602as a virtual toggle button user interface element. However, in other implementations, the additional transient message initiator1614may be displayed on the user interface1602as other user interface elements, such as a virtual check box button, a pull-down menu, a picker, etc.

Thus, when the user has entered the content to be sent, (e.g., image1616), the user may select the send button1202to send the image1616as a transient message.

In response to selecting the send button1202, the messaging application (e.g., messaging application216) may generate a transient message package that is sent to the internet server302. In the example ofFIG. 16B, the transient message package includes the content (e.g., image1616), an indication that the text message is to be transient, and an indication of the intended recipient (e.g., phone number). In addition, the transient message package may further include the maximum time period associated with the content. In response to receiving the transient message package, the internet server302may store the content (e.g., image1616) to memory (e.g., memory314) and generate an encoded message, where the encoded message includes a reference to the stored image1616. In one example, the reference is the path included in a dynamically generated URL. The internet server302may also maintain a database that correlates the reference to the stored image1616. The internet server302may then forward the encoded message to the intended recipient according to a messaging protocol (e.g., SMS).

FIG. 17is an example user interface1702of a messaging application for displaying transient messages. In one example, the user interface1702corresponds to a messaging application that is the same as or at least compliant with the messaging application216ofFIG. 2. Thus, upon receiving the encoded message that includes a reference to the content stored at the internet server302, the user device ofFIG. 17may communicate with the internet server302to retrieve the content. In one example, the transient content (e.g., text message1704) is then displayed on the user interface1702.

In operation, the internet server302may be configured to initiate a transient timer corresponding to the stored content in response to receiving the reference to the stored content. That is, upon receiving a communication from the recipient that includes the reference to the stored content, the internet server302may begin a timer. Once a time period, as indicated by the transient timer, has elapsed, the internet server302may communicate with the messaging application ofFIG. 17to delete, remove, or otherwise prevent the display of the transient text message1704.

FIG. 18is an example user interface1802of a messaging application for displaying a reference to a transient message. User interface1802corresponds to a messaging application that does not include the ability to display transient messages. That is, user interface1802may correspond to a messaging application that is unable to display transient messages within the user interface1802itself. Thus, the user interface1802may display the encoded message1806that is received via the messaging protocol (e.g., SMS) as text. In some examples, the messaging application ofFIG. 18, while not able to display transient messages, may still recognize a URL. Thus, in some aspects, the messaging application ofFIG. 18may recognize the URL1808included in the encoded message1804as a URL. In some examples, the user device ofFIG. 18may be configured to launch a web browser in response to the user selecting the URL1808. Launching the web browser may initiate the web browser communicating (e.g., via HTTP messages) with the transient message processing module322of the internet server302to display the transient message within the web browser. For example,FIG. 19illustrates an example user interface1902of a web browser for displaying a transient text message1904. In one example, the web browser ofFIG. 19communicates with the transient message processing module322via one or more HTTP messages to display the transient text message1904within the web browser provided the time period corresponding to the transient text message has not expired. If the time period corresponding to the transient text message has indeed expired, the internet server302may be configured to display a default message2002as shown inFIG. 20.

CONCLUSION