How SUSI AI Searches the Web For You

SUSI is now capable of performing web search to answer your queries. When SUSI doesn't know how to answer your queries, it performs a web search on the client side and displays all the results as horizontally swipeable tiles with each tile giving a brief description and also providing a link to the relevant source. Lets visit SUSI WebChat and try it out. Query : Search for Google Response : <Web Search Results> How does SUSI know when to perform a websearch? It uses action types to identify if a web search is to be performed or not. The API Response is parsed to check for the action types and if a websearch action type is present, then an API call is made using the duckduckgo api with the relevant query and the results are displayed as tiles with : Category : The Topic related to the given query Text : The result from the websearch Image : Image related to the query if present Link : A url redirecting to the relevant source Parsing the actions : Let us look at the API response for a query. Sample Query: search for google Response: <API Response> "actions": [ { "type": "answer", "expression": "Here is a web search result:" }, { "type": "websearch", "query": "google" } ] Note: The API Response has been trimmed to show only the relevant content We find a websearch type action and the query to be searched as google . So we now make a API call using duckduckgo api to get our websearch results. API Call Format : api.duckduckgo.com/?q={query}&format=json API Call for query google : http://api.duckduckgo.com/?q=google&format=json And from the duckduckgo API response we generate our websearch tiles showing relevant data using the fields present in each object. This is the sample object from duckduckgo API response under the RelatedTopics , which we use to create our websearch result tiles. { "Result": "<a href=\"https:\/\/duckduckgo.com\/Google\">Google<\/a> An American multinational technology company specializing in Internet-related services and...", "Icon": { "URL": "https:\/\/duckduckgo.com\/i\/8f85c93f.png", "Height": "", "Width": "" }, "FirstURL": "https:\/\/duckduckgo.com\/Google", "Text": "Google An American multinational technology company specializing in Internet-related services and..." }, Let us look at the code for querying data from the API if (actions.indexOf('websearch')>=0) { let actionIndex = actions.indexOf('websearch'); let query = response.answers[0].actions[actionIndex].query; $.ajax({ url: 'http://api.duckduckgo.com/?format=json&q='+query, dataType: 'jsonp', crossDomain: true, timeout: 3000, async: false, success: function (data) { receivedMessage.websearchresults = data.RelatedTopics; if(data.AbstractText){ let abstractTile = { Text:'', FirstURL:'', Icon:{URL:''}, } abstractTile.Text = data.AbstractText; abstractTile.FirstURL = data.AbstractURL; abstractTile.Icon.URL = data.Image; receivedMessage.websearchresults.unshift(abstractTile); } let message =  ChatMessageUtils.getSUSIMessageData( receivedMessage, currentThreadID); ChatAppDispatcher.dispatch({ type: ActionTypes.CREATE_SUSI_MESSAGE, message }); }, error: function(errorThrown) { console.log(errorThrown); receivedMessage.text = 'Please check your internet connection'; } }); } Here, from the actions object, we get the query needed to search the web. We then make a ajax call using that query to the duckduckgo API. If the API call succeeds then we collect the required data to create tiles as array of objects and store it as websearchresults. and dispatch the message with the websearchresults which gets reflected in the message store and when…

Continue ReadingHow SUSI AI Searches the Web For You