Automatic query-based communication system

An incoming message is responded to by a computer system. The incoming message is received by the computer system. Natural language processing is performed on the incoming message by the computer system to generate a query in response to an automatic response to the incoming message being enabled for an originator of the incoming message. Information responsive to the query and contextual information related to the query from information sources are identified by the computer system using the query generated from the natural language processing of the incoming message. An outgoing message is generated by the computer system using the information and the contextual information. The outgoing message is sent by the computer system to the originator of the incoming message.

BACKGROUND

The disclosure relates generally to an improved computer system and, more specifically, to a method, apparatus, system, and computer program product for automatically replying to messages.

2. Description of the Related Art

When a user receives a phone call on a mobile phone, the user can answer the call or decline the call. On many mobile phones, when the call is declined, the caller does not receive information about the status of the user with a reason why the user cannot answer the call. For example, the caller may not know that the user has declined the call because the user is driving a vehicle, attending a meeting, or is simply unavailable.

Some mobile phones have the ability to send a reply message when a call is declined. The reply message is sent as a text message to reply to the inbound call that is declined. When declining the call, the user may choose from a set of responses displayed on the screen for selection by the user. These responses may be preconfigured default responses in the mobile phone or the response may be custom responses created by the user for the mobile phone. Although these types of responses provide information to the caller, these responses require user input from the user of the mobile phone to send the response.

SUMMARY

According to one embodiment of the present invention, a method responds to an incoming message. The incoming message is received by a computer system. A query is generated by the computer system performing natural language processing on the incoming message in response to an automatic response to the incoming message being enabled for an originator of the incoming message. Information responsive to the query and contextual information related to the query from information sources are identified by the computer system using the query generated from the natural language processing of the incoming message. An outgoing message is generated by the computer using the information and the contextual information. The outgoing message is sent by the computer system to the originator of the incoming message.

According to another embodiment of the present invention, an automatic message reply system comprises a computer system that receives an incoming message. The computer system performs natural language processing of the incoming message to generate a query in response to an automatic response to the incoming message being enabled for an originator of the incoming message. The computer system identifies information responsive to the query and contextual information related to the query from information sources using the query generated from the natural language processing of the incoming message. The computer system generates an outgoing message using the information and the contextual information. The computer system sends the outgoing message to the originator of the incoming message.

According to yet another embodiment of the present invention, a computer program product for responding to an incoming message comprises a computer-readable-storage media with first program code, second program code, third program code, fourth program code, and fifth program code stored on the computer-readable storage media. The first program code is executed to receive the incoming message. The second program code is executed to perform natural language processing on the incoming message to generate a query in response to an automatic response to the incoming message being enabled for an originator of the incoming message. The third program code is executed to identify information responsive to the query and contextual information related to the query from information sources using the query generated from the natural language processing of the incoming message. The fourth program code is executed to generate an outgoing message using the information and the contextual information. The fifth program code is executed to send the outgoing message to the originator of the incoming message.

DETAILED DESCRIPTION

The illustrative embodiments recognize and take into account a number of different considerations. For example, the illustrative embodiments recognize and take into account that currently a user can send a caller a message when on a call. The illustrative embodiments recognize and take into account that the response is not automatic. User input is received from the user to select and send a response to a caller while still on a current call and the response selected by the user is sent as a text message. The illustrative embodiments recognize and take into account that these messages are not automatically sent and may not reflect what information the user wants to provide to a particular caller when the user is unavailable.

Thus, the illustrative embodiments provide a method, an apparatus, a system, and a computer program product for responding to an incoming message. A computer system receives the incoming message. Natural language processing is performed by the computer system on the incoming message to generate a query in response to an automatic response to the incoming message being enabled for an originator of the incoming message. The computer system identifies information responsive to the query and contextual information related to the query from information sources using the query generated from the natural language processing of the incoming message. The computer system generates an outgoing message using the information and the contextual information. The computer system sends the outgoing message to the originator of the incoming message. The response to the incoming message is performed automatically without user input from the user.

With reference now to the figures and, in particular, with reference toFIG. 1, a pictorial representation of a network of data processing systems is depicted in which illustrative embodiments may be implemented. Network data processing system100is a network of computers in which the illustrative embodiments may be implemented. Network data processing system100contains network102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system100. Network102may include connections, such as wire, wireless communication links, or fiber optic cables.

In the depicted example, server computer104and server computer106connect to network102along with storage unit108. In addition, client devices110connect to network102. As depicted, client devices110include mobile phone112, client computer114, client computer116, mobile phone118, tablet computer120, and smart glasses122.

