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.
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.
Instructions: Add this UIConfig via the NMS or the OMP's Super User or Reseller access view.
Example UIConfig for a single domain:
Account Type = *
Host Name = *
Reseller = *
Domain = {testDomain}
Role = *
Parameter = PORTAL_EXTRA_JS
Value = {providedFlowbotEmbedUrl}
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.
Pattern A: Test only (recommended first step)
Limit the embed to a single test domain while you validate the experience.
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.
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
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
UIConfig = PORTAL_CSP_IMG_ADDITIONS
Value = https://flowbot-management.servicehub.appstogo.net/ https://flowbotpub.blob.core.windows.net/
UIConfig = PORTAL_CSP_MEDIA_ADDITIONS
Value = https://storage.googleapis.com
PORTAL_CSP_SCRIPT_ADDITIONS
UIConfig = PORTAL_CSP_SCRIPT_ADDITIONS
Value = https://flowbot-management.servicehub.appstogo.net/ https://flowbotpub.blob.core.windows.net/
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.
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)
Warning: 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
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.
- Verify PORTAL_CSP_CONNECT_ADDITIONS includes both wss:// endpoints.
- Confirm your network allows websocket traffic to the allowed domains.