ExoVoIP Developer guide

ExoVoIP app

The ExoVoIP app brings your phone system extension to smartphones, tablets and computers: same number, same calling rules and same directory, at the office, at home or on the road. It is available for iPhone, iPad, Android, Mac and Windows and is included with the phone system, with no per-device fees.

How it works

Every linked device becomes an extension of your extension:

  • callers always dial the company number and don't know where you are answering from;
  • outgoing calls show the extension's number and follow the same permissions;
  • each device is linked and unlinked on its own, without touching the desk phones.

Computers (Mac and Windows): the app stays connected as long as the computer is on and the app is open, even minimized to the menu bar or the notification area. Calls arrive immediately, with a window in the foreground and a notification.

Smartphones and tablets (iPhone, iPad, Android): to save battery the app does not stay connected in the background. When a call arrives, the phone system sends a notification that wakes the app in a couple of seconds: the phone rings like a regular call, even with the app closed and the screen locked. That's why the app's notifications must stay enabled.

Installation

Download ExoVoIP from your device's store:

DeviceWhere to get it
iPhone and iPadApp Store
AndroidGoogle Play
MacMac App Store
WindowsMicrosoft Store

On first launch the app asks for permission to use the microphone and to show notifications: allow both, otherwise you won't be able to receive calls.

Direct download for Windows

If the Microsoft Store is not available in your company, download the installer directly from our server:

https://centralino.exovoip.it/api/v1/app-releases/download/windows

The link always points to the latest official version. The file is digitally signed by Exobyte: Windows recognizes it as a trusted publisher, and the download can be resumed if it is interrupted.

Updates

The app installed from the website updates itself: it periodically checks for a new version, downloads it in the background and offers to install it. Before installing it verifies Exobyte's signature, so a tampered file is never run.

When a version is too old to work properly with the phone system, the update is mandatory: the app tells you and updates before connecting. Versions downloaded from the stores are updated by the store itself.

Linking a device

Devices are linked from the control panel, in the extension's App tab. Administrators can do it for any extension, users for their own.

  1. In the control panel open the extension, App tab, and press Generate link code.
  2. On the device open ExoVoIP and choose Scan the QR code, or Enter the code.
  3. Scan the QR code shown in the control panel or type the 8-character code (for example K7QP-4M2X).

The code is valid for 10 minutes and can be used only once: generate a new one to link another device. As soon as linking succeeds, the device appears in the Linked devices list.

Tip: on a computer you don't need the QR code. Open the control panel on another device, or copy the code and paste it into the app.

Under Advanced options you can give the device a name (for example "Mario's iPhone"): you will see it in the list of linked devices. There is no address to enter: the app connects to the ExoVoIP service by itself. A QR code that does not come from your ExoVoIP control panel is rejected.

Linking with email and password

If an extension is assigned to your control panel user, you can also link the device without a code:

  1. On the device open ExoVoIP and choose Sign in with email and password.
  2. Enter the email and password you use for the phone system's control panel (the eye icon shows the password while you type it).
  3. If your account is protected by two-step verification, the app also asks for the 6-digit code from your authenticator app.
  4. Press Sign in and link: the device is linked to your extension and appears under Linked devices.

Your password is only used for linking and is never stored: from then on the device uses its own access key, which you can revoke at any time with Unlink. The same protections as the control panel sign-in apply: after too many wrong attempts sign-in is blocked for a few minutes. If no extension is assigned to your user, ask your administrator to assign one or to generate a link code for you.

When the app rings

In the App tab choose how linked devices ring compared to the extension's phones. The setting applies to all the extension's devices.

ModeWhat happensExample
Together with phones (default)App and phones ring at the same timeAnswer at your desk or on your mobile, wherever you are
Phones firstPhones ring immediately, the app after the chosen delay (1 to 60 seconds)10-second delay: at the office you pick up the desk phone, away the app rings
App firstThe app rings immediately, phones after the chosen delayYou are often on the move: the call reaches your mobile first
Only if phones don't answerThe app rings when phones are busy, offline or nobody answersThe app is your backup when you're away from your desk
App onlyOnly linked devices ringYou work from home and have no desk phone
Does not ringThe app doesn't receive calls, but you can use it to call with the extension numberYou want to call from your laptop without being disturbed

The mode works together with the extension's other settings: Do Not Disturb also stops the app, and forwarding to mobile kicks in after the phones and the app.

Linked devices

The list in the App tab shows each device's type (iPhone, iPad, Android, Mac, Windows), name, app version, last access and status:

