Embedding FlowbotAI in Netsapiens

Embedding FlowbotAI in Netsapiens

This article explains how to enable FlowbotAI’s native Netsapiens integration inside the Netsapiens Office Manager Portal (OMP). Once enabled, Service Partners can activate, auto-provision, manage, and support FlowbotAI agents directly in their OMP — reducing external portals, clunky provisioning, and swivel-chair operations.


What this integration adds to your Netsapiens OMP

AI Voice Agents tab (inside the Users page)

The integration adds an AI Voice Agents tab within the Users page of OMP. This tab lists your AI Voice Agent users along with their extension numbers, and provides access to the embedded FlowbotAI management experience.

Info
Note: This solution is compatible with factory styling and custom styling as shown below.


FlowbotAI Embedded with Factory Styling




FlowbotAI Embedded with Custom Styling






DID routing treatment: AI Voice Agent

The integration adds a new DID routing treatment called AI Voice Agent. This enables direct DID call routing to an agent.


DID Routing Treatment Option




Who can access it (scopes)

As of 01/20/2026, the integration is compatible with these scopes:

  • Super User
  • Reseller
  • Office Manager

Support for lower scopes is coming soon.



How auto-provisioning works

When FlowbotAI is activated for a tenant, the integration auto-provisions the required records across both platforms:

  • Creates an Agent and all its components in the FlowbotAI platform
  • Creates a User and Device record in your Netsapiens platform
  • Auto-provisions the user’s registration record in the FlowbotAI SIP ↔ AI Agent gateway


Enable the embedded experience (required)

The embed is enabled by adding a UIConfig entry that injects the FlowbotAI JavaScript bundle into OMP.


UIConfig entry: PORTAL_EXTRA_JS

Instructions: Add this UIConfig via the NMS or the OMP's Super User or Reseller access view.

Notes
Example UIConfig for a single domain:

Account Type = *
Host Name = *
Reseller = *
Domain = {testDomain}
Role = *
Parameter = PORTAL_EXTRA_JS
Value = {providedFlowbotEmbedUrl}

Info
Notes
  • Use a test domain first, validate functionality, then expand scope as needed.
  • The Value should be the exact FlowbotAI embed URL provided for your environment.
  • The integration must be accessed using the OMP URL configured for your environment. Access through a different URL will will result in a browser CORS error. Contact your account manager to enable the integration for multiple URLs.
  • Netsapiens only supports a single UIconfig entry per unique filter combination. You can inject multiple JS URLS within the same UI config using one of the methods described here.



Rollout patterns (recommended)

Start with a narrow scope for validation, then roll out broadly once confirmed.


Limit the embed to a single test domain while you validate the experience.

Notes
Parameter = PORTAL_EXTRA_JS
Domain = {testDomain}
Value = {providedFlowbotEmbedUrl}

Pattern B: Roll out to all domains

After validation, expand the embed to all domains under the matching filters.

Notes
Parameter = PORTAL_EXTRA_JS
Domain = *
Value = {providedFlowbotEmbedUrl}



CSP allow-list entries (only if CSP is enabled)

The FlowbotAI CSP entries below are required only if your system has CSP enabled using the UIConfig:  PORTAL_CSP_ENABLED = Yes

If CSP is enabled, add the following UIConfig entries so the embedded experience can load required scripts, images, media, and websocket connections.

For more information on Netsapiens CSP Security function click here.


PORTAL_CSP_CONNECT_ADDITIONS

Notes
UIConfig = PORTAL_CSP_CONNECT_ADDITIONS
Value = https://flowbot-management.servicehub.appstogo.net/ https://flowbotpub.blob.core.windows.net/ wss://app4.appstogo.net/ https://*.livekit.cloud wss://*.livekit.cloud

PORTAL_CSP_IMG_ADDITIONS

Notes
UIConfig = PORTAL_CSP_IMG_ADDITIONS
Value = https://flowbot-management.servicehub.appstogo.net/ https://flowbotpub.blob.core.windows.net/

PORTAL_CSP_MEDIA_ADDITIONS

Notes
UIConfig = PORTAL_CSP_MEDIA_ADDITIONS
Value = https://storage.googleapis.com

PORTAL_CSP_SCRIPT_ADDITIONS

Notes
UIConfig = PORTAL_CSP_SCRIPT_ADDITIONS
Value = https://flowbot-management.servicehub.appstogo.net/ https://flowbotpub.blob.core.windows.net/

Info
Note: When configuring multiple URL values in a single CSP UIConfig separate each URL with a blank_space.


Testing and validation

After adding UIConfig values, validate in a controlled test domain before rolling out broadly.


Quick validation checklist

  • Open OMP for {testDomain} and confirm the AI Voice Agents tab appears under Users.
  • Attempt to add a test Agent to the system.
  • Confirm the test Agent is listed on the AI Voice Agent tab.
  • Confirm the DID routing treatment AI Voice Agent is available.
  • Verify the embedded UI loads without CSP errors (check browser console for blocked scripts, images, media, or websockets).
  • Perform a basic workflow: view an agent, confirm settings load, and confirm the page remains responsive.


