# Create Interfaces using client APIs

These APIs are useful for cases similar to the ones described below.

  1. Use a custom chat interface instead of the CarbonChat chat widget
  2. Build conversational interfaces into your mobile apps
  3. Add CarbonChat to other platforms for which CarbonChat doesn't have an official SDK

# Creating customer objects

You can create and retrieve customer data objects using the inbox_identifier and customer_identifier.

# Inbox Identifier

The inbox_identifier for the API channel can be obtained by running the following command in your rails console.

# replace api_inbox_id with your inbox id
Inbox.find(api_inbox_id).channel.identifier

# Customer Identifier

The customer_identifier or the source_id can be obtained when creating the customer using the create API. You will need to store this identifier on your client-side to make further requests on behalf of the customer. This can be done in cookies, local storage etc.

# Available APIs

Some of the things you can do via the APIs are

  • Create, View and Update Contact
  • Create and List Conversations
  • Create, List and Update Messages

# HMAC Authentication

The Client APIs also support HMAC Authentication (opens new window). The HMAC token for the Channel can be obtained via running the following on your rails console.

# replace api_inbox_id with your inbox id
Inbox.find(api_inbox_id).channel.hmac_token

# Connecting to the CarbonChat WebSockets

To receive the real-time updates from the agent dashboard, You can connect to the CarbonChat WebSockets. CarbonChat WebSockets connecting can be made at the following URL

<your installation url>/cable

# Authenticating your WebSocket connection

You will start receiving the events directed towards your customer object after subscribing using the customer pubsub_token. pubsub_token is provided during the customer create API call.

const connection = new WebSocket('ws://localhost:3000/cable');
connection.send(JSON.stringify({ command:"subscribe", identifier: "{\"channel\":\"RoomChannel\",\"pubsub_token\":\""+ customer_pubsub_token+"\"}" }));

Find the full list of events supported by the web sockets here (opens new window).