> ## Documentation Index
> Fetch the complete documentation index at: https://docs.asisso.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloudonix Integration

> Configure Cloudonix for voice communication in Asisso

## Overview

Cloudonix is a cloud communications platform that enables Asisso voice agents to connect to SIP communications
platform, either on-premise or in the cloud. In addition, Cloudonix exposes a full set of voice APIs, that provide
a full suite of call-control capabilities and more.

## Prerequisites

Before setting up Cloudonix integration, you'll need:

* A [Cloudonix account](https://cockpit.cloudonix.io/onboarding?affiliate=ASISSO)
* A Cloudonix domain UUID (or the domain name)
* A Cloudonix domain API Key (Bearer Token)
* A Cloudonix **Voice Application** on that domain (optional — leave the field blank in Asisso and we'll auto-create one for you on save, with the application `url` pre-set)
* A Cloudonix outbound voice trunk service provider connection
* Asisso instance running and accessible

## Video Tutorial

Watch this step-by-step guide to set up Cloudonix with Asisso:

<iframe className="w-full aspect-video rounded-xl" src="https://www.youtube.com/embed/qLKX0F99jpU?si=tA3zwCsNRKe-WCI1" title="Asisso Cloudonix Setup" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## Configuration

### Step 1: Get Cloudonix Credentials

1. Log in to your [Cloudonix Console](https://cockpit.cloudonix.io/onboarding?affiliate=ASISSO)
2. Find your **Domain ID** (UUID or domain name) and **Bearer Token** (Domain API Key) on the dashboard
3. (Optional) Navigate to your domain's **Applications** and create (or open) the application you'll use with Asisso, then copy its **Application Name**. Skip this if you want Asisso to auto-create the Voice Application for you on save.

### Step 2: Configure in Asisso

1. Navigate to **/telephony-configurations** and click **Add configuration**
2. Watch the Cloudonix setup video tutorial above for detailed guidance
3. Select **Cloudonix** as your provider
4. Enter your credentials:
   * Bearer Token
   * Domain ID
   * Application Name — *optional*. Leave blank and Asisso will auto-create a Voice Application on save (with the application `url` and CXML runtime already configured) and store its name on this configuration.
5. Click **Save Configuration**
6. Open the configuration you just created and add at least one **phone number** (with country code in E.164 format, e.g. `+1234567890`). The default caller ID is used for outbound calls.

   <Note>
     If Asisso auto-created the Voice Application for you, you still need to
     bind your DNIDs to that application in the Cloudonix cockpit (see
     [Step 2 of Inbound Calling Setup](#step-2-create-the-voice-application-and-link-dnids)).
     The auto-created application is named `asisso-<random>` — its name is
     shown on the saved configuration.
   </Note>

### Step 3: Test Your Configuration

1. Create a test workflow
2. Click "Call" to verify connection
3. Check call logs for successful connection

## Inbound Calling Setup

Cloudonix routes inbound calls per **Voice Application** — the webhook URL is set once on the application, and applies to every DNID bound to it. **When you save an inbound workflow on a phone number, Asisso automatically pushes the webhook URL to your Voice Application's `url`** (provided the credentials are correct), so you don't need to set the webhook by hand. If Asisso auto-created the application during configuration save, the `url` is already set and this push is a no-op — you only need to bind your DNIDs to the auto-created application.

### Step 1: Set Up the Inbound Trunk

1. Log in to your [Cloudonix Console](https://cockpit.cloudonix.io)
2. Navigate to **Trunks** → **Create Inbound Trunk** and configure your inbound trunk with your voice service provider

   <img className="block dark:hidden" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-1.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=5ff7356cf968eb259220c61b0a11992b" alt="Cloudonix console showing domain selection" width="2765" height="1642" data-path="images/cloudonix-inbound-config-1.png" />

   <img className="hidden dark:block" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-1.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=5ff7356cf968eb259220c61b0a11992b" alt="Cloudonix console showing domain selection" width="2765" height="1642" data-path="images/cloudonix-inbound-config-1.png" />

### Step 2: Create the Voice Application and Link DNIDs

1. In the Cloudonix cockpit, select your domain and navigate to **Applications**
2. Create a new application (or open the existing one whose name you configured in Asisso) with these settings:
   * **Application Resource Type**: `Remote Application Resource`
   * **Application Runtime**: `Cloudonix (CXML)`
   * **Application URL**: `https://api.asisso.com/api/v1/telephony/inbound/run`
   * **HTTP Method**: `POST`
3. Under **DNID Numbers**, add each phone number (DNID) you want to route through this application
4. Save

   <Note>
     The Application URL is what Asisso's auto-push updates in Step 3 — you
     can leave it blank during creation and let the auto-push fill it in,
     or paste the URL above so the application is usable immediately.
     Either works.
   </Note>

   <img className="block dark:hidden" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-application.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=0096f5b0f00aa91e0c023c294e14520f" alt="Cloudonix application form showing Remote Application Resource type, Cloudonix CXML runtime, the Asisso inbound URL, POST method, and a DNID number entry" width="2576" height="1453" data-path="images/cloudonix-inbound-config-application.png" />

   <img className="hidden dark:block" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-application.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=0096f5b0f00aa91e0c023c294e14520f" alt="Cloudonix application form showing Remote Application Resource type, Cloudonix CXML runtime, the Asisso inbound URL, POST method, and a DNID number entry" width="2576" height="1453" data-path="images/cloudonix-inbound-config-application.png" />

### Step 3: Assign an Inbound Workflow to the Phone Number in Asisso

1. Go to **/telephony-configurations** and open your Cloudonix configuration
2. In the **Phone numbers** section, edit the number that should receive inbound calls
3. Set its **Inbound workflow** to the agent that should answer
4. Save

### Step 4: Verify the URL on the Voice Application

1. Open your Cloudonix cockpit and navigate to your domain's **Applications**
2. Open the application whose name you configured in Asisso
3. Confirm:

   * **URL** is set to: `https://api.asisso.com/api/v1/telephony/inbound/run`
   * **Method** is `POST`

   <Note>
     Asisso pushed this URL automatically when you saved the inbound workflow
     in Step 3. The same URL is shared across every DNID bound to that
     application — Asisso routes each inbound call to the right agent based
     on the called number's inbound workflow assignment. If the field is
     empty, shows a different URL, or Asisso surfaced a sync warning on
     save, the auto-push failed — most often because the Bearer Token,
     Domain ID, or Application Name in Asisso is incorrect. Paste the URL
     into the field yourself, set the method to `POST`, and save.
   </Note>

   <img className="block dark:hidden" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-2.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=802b3fea762204ab341a070e99aa7016" alt="Cloudonix application showing webhook URL configuration" width="2777" height="1555" data-path="images/cloudonix-inbound-config-2.png" />

   <img className="hidden dark:block" src="https://mintcdn.com/asisso-cd509912/QZnK0Tlqk8NEH_06/images/cloudonix-inbound-config-2.png?fit=max&auto=format&n=QZnK0Tlqk8NEH_06&q=85&s=802b3fea762204ab341a070e99aa7016" alt="Cloudonix application showing webhook URL configuration" width="2777" height="1555" data-path="images/cloudonix-inbound-config-2.png" />

### Step 5: Verify Setup

* Ensure your Asisso instance is publicly accessible
* Verify any firewalls allow Cloudonix's IP ranges
* Confirm your inbound trunk is active and receiving calls

### Test Inbound Calling

1. Call your configured phone number from another phone
2. Verify your Asisso voice agent answers and responds
3. Check call logs in both Asisso dashboard and Cloudonix Console
4. Confirm clear two-way audio communication

## Troubleshooting

<AccordionGroup>
  <Accordion title="Invalid phone number error">
    Ensure phone numbers include country code in E.164 format: `+1234567890`
  </Accordion>

  <Accordion title="Authentication failed">
    * Verify Domain ID, Bearer Token, and Application Name are correct
    * Check for extra spaces in credentials
    * Ensure credentials haven't been disabled or deleted in Cloudonix Console
  </Accordion>

  <Accordion title="No audio on calls">
    * Verify WebSocket connection is established
    * Check firewall rules for WebSocket traffic
    * Ensure audio pipeline is configured correctly
  </Accordion>

  <Accordion title="Inbound calls not reaching voice agent">
    * Verify the DNID is bound to the same Voice Application whose name you
      configured in Asisso - Confirm the called number exists in your Asisso
      telephony configuration and has an **Inbound workflow** assigned -
      After assigning the inbound workflow, confirm Asisso successfully updated
      the application's `url` (no warning shown on save) - Verify your inbound
      trunk is active and receiving calls
  </Accordion>

  <Accordion title="Voice agent doesn't respond to inbound calls">
    * Confirm the phone number has an **Inbound workflow** assigned in
      /telephony-configurations - Verify the Bearer Token in Asisso matches the
      one in your Cloudonix Console - Verify WebSocket connection establishes
      successfully - Review call logs for error messages
  </Accordion>
</AccordionGroup>

## Best Practices

* Test your configuration with a single call before running campaigns
* Monitor Cloudonix Sessions for usage
* Use a dedicated Voice Application for Asisso so the shared `url` doesn't conflict with other systems
