Packages

Integrate agents from the Api.ai natural language processing service with Elixir

Current section

Files

Jump to
apiai lib client query.ex
Raw

lib/client/query.ex

defmodule ApiAi.Query do
@derive Poison.Encoder
defstruct [:query, :contexts , :location, :timezone, :lang, :sessionId]
def query(client, query_text, session_id, contexts \\ [], location \\ nil, lang \\ "en", timezone \\ "America/New_York") do
payload = %{
query: query_text,
contexts: contexts,
location: location,
timezone: timezone,
lang: lang,
sessionId: session_id
}
case ApiAi.Client.post(client, "query", Poison.encode!(payload), :empty, false) do
{:ok, %HTTPoison.Response{body: body}} ->
{:ok, get_result(body)}
{:error, error} ->
{:error, error}
end
end
def get_result(response) do
%{
speech: response["result"]["fulfillment"]["speech"],
messages: response["result"]["fulfillment"]["messages"]
}
end
end