StatusMeaning
Notifications onSmartphone or tablet ready: it wakes up on its own when a call arrives
Open the app to reactivateThe device can't be alerted about calls: open the app and allow notifications
ConnectedComputer with the app open, ready to receive calls
Not connectedComputer off or app closed: it will receive calls again as soon as you reopen the app
Online nowThe smartphone or tablet is in use right now

Each extension can have up to 20 linked devices.

Unlinking a device

Press Unlink next to the device and confirm. The effect is immediate: the device stops receiving and making calls with the extension right away. Always do this when a phone is lost, replaced or returned. To use it again, all you need is a new link code.

Company activation

The app is active for all companies. If the App tab shows "ExoVoIP app not active", contact Exobyte to enable it. When the app is disabled for the company, all linked devices stop receiving and making calls.

Troubleshooting

The smartphone doesn't ring with the app closed

  • In the control panel check that the device shows Notifications on. If it shows Open the app to reactivate, open ExoVoIP: the app reactivates on its own.
  • Make sure ExoVoIP notifications are allowed in the phone settings (on iPhone: Settings › Notifications › ExoVoIP).
  • With the phone's _Focus_ or _Do Not Disturb_ modes calls may be silenced: add ExoVoIP to the allowed apps.

Android: calls arrive late or not at all

  • Exclude ExoVoIP from battery optimization: Settings › Apps › ExoVoIP › Battery › Unrestricted.
  • On some models (for example Xiaomi, Huawei, Oppo, Samsung) also enable autostart and turn off power saving for ExoVoIP.
  • Allow full-screen notifications, so the call appears even with the screen locked.

The computer shows Not connected

  • Make sure the app is open (even just in the menu bar or notification area) and the computer is not asleep.
  • In the app settings turn on launch at login, so ExoVoIP opens on its own at startup.

No audio, choppy audio or dropped calls

  • Try another network: switch from Wi-Fi to mobile data or vice versa.
  • Corporate or hotel networks with very strict rules may block some connections: report the issue to Exobyte support.
  • Check that you have allowed the app to use the microphone.

The code is not accepted

  • The code is valid for 10 minutes and only once: generate a new one from the control panel.
  • If the device limit is shown, unlink a device you no longer use.
  • If the app says the QR code is not an ExoVoIP link code, scan the QR code shown in the App tab of the control panel.

Signing in with email and password fails

  • Use the same details you use for the phone system's control panel; if you don't remember them, reset them from the control panel sign-in page.
  • With two-step verification, enter the code currently shown in your authenticator app: it changes every 30 seconds.
  • After too many wrong attempts sign-in stays blocked for a few minutes: wait and try again, or use a link code.
  • If you see "No extension is assigned to your user", ask your administrator to assign an extension to your user.

For developers

The same features are available through the API, scopes extensions:read / extensions:write. The user role can use them on their own extension.

RequestScopeSDK
GET /v1/extensions/:id/appextensions:readextensions.getApp()
PUT /v1/extensions/:id/appextensions:writeextensions.setApp()
POST /v1/extensions/:id/app/activationextensions:writeextensions.createAppActivation()
DELETE /v1/extensions/:id/app/devices/:deviceIdextensions:writeextensions.revokeAppDevice()

PUT /v1/extensions/:id/app accepts ringMode (together, delayed, app_first, fallback, app_only, off) and ringDelayS (1 to 60, used by delayed and app_first). The POST …/app/activation response contains code, url (the QR content, exovoip://activate?…), expiresAt and maxUses (activations allowed with the code, normally 1).

The POST …/app/activation body is optional and reserved for the platform administrator: { "validDays": 30, "maxUses": 10 } creates a code valid for up to 30 days (validDays 1 to 30) that can be used several times (maxUses 1 to 50), for example for app store review or to link several devices with the same QR. If a company administrator or a user sends either field the request is rejected (403); without a body the code stays single-use and valid for 10 minutes.

Each device in the list includes platform (ios, ipados, android, macos, windows), name, appVersion, pushReady (notifications on, always true for computers), pushEnv (production or sandbox, relevant only for iPhone and iPad), registered (connected right now) and lastSeenAt.

The desktop app update check is public (no authentication, rate limited per address): GET /v1/app-releases/latest?platform=windows&channel=stable&current=1.4.2 returns the signed manifest of the latest published version, the file address, updateAvailable and mandatory (installed version lower than minVersion). The file is downloaded from GET /v1/app-releases/files/:platform/:version/:name, with Range request support to resume interrupted downloads. Release management (/v1/app-releases, scope system:read / system:write) is reserved to the platform.

Company activation (GET/PUT /v1/tenants/:id/app, body { "enabled": true }) is reserved for the platform administrator; the response also includes the number of linked devices.