In the depicted example, server computer104provides information, such as boot files, operating system images, and applications to client devices110. In this illustrative example, server computer104, server computer106, storage unit108, and client devices110are network devices that connect to network102in which network102is the communications media for these network devices. Some or all of client devices110may form an Internet of things (IoT) in which these physical devices can connect to network102and exchange information with each other over network102.

Client devices110can be clients to server computer104in this example. For example, server computer104can provide messaging services in the form of voice and text. These messaging services can be provided using, for example, voice over IP (VoIP) server126and text messaging server128. Network data processing system100may include additional server computers, client computers, and other devices not shown. Client devices110connect to network102utilizing at least one of wired, optical fiber, or wireless connections.

Program code located in network data processing system100can be stored on a computer-recordable storage medium and downloaded to a data processing system or other device for use. For example, program code can be stored on a computer-recordable storage medium on server computer104and downloaded to client devices110over network102for use on client devices110.

In the depicted example, network data processing system100is the Internet with network102representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers consisting of thousands of commercial, governmental, educational, and other computer systems that route data and messages. Of course, network data processing system100also may be implemented using a number of different types of networks. For example, network102can be comprised of at least one of the Internet, an intranet, a local area network (LAN), a metropolitan area network (MAN), or a wide area network (WAN).FIG. 1is intended as an example, and not as an architectural limitation for the different illustrative embodiments. In these illustrative examples, network102can also include hardware and infrastructure for facilitating voice calls using technology such as voice over IP, global system for mobile communications (GSM), long-term evolution (LTE), Time division multiple access (TDMA), frequency division multiple access (FDMA), code division multiple access (CDMA), and other technology used for voice communications.

In this illustrative example, mobile phone112is used or carried by user130. In this example, user132operates mobile phone118to make a call to user130. In this example, user130is unavailable. In this depicted example, user130is on a call with user134while driving or riding in a car to the office.

As depicted, user132is a coworker who is relying on user130to attend a meeting at the office. User130is unavailable and does not answer the call from user132. User132leaves a voice message asking where user130is located. User132desires this information to determine whether to postpone or cancel the meeting.

As depicted, automatic responses to incoming messages are enabled by user130. In particular, automatic responses are enabled for messages received from contacts that include user132. In this illustrative example, message processor140generates automatic replies. As depicted, message processor140runs on mobile phone112. In other illustrative examples, message processor140can run on server computer104or can be distributed between both mobile phone112and server computer104.

In this illustrative example, voice message141left by user132is an incoming message that message processor140processes to generate a natural language understanding of voice message141. In other words, voice message141is converted into formal representations, such as first order logic structures that can be manipulated by software. In this example, voice message141is processed to generate query142.

In this illustrative example, message processor140identifies the current location of user130from global positioning system information generated by a global positioning system receiver in mobile phone112. The current position is information144that is responsive to query142. In this example, the current position can be a location on a map, such as 5thand Main Street.

Further, message processor140identifies contextual information146related to query142from information sources150. For example, message processor140determines that the time is 7:45 AM and a navigation application on mobile phone112shows that user130is driving to the office in slow traffic on Main Street and will reach the office by 8:15 AM. Message processor140also accesses a calendar application and determines that user130has a meeting scheduled with user132in the office at 8:30 AM.

In this illustrative example, contextual information146related to the location of user130is that user130is driving to the office in slow traffic on Main Street. Further, contextual information146includes that user130has a meeting with user132. Based on information144and contextual information146, message processor140generates outgoing message148and sends outgoing message148to user132. In this illustrative example, outgoing message148is a text message that reads as follows “Dave, I am at 5th and Main Street and traveling in slow traffic on Main Street and will reach the office at 8:15 AM in time for the meeting.” In other illustrative examples, outgoing message148can be a voice message sent as a call to user132at mobile phone118.

This detailed and useful information sent to user132allows user132to know that user130will attend the meeting scheduled at 8:30 AM. This response is in contrast to current messaging systems. With current messaging systems, the call is not answered and a text message is returned saying something along the lines of “I am driving and I will call or message you back.” This type message would not provide user132with the information needed to know whether user130would be able to attend the meeting.

With reference now toFIG. 2, a block diagram of a messaging environment is depicted in accordance with an illustrative embodiment. In this illustrative example, message environment200includes components that can be implemented in hardware, such as the hardware shown in network data processing system100inFIG. 1.

