What are AI tools?

AI tools allow you to create deep integrations between your app / website and Kai (our AI bot). A few use-cases might include:

  • A banking app allowing to initiate transactions
  • Performing a password reset directly in the messenger
  • Canceling orders

The possibilities are almost endless. The following example shows how to add a new AI tool allowing users to initiate bank transactions directly inside Kai.

Specify AI tools

// Creating parameters
GleapAiToolParameter amountParameter = new GleapAiToolParameter(
        "amount",
        "The amount of money to send. Must be positive and provided by the user.",
        "string",
        true
);

String[] possibleEnumValues = {"Alice", "Bob"};

GleapAiToolParameter contactParameter = new GleapAiToolParameter(
        "contact",
        "The contact to send money to.",
        "string",
        true,
        possibleEnumValues
);

GleapAiToolParameter[] params = {amountParameter, contactParameter};

// Creating the AI tool with the parameters
GleapAiTool transactionTool = new GleapAiTool(
        "send-money",
        "Send money to a given contact.",
        "The transfer got initiated but not completed yet. The user must confirm the transfer in the banking app.",
        "button",
        params
);

GleapAiTool[] tools = {transactionTool};

// Set the available tools using the static method
Gleap.getInstance().setAiTools(tools);

Execution type

auto: The tool will be executed automatically.

button: Kai adds a button to it’s reply, that allows the user to execute the tool. The tool will not be executed automatically

Perform actions

Implement the setAiToolExecutedCallback callback to get notified when a tool should be executed.

Gleap.getInstance().setAiToolExecutedCallback(new AiToolExecutedCallback() {
    @Override
    public void aiToolExecuted(JSONObject jsonObject) {
        try {
            String toolName = jsonObject.getString("name");
            JSONObject params = jsonObject.getJSONObject("params");

            System.out.println(jsonObject.toString());
            // {"name":"send-money","params":{"amount":"20","contact":"alice"}}
        } catch (JSONException e) {
            throw new RuntimeException(e);
        }
    }
});