Voice controlled PHP apps with API.ai
In this tutorial we’ll be looking into Api.ai, an API that lets us build apps which understand natural language, much like Siri. It can accept either text or speech as input, which it then parses and returns a JSON string that can be interpreted by the code that we write.
All the files we’ll use in this tutorial are available in this Github repository.
Before we move on to the practical part, it’s important that we first understand the following concepts:
agents – agents are applications. We create an agent as a means of grouping individual entities and intents.
entities – entities are custom concepts that we want to incorporate into our application. They provide a way of giving meaning to a specific concept by means of adding examples. A sample entity would be ‘currency’. We define it by adding synonyms such as ‘USD’, ‘US Dollar’, or just ‘Dollars’. Each synonym is then assigned to a reference value that can be used in the code. It’s just a list of words which can be used to refer to that concept. Api.ai already provides some basic entities such as
@sys.number, which is an entity referring to any number, and
@sys.emailwhich is an entity referring to any email address. We can use the built-in entities by specifying
@sysas the prefix.
intents – intents allow us to define which actions the program will execute depending on what a user says. A sample intent would be ‘convert currency’. We then list out all the possible phrases or sentences the user would say if they want to convert currency. For example, a user could say ‘how much is @sys.number:number @currency:fromCurrency in @currency:toCurrency?’. In this example, we’ve used 2 entities:
@currency. Using the colon after the entity allows us to define an alias for that entity. This alias can then be used in our code to get the value of the entity. We need to give the same entity a different alias so that we could treat them separately in our code. In order for humans to understand the above intent, all we have to do is substitute the entities with actual values. So a user might say ‘How much is 900 US Dollars in Japanese Yen?’ and Api.ai would just map ‘900’ as the value for
@sys.number, ‘US Dollar’ for the fromCurrency
@currencyand ‘Japanese Yen’ for the toCurrency
contexts – contexts represent the current context of a user expression. For example, a user might say ‘How much is 55 US Dollars in Japanese Yen?’ and then follow with ‘what about in Philippine Peso?’. Api.ai, in this case, uses what was previously spoken by the user, ‘How much is 55 US Dollars,’ as the context for the second expression.
aliases – aliases provide a way of referring to a specific entity in your code, as we saw earlier in the explanation for the intents.
location.hrefto point to Youtube’s search results page:
window.location.href = "https://www.youtube.com/results?search_query=pikachu";
Continue reading %Voice controlled PHP apps with API.ai%