In this illustrative example, message environment200includes automatic message reply system202, which operates to automatically respond to incoming messages as a service for user204. In this illustrative example, user204is associated with personal communications device206. In this illustrative example, personal communications device206is a physical device that has communications capabilities for exchanging communications such as text messages, voice messages, voice calls and other forms of communications for user204. Personal communications device206can also be referred to as a communications device for user204. As depicted, personal communications device206can be a mobile device, a mobile phone, a personal digital assistant, a tablet computer, smart glasses, a smartwatch, a laptop computer, a voice over IP phone, a desktop computer, a work station, or some other suitable personal communication device.

As depicted, automatic message reply system202can automatically respond to incoming message208that is directed to user204at personal communications device206. In this illustrative example, incoming message208can take a number of different forms. For example, incoming message208can be selected from one of a voice message, a text message, a short message service message, a multimedia message service message, a chat message, an instant messaging service message, or other suitable type of message that can be received over a wired or wireless connection by personal communications device206.

In this illustrative example, automatic message reply system202comprises message processor210in computer system212. Message processor210can be implemented in software, hardware, firmware, or a combination thereof. When software is used, the operations performed by message processor210can be implemented in program code configured to run on hardware, such as a processor unit. When firmware is used, the operations performed by message processor210can be implemented in program code and data and stored in persistent memory to run on a processor unit. When hardware is employed, the hardware may include circuits that operate to perform the operations in message processor210.

In this illustrative example, message processor210is located in personal communications device206. In another illustrative example, computer system212can include other data processing systems in addition to personal communications device206. With this implementation of computer system212, message processor210can run on a set of data processing systems214. In this example, the set of data processing systems214can include at least one of a server computer, a laptop computer, a work station, an Internet of Things device, or other suitable types of data processing systems. In yet another illustrative example, message processor210can be distributed and run on both personal communications device206and the set of data processing systems214in computer system212.

As depicted, incoming message208is received by message processor210for personal communications device206for user204. Message processor210performs natural language processing on incoming message208to generate query216in response to automatic response218to incoming message208being enabled for originator220of incoming message208. In this illustrative example, originator220of incoming message208can be another user operating a communications device such as a mobile phone.

In this illustrative example, automatic response218can be enabled based on user input230selecting a group of settings232. For example, the group of settings232can be a set of contacts designated to receive automatic responses. As used herein, a “group of” when used with respect to items, means one or more items. For example, a group of settings is one or more settings.

A contact can be an individual or a group containing multiple individuals. In another illustrative example, whether automatic response218is enabled can also be based on a group of settings232selected from at least one of a time of day, a day of the week, a vacation day, a sleep time, a do not disturb setting, a holiday, a location of the user, or some other suitable setting.

As another example, automatic response218can be enabled when user204is traveling in a vehicle. User204can be a driver or passenger in the vehicle. In this illustrative example, message processor210identifies information222responsive to query216and contextual information224related to or referring to information222obtained from information sources226using query216generated from the natural language processing of incoming message208. In this illustrative example, contextual information224is information that refers to or is related to information222. As depicted, information sources226can take a number of different forms. For example information sources226can be selected from at least one of a global positioning system receiver, a calendar system, a database, a collaboration website, a social networking system, a file sharing service, a file server, a navigation system, a document management system, a weather service, an enterprise social software application, a navigation application, a traffic information service, or other suitable sources of information that can be used to identify information222responsive to query216and identify contextual information224related to query216.

As depicted, message processor210generates outgoing message228using information222and contextual information224. In this illustrative example, outgoing message228is one of a voice message, a text message, a short message service (SMS) message, a multimedia message service (MMS) message, a chat message, an instant messaging service message, or some other suitable type of message. Message processor210sends outgoing message228to originator220of incoming message208.

With reference now toFIG. 3, a block diagram of a message processor is depicted in accordance with an illustrative embodiment. In the illustrative examples, the same reference numeral may be used in more than one figure. This reuse of a reference numeral in different figures represents the same element in the different figures.

InFIG. 3, an example of components that can be used to implement message processor210is shown. In this illustrative example, message processor210includes natural language processor300, query system302, message generator304, and security system305.

In this illustrative example, natural language processor300receives incoming message208. Incoming message208can be a voice message, a text message, an email message, an instant message, or some other suitable type of message.

Natural language processor300determines whether to process incoming message208. As depicted, this determination is made by checking settings232set by user204. In this illustrative example, settings232indicate if and when automatic responses to incoming messages are to be generated. As depicted, settings232can include at least one of a set of do not disturb settings306, a set of contacts308, or other suitable settings. For example, the set of do not disturb settings306can include one or more settings that indicate when automatic responses should or should not be generated.

For example, the set of do not disturb settings306can include times such as sleeping hours, weekends, holidays, vacation days, or other types of time periods. Further, the set of do not disturb settings306can include an absolute do not disturb indication in which automatic responses are not generated regardless of other conditions.

