README.md

# Chatbase

[![Hex.pm](https://img.shields.io/hexpm/v/chatbase.svg?style=flat-square)](https://hex.pm/packages/chatbase)

Elixir based client that provides helper methods to log data to Chatbase Bot Analytics API

> Note: This is not an official Google product.

For more information related to Chatbase, read [official Chatbase documentation](https://chatbase.com/documentation/generic)

## Installation

Add `chatbase` to your list of dependencies in `mix.exs`. Then run,

```
mix deps.get
```

## Configuration

You can get `api_key` from chatbase and set it in your `config/config.exs` file:

```elixir
config :chatbase, api_key: "CHATBASE_API_KEY"
```

## Examples

- Logging request from user to the agent/bot

  Parameters

      user_id: String used as user identifier
      platform: String used to denote platform, like, facebook, slack, alexa
      message: String sent by the User to the Bot
      intent: String classifying intent of the message
      not_handled: Boolean type, if request handled by agent or not
      feedback: Boolean type, if feedback to agent or not

  Examples

  ```elixir
  cb = Chatbase.user_message("123", "alexa", "some message", "some-intent")
  ```

- Logging response from Agent/bot to the user

  Parameters

      user_id: String used as user identifier
      platform: String used to denote platform, like, facebook, slack, alexa
      message: String sent by the Bot to the User
      intent: String classifying intent of the message
      not_handled: Boolean type, if request handled by agent or not

  Examples

  ```elixir
  cb = Chatbase.agent_message("123", "alexa", "some message", "some-intent")
  ```

- Logging multiple messages at once

  Parameters

      list_of_maps: A list containing maps

  Examples

  ```elixir
  user_data = %{
    "type" => "user",
    "user_id" => "123",
    "platform" => "alexa",
    "message" => "user message",
    "intent" => "some-intent"
  }
  agent_data = %{
    "type" => "agent",
    "user_id" => "123",
    "platform" => "alexa",
    "message" => "agent message",
    "intent" => "some-intent"
  }

  list_of_maps = [user_data, agent_data]
  cb = Chatbase.multiple_messages(list_of_maps)
  ```