1. A query response device comprising: an input adapted to receive user queries; a memory adapted to store one or more routing rules; one or more live agent engines configured to support interactions with one or more live agents; one or more virtual assistant engines configured to support interactions with one or more virtual assistants, the one or more virtual assistants being configured to apply natural language processing to a user query and being capable of sustaining a typed or a spoken conversation with a user to resolve the user query; and a routing module coupled to said one or more live agent engines and to said one or more virtual assistant engines, the routing module comprising a processing device configured: to select, based on content of at least a first user message, from a first user and relating to a first user query, and based on said one or more routing rules, a first live agent engine, of said one or more live agent engines, or a first virtual assistant engine of said one or more virtual assistant engines, as a selected engine, and to route one or more further user messages relating to the first user query to the selected engine, wherein the processing device is further configured to, when the selected engine is the first live agent enginee: intercept one or more messages between the first live agent engine and the first user, and supply content of the one or more intercepted messages to a machine learning module in order to modify capabilities of the one or more virtual assistants, and wherein the processing device is further configured to, when the selected engine is the first virtual assistant engine: invite one of the one or more live agent engines to communicate with the first user following N further messages between the first user and the first virtual assistant engine, where N is a positive integer, wherein the processing device is further configured to determine a value of N based on a user satisfaction threshold level.