In this illustrative example, the set of contacts308can be one or more contacts that indicate what people should receive automatic responses. These contacts can be selected by user204. The set of contacts308can also include what people should not receive automatic responses. A contact can be for an individual or for a group.

When automatic responses are enabled, natural language processor300processes incoming message208to generate query216. In this illustrative example, query216is one or more questions and are in a form that can be used by software to search for information that is responsive to the questions. In one illustrative example, when incoming message208is a voice message, the audio voice message can be processed using speech to text processes to generate text from the voice message. This text can then be processed to generate query216.

Natural language processor300can include, for example, artificial intelligence system310. Artificial intelligence system310is a system that has intelligent behavior and can be based on the function of the human brain. An artificial intelligence system comprises at least one of an artificial neural network, a Bayesian network, a fuzzy logic, an expert system, a natural language system, a cognitive system, or some other suitable system. Machine learning is used to train the artificial intelligence system. Machine learning involves inputting data to the process and allowing the process to adjust and improve the function of the artificial intelligence system. A cognitive system is a computing system that mimics the function of a human brain.

In this illustrative example, artificial intelligence system310can implement natural language processing that uses at least one of natural language understanding, syntax, semantics, or discourse.

In another illustrative example, natural language processor300can use rule-based system312in place of or in addition to artificial intelligence system310to generate query216. For example, rule-based system312can access phrase repository314. As depicted, phrase repository314includes frequently used questions or expected questions such as, for example, “Where are you?”, “What time will you reach the office?”, “When will you be available?”, and other phrases.

Rule-based system312can include a set of rules that may define grammar or heuristic rules stemming. Rule-based system312can take up less storage resources and provide an ability to quickly generate query216when commonly used phrases from phrase repository314are present in incoming message208.

In this example, access to information sources226can be controlled to provide security for the information in information sources226. As depicted, security system305can be used to determine which of information sources226can be used to identify information222and contextual information224.

In this example, different originators of incoming messages can be allowed to receive different information. For example, a first originator may be allowed to receive information from a calendar application and a project database while a second originator may be allowed to receive information from the calendar application but not the project database.

Security system305determines which of information sources226a particular originator of an incoming message is enabled for to access the information in these information sources and retrieve information222needed to be responsive to query216and contextual information224referring to or related to information222. For example, if incoming message208is a voice message from a call made by originator220, security system305can check the mobile number for incoming message208against contacts designated by user204. If this mobile number is enabled and has passed authentication, security system305can allow query system302to access a group of information sources226that are designated as enabled for access for originator220. In this example, originator220is a contact that is allowed access to the group of information sources226selected for this contact. Further, security system305can also use an encrypted security token or certificate to validate the security check against the incoming phone number.

In this illustrative example, query system302sends information222and contextual information224to message generator304. As depicted, message generator304uses this information to generate outgoing message228.

As depicted, the processing of incoming message208to generate outgoing message228is performed automatically by different components within message processor210when automatic response218to incoming message208is enabled. In other words, user input is not needed to select a response or determine whether to respond to incoming message208when incoming message208is received for user204.

Additionally, in the different illustrative examples, at least one of messages received from users, information about users, or other information considered by users to be confidential, private, or protected is only received or used with user consent. For example, at least one of settings232, contacts308, information sources226, or other information about or for users are handled by automatic reply system202following privacy rules and regulations.

In the illustrative examples, this information is not used without user opt-in consent. For example, the information is not collected or used unless a user has opted in and voluntarily consented to use of this information and other protected information ahead of time with the proper disclosure and consent forms that follow privacy rules and regulations. In the illustrative example, information is not collected, shared, or otherwise used unless a user has opted in to consent to the user of information for the user. This information can include at least one of a calendar entry, a location of the user, a travel plan, travel route, meeting information, project information, client data, images, video data, audio data, or other information that is considered personal and confidential information to the user.

In one illustrative example, one or more illustrative examples are present that overcome a technical problem with automatically responding to incoming messages in a desired manner such that selected originators of incoming messages can receive desired responses. As a result, one or more illustrative examples enable automatically responding to incoming messages in which the response answers questions in the messages without requiring user input.

Computer system212can be configured to perform at least one of the steps, operations, or actions described in the different illustrative examples using software, hardware, firmware, or a combination thereof. As a result, computer system212operates as a special purpose computer system in which message processor210in computer system212enables automatically responding to incoming messages with information that can be tailored to particular originators of the incoming messages. In particular, message processor210transforms computer system212into a special purpose computer system as compared to currently available general computer systems that do not have message processor210.