Known limitation: Netsapiens v44.4 microphone policy

Netsapiens v44.4 introduced a hard-coded policy in the Apache config that blocks microphone access to external applications within the browser frame, even if the browser shows mic permission as allowed. This interferes with FlowbotAI’s built-in Test Agent tool, which enables users to call and interact with a Voice Agent via the browser.

We are currently working with Netsapiens to understand future intentions for this hard-coded configuration, which does not currently have a supported option to edit through normal UIConfig or system parameters.

Idea
Note: This only affects the Test Agent webphone. You can still reach your agent by dialing its extension number or routing a DID to it.

Impact

  • The embedded management UI works normally.
  • The browser-based Test Agent experience may fail because microphone access is blocked within the OMP frame.

Interim workaround (not officially supported)

WarningWarning: The workaround below is not officially supported. It can break portal access if not done carefully. Only proceed if you have appropriate access and understand the risk.


Workaround to bypass Permission-Policy

1. SSH to the server.

2. Locate Apache files with the policy set:
            grep -Ri "Permissions-Policy" /etc/apache2/

Expected Output:
/etc/apache2/conf.d/netsapiens-api.conf: Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
/etc/apache2/conf.d/netsapiens-portals.conf: Header always set Permissions-Policy "camera=(),microphone=()"

3. Make a backup copy of the file before editing.

4. Edit the configuration file:
           vim /etc/apache2/conf.d/netsapiens-portals.conf
            # or
            nano /etc/apache2/conf.d/netsapiens-portals.conf

Modify this line to include self for microphone:
            Header always set Permissions-Policy "camera=(),microphone=()"

Example change:
            Before: Header always set Permissions-Policy "camera=(),microphone=()"     
            After:  Header always set Permissions-Policy "camera=(),microphone=(self)"
 
5. Verify the syntax and run:
      sudo apachectl configtest

Expected Output:
            Syntax OK

6. Reload Apache (perform within a maintenance window):
            systemctl reload apache2.service

Notes
Reference: example contents from /etc/apache2/conf.d/netsapiens-portals.conf
ServerTokens Prod
ServerSignature Off

<Directory /var/www/html/portal>
Options FollowSymLinks
AllowOverride None

#add header to limit permissions in /portal. /webphone will need these and not effected.
Header always set Permissions-Policy "camera=(),microphone=()"

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/portal/ "[B= ?,R=301,L]"

RewriteRule ^$ webroot/ "[B= ?,L]"
RewriteRule (.*) webroot/$1 "[B= ?,L]"
</IfModule>
<IfModule mod_php.c>
php_value max_input_vars 25000
</IfModule>

</Directory>


<Directory /var/www/html/portal/webroot>
Options FollowSymLinks
AllowOverride None
<IfModule mod_php.c>
php_flag zlib.output_compression on
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/portal/ [R=301]

</IfModule>


</Directory>



Troubleshooting

The embedded FlowbotAI UI does not appear

  • Confirm PORTAL_EXTRA_JS is applied to the same domain/reseller scope you’re testing.
  • Confirm {providedFlowbotEmbedUrl} is correct for your environment.
  • Clear cache or test in an incognito window to ensure OMP reloads the injected script.

Blank screen or partially loaded UI

  • Check the browser console for CSP violations.
  • If CSP is enabled, confirm PORTAL_CSP_ENABLED = Yes and that you added all required CSP additions.

Realtime features fail (websocket / media issues)

  • Verify PORTAL_CSP_CONNECT_ADDITIONS includes both wss:// endpoints.
  • Confirm your network allows websocket traffic to the allowed domains.



    • Related Articles

    • FlowbotAI Tools Overview

      What tools unlock in FlowbotAI Tools are the “action layer” for FlowbotAI voice agents. They let an agent do more than talk — it can look things up, update systems, and trigger workflows while keeping the conversation natural and on-track. In plain ...
    • Adding Multiple JS Injections in Netsapiens

      Loading External JavaScript Scripts into Netsapiens This guide covers two methods for loading multiple external JavaScript files into Netsapiens portal. Method 1: UI Config Trick This method leverages how Netsapiens processes UI config values by ...
    • Explore Custom Tools

      What “Custom Tools” mean in FlowbotAI Custom tools give your FlowbotAI agent the ability to communicate with systems outside the call—anything you can do in a function (or API endpoint) can be exposed to the agent as a tool. Tools are the foundation ...
    • Noise & VAD Overview

      In this article we describe how FlowbotAI detects speech, suppresses noise, and keeps conversations fast and natural—without constant tuning. What this feature does in plain English Noise handling and Voice Activity Detection (VAD) are the “ears” of ...
    • Explore Built-in Tools

      What “built-in tools” mean in FlowbotAI FlowbotAI ships with a small set of built-in tools that cover common voice-application needs out of the box. They behave the same way as tools you create yourself: your agent can invoke them mid-conversation, ...