In the illustrative example, the use of message processor210in computer system212integrates processes into a practical application for a method for responding to an incoming message that increases the performance of a personal communications device for a user. In other words, message processor210in computer system212is directed to a practical application of a process integrated into message processor210in computer system212that receives an incoming message for a personal communications device and processes the incoming message to generate a query in response to an automated response for the incoming message being enabled for the originator of the incoming message. Information and contextual information identified using the query, and an outgoing message is generated using the information and contextual information. The outgoing message is sent to the originator of the incoming message.

These different steps are performed using message processor210in a manner that avoids user input from a user when an incoming message is received. For example, a user on a current call can continue the call without having to divert attention to select a preprogrammed text message when an incoming call is received. Instead, incoming calls are received as an incoming message and processed to generate a response that can be tailored to the originator of the incoming message. Graphical user interfaces are provided to a user to input settings for which originators of calls should receive automatic responses and what sources of information can be accessed in generating responses.

The illustration of message environment200and the different components inFIGS. 2-3are not meant to imply physical or architectural limitations to the manner in which an illustrative embodiment can be implemented. Other components in addition to or in place of the ones illustrated may be used. Some components may be unnecessary. Also, the blocks are presented to illustrate some functional components. One or more of these blocks may be combined, divided, or combined and divided into different blocks when implemented in an illustrative embodiment.

For example, message processor210is shown as a single block. The different functions performed by message processor210can be distributed across multiple personal communications devices for a user, or distributed on server computers or other data processing systems that can handle these functions for multiple users and their personal communications devices. In another illustrative example, security system305inFIG. 3can be omitted from message processor210in some illustrative examples.

FIGS. 4-7are illustrations of graphical user interfaces that can be displayed to a user for configuring options in a message processor. In the illustrative examples, the different graphical user interfaces in these figures can be displayed on a display system in personal communications device206or some other data processing system in data processing systems214in computer system212for user204inFIG. 2.

In this illustrative example, a display system in the illustrative example is a physical hardware system and includes one or more display devices on which a graphical user interface can be displayed. The display devices may include at least one of a light emitting diode (LED) display, a liquid crystal display (LCD), an organic light emitting diode (OLED) display, a computer monitor, a projector, a flat panel display, a heads-up display (HUD), or some other suitable device that can output information for the presentation of information.

Turning toFIG. 4, an illustration of a graphical user interface for setting user profile information is depicted in accordance with an illustrative embodiment.

In this illustrative example, graphical user interface400displays profile setting page402. As depicted, profile setting page402enables user204to enter information about user204. In this depicted example, profile setting page402includes a number of sections for entering profile information. In this example, the sections include home address404, office hours406, and office address408.

The information entered into profile setting page402can be used by the message processor210for determining contextual information, such as a destination location towards which user204is travelling to and at what time. For example, around 9.30 AM, user204travels towards the office and in the evening and after 6:00 PM, user204travels towards home. If an originator of an incoming message queries where user204is located, the information is the location of user204and the contextual information is the direction of travel, a route, and destination for user204.

Next inFIG. 5, an illustration of a graphical user interface for setting contacts is depicted in accordance with an illustrative embodiment. As depicted, graphical user interface500displays contact settings page502. In this illustrative example, contact settings page502receives user input specifying information for each contact that is enabled for automatic responses. In other words, contact settings page502is used to input information for a particular contact for which automatic responses are to be generated by message processor210when incoming messages are received from the contact and user204is unavailable.

As depicted, contact settings page502includes destination504, contact type506, and applications508. Destination504can include destination information for user204. In this example, destination504includes home address530and office address532. A particular location can be determined based on the time of day and schedule set by the user. This information can be used to indicate the destination that user204is heading towards from the current location of user204. This information can also be used to determine the time needed by user204to reach a destination from the current location of user204.

In this illustrative example, contact type506can be used to identify what category of people in contacts should be enabled for auto-responses. In this illustrative example, contact type506includes colleague520, friend522, family524, and others526. In this illustrative example, contact type506is colleague520.

As depicted, contact type506can be used by message processor210to determine when automatic responses are enabled for a particular contact. For example, automatic responses may be enabled for friends and family during the weekend. On the other hand, automatic responses may be enabled for colleagues only during certain hours of a work week.

In this illustration, applications508are examples of information sources226. Applications508are software applications that can be accessed or that can identify information responsive to a query and contextual information for use in generating an outgoing message for an automatic response when an incoming message sent by the contact is received. In this example, the applications that can be used to identify information and contextual information are a calendar application and a connections page. In the illustrative example, some information sources are default information sources that can be used for every contact. For example, position information from a global positioning system receiver is an example of an information source that can be a default information source.

Turning next toFIG. 6, an illustration of a graphical user interface for receiving user settings is depicted in accordance with an illustrative embodiment. In this depicted example, graphical user interface600displays user settings page602. As depicted, user settings page602enables user204to enter settings for when auto-responses are enabled for user204.

In this illustrative example, user settings page602includes sleep time604, auto-reply during sleep606, auto-reply during weekends608, vacation days610, public holiday calendar612, and do not disturb time614.

In this illustrative example, sleep time604indicates when user204is expected to be asleep. Auto-reply during sleep606can be used indicate whether automatic responses will be generated during sleep time604. In this example, sleep time604is the time period from 10:00 PM to 5:00 AM, and automatic responses are enabled during this time in auto-reply during sleep606.

As depicted, auto-reply during weekends608is used to indicate whether automatic responses will be sent during weekends for user204. In this depicted example, automatic responses are disabled during weekends. Vacation days610and public holiday calendar612are used to identify vacation days and holidays. In this example, automatic responses can be disabled during vacation days and holidays. Additionally, do not disturb time614enables user204to disable automatic responses during this time. In this example, do not disturb time614has a time period from 5:00 AM to 7:00 AM.

Further, during sleep time604, message processor210will not respond to questions such as “Where are you?” & similar questions. Message processor210can be configured to respond only to questions such as “What are the LDAP environment details for the customer PMR?”, “What are call-in details for the meeting with Australian customer at 5:00 AM?”, and other similar questions.

With reference next toFIG. 7, an illustration of a graphical user interface for selecting contacts is depicted in accordance with an illustrative embodiment. As depicted, graphical user interface700displays user settings page702. In this example, settings page702includes auto-reply enabled704and list of contacts706. When auto-reply enabled704is selected, automatic responses are generated for a set of contacts for user204. In this illustrative example, the set of contacts are identified in list of contacts706. From list of contacts706, individual contacts can be selected and further details, such as what applications can be accessed for a particular user, can be made using contact settings page502inFIG. 5.

Turning next toFIG. 8, a flowchart of a process for responding to an incoming message is depicted in accordance with an illustrative embodiment. The process inFIG. 8can be implemented in hardware, software, or both. When implemented in software, the process can take the form of program code that is run by one or more processor units located in one or more hardware devices in one or more computer systems. For example, the process can be implemented in message processor210in computer system212inFIG. 2.

The process begins by receiving an incoming message for a personal communications device for a user (step800). The process performs natural language processing on the incoming message to generate a query in response to an automatic response to the incoming message being enabled for an originator of the incoming message (step802).

The process identifies information responsive to the query and contextual information related to the query from information sources using the query generated from the natural language processing of the incoming message (step804). The process generates an outgoing message using the information and the contextual information (step806). The process sends the outgoing message to the originator of the incoming message (step808). The process terminates thereafter.

With reference next toFIG. 9, a flowchart of a process for identifying information responsive to a query and contextual information related to the query from information sources is depicted in accordance with an illustrative embodiment. The process inFIG. 9is an example of one manner in which step804inFIG. 8can be implemented. The process can be implemented in security system305in message processor210as depicted inFIG. 3.

The process begins by determining a set of information sources that can be accessed based on an originator of an incoming message (step900). In step900, a particular originator of an incoming message may be enabled or allowed to receive information that is located in the set of information sources. For example, the particular originator may be allowed to receive information from a calendar application for the user in the information sources but is not allowed to receive information from a project database. A message processor is enabled to access these applications and retrieve the required information and generate an outgoing message with needed information to the question in the incoming message.

The process identifies information responsive to a query from the set of information sources identified (step902). The process identifies contextual information related to the query from the set of information sources identified using the query generated from the natural language processing of the incoming message (step904). The process terminates thereafter.

Turning next toFIG. 10, a flowchart of a process for responding to an incoming message is depicted in accordance with an illustrative embodiment. The process inFIG. 10can be implemented in hardware, software, or both. When implemented in software, the process can take the form of program code that is run by one or more processor units located in one or more hardware devices in one or more computer systems. For example, the process can be implemented in message processor210in computer system212inFIG. 2.

The process begins by receiving an incoming message (step1000). The incoming message can be, for example, a phone call, a text message, or some other suitable type of message that can be received by a personal communications device.

The process determines whether an automatic response is enabled for the originator of the incoming message (step1002). In step1002, the determination can be made by comparing the identity of the originator against a set of contacts that have been designated by the user as enabled to receive an automatic response. The phone number or other identifier in the incoming message can be compared against the phone numbers for the set of contacts to determine whether an automatic response is enabled for the originator of the incoming message.

If an automatic response is enabled for the originator of the incoming message, a determination is made as to whether a do not disturb setting is active for the user (step1004). In step1004, the do not disturb setting can be from do not disturb settings306inFIG. 3. If a do not disturb setting is not active, the process processes the incoming message to generate a query (step1006). The process then searches for information and contextual information using the query from a set of information sources for which access is enabled for the originator (step1008).

The process generates an outgoing message using the information and the contextual information (step1010). The process terminates thereafter.

In one example, if the incoming message is a voice call asking where the user is, the process in step1008can identify the current location of the user from an information source, such as a global positioning system receiver in the mobile phone of the user, identify the location of the caller, and identify the distance between the user and the caller. The process can generate an outgoing message in the form of a text message and send the text message back to the caller.

In another example, if the incoming message is a text message requesting customer details for a particular customer, the process can identify information responsive to the request for the customer details and contextual information from a calendar application and a customer database for the user. The process can then generate an outgoing message in the form of a text message or a voice message to the originator of the text message.

With reference again to step1002, if an automatic response is not enabled for the originator of the incoming message, the process terminates. With reference again to step1004, if a do not disturb setting is active for the user, the process also terminates.

With the different components and the processes illustrated inFIGS. 1-10, automatic responses to incoming messages can be provided in many different situations. For example, a colleague of a user is waiting for a meeting at the office at 12:00 PM. The user is on the way to the office in traffic that is slower than usual. The colleague calls and texts the user to determine whether the meeting should be postponed or canceled. In this situation, the message processor can automatically determine that the user is driving towards the office and will reach the office prior to the meeting time. The time that the user will reach the office is information responsive to the question. The information about traffic and travel to the office is contextual information that is related to the time at which the user will reach the office for the meeting. This information can be used to generate an outgoing message that is sent to the colleague.

In another illustrative example, a colleague messages the user to obtain details for a meeting. The incoming message can be, for example, “What are the call-in and passcode details for the meeting with the US team at 8:00 PM?”

The message processor can process the incoming message using natural language processing to understand what information is being requested. In this illustrative example, the processing of the incoming message can be used to generate a query. In this example, the query is to search for call-in information including a passcode for the meeting.

The message processor can determine that the originator of the message is a contact and that the originator is a contact that can receive meeting information. The message processor then accesses a calendar for the user and identifies a meeting invite at 8:00 PM. The message processor can also identify the meeting information when it is determined that the calendar shows the correct meeting at that time. This meeting information is the information that is responsive to the query identified from the incoming message.

Further, the message processor can also access the current location of the user and the travel time for the user to reach the office for the meeting. In this example, message processor determines that the user is unable reach the office in time for the meeting. This information is contextual information that is related to the meeting. The message processor generates an outgoing message such as “I am in heavy traffic and will not reach the office in time for the 8:00 PM meeting. The call-in details are 000-117 888-426-6820 and the passcode is 12345678”.

In still another illustrative example, a colleague may send an incoming message such as “What are the cluster environment details that you were working on yesterday?” In response to this incoming message, the message processor can generate a query from the incoming message using natural language processing. The message processor can also validate that the message is from the colleague using the phone number associated with the incoming message and the phone number in contact information for the colleague. In this example, the query is a structured form of the question from the colleague that can be processed by the message processor.

The message processor can determine whether access to the information source with the information on the cluster environment details can be shared with the colleague. When a determination is made that the information can be shared with the colleague, the message processor accesses the information source, which is the repository accessed by a social software application in this example. For example, the message processor can implement a keyword search such as “LDAP Environment” to search for the information. Additionally, the message processor can also perform a search for contextual information such as the customer for which the work is being performed. In this example, the customer can be “PMR 1234”.

The message processor can obtain information from the repository that is responsive to the query. The message processor can generate an outgoing message with information such as “The primary node is on xyz.in.ibm.com machine. The secondary node is on abc.in.ibm.com machine. The root password for both of the machines is root 1234. This work is being performed for PMR 1234”.

Turning now toFIG. 11, a block diagram of a data processing system is depicted in accordance with an illustrative embodiment. Data processing system1100can be used to implement server computer104, server computer106, and client devices110inFIG. 1. Data processing system1100can also be used to implement computer system212, personal communications device206, and data processing systems214inFIG. 2. In this illustrative example, data processing system1100includes communications framework1102, which provides communications between processor unit1104, memory1106, persistent storage1108, communications unit1110, input/output (I/O) unit1112, and display1114. In this example, communications framework1102takes the form of a bus system.

Processor unit1104serves to execute instructions for software that can be loaded into memory1106. Processor unit1104includes one or more processors. For example, processor unit1104can be selected from at least one of a multicore processor, a central processing unit (CPU), a graphics processing unit (GPU), a physics processing unit (PPU), a digital signal processor (DSP), a network processor, or some other suitable type of processor. For example, further, processor unit1104can may be implemented using one or more heterogeneous processor systems in which a main processor is present with secondary processors on a single chip. As another illustrative example, processor unit1104can be a symmetric multi-processor system containing multiple processors of the same type on a single chip.

Memory1106and persistent storage1108are examples of storage devices1116. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, at least one of data, program code in functional form, or other suitable information either on a temporary basis, a permanent basis, or both on a temporary basis and a permanent basis. Storage devices1116may also be referred to as computer-readable storage devices in these illustrative examples. Memory1106, in these examples, can be, for example, a random-access memory or any other suitable volatile or non-volatile storage device. Persistent storage1108may take various forms, depending on the particular implementation.

For example, persistent storage1108may contain one or more components or devices. For example, persistent storage1108can be a hard drive, a solid-state drive (SSD), a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage1108also can be removable. For example, a removable hard drive can be used for persistent storage1108.

Communications unit1110, in these illustrative examples, provides for communications with other data processing systems or devices. In these illustrative examples, communications unit1110can be a network interface card. When data processing system1100is a personal communications device, communications unit1110can be a wireless communications device that provides for communications using wireless signals selected from at least one of wi-fi signals, Bluetooth signals, cellular signals and other suitable types of wireless signals that can be used for wireless communications.

Input/output unit1112allows for input and output of data with other devices that can be connected to data processing system1100. For example, input/output unit1112may provide a connection for user input through at least one of a keyboard, a mouse, or some other suitable input device. Further, input/output unit1112may send output to a printer. Display1114provides a mechanism to display information to a user.

Instructions for at least one of the operating system, applications, or programs can be located in storage devices1116, which are in communication with processor unit1104through communications framework1102. The processes of the different embodiments can be performed by processor unit1104using computer-implemented instructions, which may be located in a memory, such as memory1106.

These instructions are referred to as program code, computer usable program code, or computer-readable program code that can be read and executed by a processor in processor unit1104. The program code in the different embodiments can be embodied on different physical or computer-readable storage media, such as memory1106or persistent storage1108.

Program code1118is located in a functional form on computer-readable media1120that is selectively removable and can be loaded onto or transferred to data processing system1100for execution by processor unit1104. Program code1118and computer-readable media1120form computer program product1122in these illustrative examples. In the illustrative example, computer-readable media1120is computer-readable storage media1124.

In these illustrative examples, computer-readable storage media1124is a physical or tangible storage device used to store program code1118rather than a medium that propagates or transmits program code1118.

Alternatively, program code1118can be transferred to data processing system1100using a computer-readable signal media. The computer-readable signal media can be, for example, a propagated data signal containing program code1118. For example, the computer-readable signal media can be at least one of an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals can be transmitted over connections, such as wireless connections, optical fiber cable, coaxial cable, a wire, or any other suitable type of connection.

The different components illustrated for data processing system1100are not meant to provide architectural limitations to the manner in which different embodiments can be implemented. In some illustrative examples, one or more of the components may be incorporated in or otherwise form a portion of, another component. For example, memory1106, or portions thereof, may be incorporated in processor unit1104in some illustrative examples. The different illustrative embodiments can be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system1100. Other components shown inFIG. 11can be varied from the illustrative examples shown. The different embodiments can be implemented using any hardware device or system capable of running program code1118.

Thus, the illustrative embodiments of the present invention provide a computer implemented method, computer system, and computer program product for responding to an incoming message. The incoming message is received by a computer system. A query is generated by the computer system performing natural language processing, by the computer system, on the incoming message to in response to an automatic response to the incoming message being enabled for an originator of the incoming message. Information responsive to the query and contextual information related to the query from information sources are identified by the computer system using the query generated from the natural language processing of the incoming message. An outgoing message is generated by the computer using the information and the contextual information. The outgoing message is sent by the computer system to the originator of the incoming message.

One or more illustrative examples enable providing information that is specific or relevant to a particular originator of incoming message. Additionally, the illustrative examples can provide contextual information that is related to or refers to the information that is needed by the original. In one illustrative example, a user avoids needing to answer a call while driving right and does not have to select a messaging option for the text response during the current call. Further, the illustrative example avoids an originator of the message having to wait on the user to provide the needed information. In the illustrative examples, the user can set various options that determine when automatic responses are provided.