Set up telephony (SIP line, extensions, call flow)
The-Y ships a built-in phone system (no 3CX/third-party system needed). You connect a SIP line from your provider, call right in the browser (softphone), and build the call routing — menus, queues, voicemail — as a visual flow. All from inside the CRM.
⏱ line approx. 10 min · Permission: settings.manage (admin) · Free: 200 call minutes/month · Paid: unlimited · As of version 1.1.32
The telephony area — lines, extensions, call flow.
Before you start — what you need
An account with a SIP/telephony provider with a phone number and SIP credentials (server, user, password). We don't buy the number for you — it runs through your provider account (BYO), but we guide you step by step to the finished entry.
For purely internal tests (browser↔browser) you don't need a line — just extensions.
No provider yet? Under Telephony → Lines a guided helper shows suitable providers by country (e.g. Zadarma, sipgate for the DACH region, Twilio) with an explanation and a direct link.
Part A · Connect a SIP line (trunk)
Open Lines.Telephony → Lines. If you have no line yet, the guided provider recommendation appears.
Get a number + SIP details from the provider. Register a phone number there and note the SIP credentials (often "SIP settings" / "VoIP"): server/host, user/login, password.
Enter the line. "+ Add line" and fill in:
Provider/Server (e.g. sip.provider.tld) & Port (usually 5060)
User & password (stored encrypted, write-only)
Register (on/off) & country code (e.g. 43 for Austria)
Activate. Set the line to active. Outgoing calls (and incoming, once the number points to this SIP line at the provider) now run through your system.
Many providers expect numbers in +E.164 format (e.g. +4366012345678). "Number unreachable / 404" is usually a format issue — the system normalizes, but the provider side must accept the number in the right format. For incoming calls, link the phone number to your SIP line at the provider.
Part B · Extensions & browser softphone
Create extensions.Telephony → Extensions: one extension per employee, or "Create for all team members" (auto-numbered from 100). Optionally assign to a person.
Connect the softphone. The softphone at the bottom right automatically registers your own extension. With it you call right in the browser: answer, dial, hold, transfer (blind/attended), park.
Click-to-call & screen-pop. A click on a phone number in the CRM starts the call. For incoming calls the contact card pops up (screen-pop) with the 360° history — plus a ringtone + system notification, even when the tab is in the background.
Testing multiple agents = multiple browsers/logins (each registers its own extension). Connect a device (desk phone/app) via "Connect device" on the extension (SIP/UDP credentials).
Part C · Phone numbers: where does each call go?
Under Telephony → Numbers you find your public phone numbers. For each number you decide where a call goes first — for example to a menu, a ring group, an extension or the opening hours.
Several numbers: if the line tells us which number the caller dialled, every call reaches the destination of exactly that number. With Zadarma the phone system recognises the dialled number automatically — even with several numbers on one Zadarma account.
Without number detection the destination of the topmost active number always applies. The order is the date you added the number; that number is marked on the page with ⭐ “Default without number detection”.
Short redirect: for the WhatsApp verification call you can route a number straight to your extension for 10 minutes (see Meta hub). Running redirects show here as “until … straight to extension …” — with “End redirect”.
Part D · Call flow (IVR, queues, voicemail)
Under Telephony → Call flow you build the routing as a visual flow — connect nodes, no technical knowledge required.
Announcements & menus (IVR): greeting + keys → destinations (extension, queue, forward to mobile, voicemail, another menu). Announcements via text-to-speech (neural voice), browser recording or upload.
Queues & ring groups: ring several agents (simultaneously/sequentially), with an overflow destination and hold music.
Time conditions: route differently inside/outside business hours.
Voicemail: enable per extension; messages land as audio in the inbox.
Greeting while it rings (ring group)
The caller hears a greeting right away — for example “Thanks for calling, we'll be with you in a moment” — while your team's phones are already ringing. Whoever picks up is connected immediately, even in the middle of the greeting. If nobody picks up, the call moves on after the time you set, for example to your mobile.
Create a greeting. Under Telephony → Announcements & menus create a greeting of your own: as text (read out), a recording in the browser or a file.
Open the ring group.Telephony → Ring groups → choose the group → section “🔊 Greeting while it rings” → tick “Play a greeting while the team's phones are already ringing” → under “Which greeting?” pick your greeting.
After that the caller hears a ringing tone (ring … ring) or hold music — your choice.
How long does it ring? Either a fixed time in seconds or “As long as the greeting” — the CRM measures the length when you save.
Where next? As the destination when nobody picks up (“Overflow” in the CRM), e.g. “external number (mobile)” or voicemail.
The timeline “What the caller experiences” shows you what happens before you save. An example with a 12-second greeting, ringing tone and 25 seconds of ring time:
0 s – greeting starts, the team's phones ring
12 s – greeting ends, then ringing tone
25 s – nobody picked up → forwarded to your mobile
Tip: choose “external number” with your mobile as the destination — the team rings first, and after the same time it's your turn.
The greeting while it rings only works with your own greetings (text, recording or file).
Greeting on entry (queue)
A queue can greet the caller right away too: Telephony → Queues → open the queue → “Greeting on entry” → pick a greeting of your own. It plays while the team's phones are already ringing. After that the caller hears the hold music; the waiting announcement repeats as set.
Changes take effect right away
Whatever you save in telephony — announcements, menus, extensions, ring groups, queues and the destinations of your numbers — the phone system picks up on its own within a few seconds. You don't need to restart anything.
If applying ever fails, admins see the notice “The phone system isn't applying changes right now” with the last message at the top of the telephony pages. On crm.the-y.at just let us know; when self-hosting, see troubleshooting below.
Call list, recording & wallboard
Calls: under Telephony → Calls you see answered/missed calls (in/out, duration, contact, "Open" → chat).
Recording: enable per IVR key (consent is built in by the user via an announcement, e.g. "press 1 for recording"); the recording is attached to the call.
Live wallboard: "🔴 Live" at the top of the calls page shows ongoing calls in real time.
Call consent: if a contact is unsubscribed from "call", click-to-call warns first.
Troubleshooting
The line doesn't register
Check server/port, user and password exactly as in the provider dashboard. Some providers require a specific realm/domain name. If registration is up but calls fail with "404", it's usually the number format (+E.164).
No audio / one-way audio
This is almost always NAT/firewall: the RTP ports (media) must be open/forwarded. On the hosted version (crm.the-y.at) this is done. When self-hosting, open SIP (5060/udp) and the RTP range (e.g. 10000–10200/udp) and enter the public IP in the system.
The softphone is stuck on "Connecting…"
Usually a hard browser refresh (Ctrl/Cmd+F5) is enough — the softphone then re-registers. Also check whether an extension is assigned to you.
I changed something, but calls still run the old way
Wait a few seconds and call again — the phone system applies changes on its own. If the telephony pages say “The phone system isn't applying changes right now”, waiting won't help: on crm.the-y.at drop us a line at office@the-y.at; when self-hosting, see the next item.
Self-hosting: changes don't arrive (one-time reload after updating to 1.1.32)
Applies if you run the phone system yourself (service asterisk in your Compose file). From 1.1.32 the worker reloads the phone system itself (via the AMI connection, about 3 s after saving); without AMI a small watcher in the Asterisk container takes over (about 20 s). After the update, once:
Install the update and restart app + worker — the database is updated along the way.
The telephony files aren't part of the images: take over pbx/asterisk/musiconhold.conf, pbx/asterisk/reload-watch.sh and pbx/asterisk/include/generated-000-placeholder-moh.conf, plus in the Compose file the worker mount ./pbx/asterisk/include:/pbx-include (+ PBX_INCLUDE_DIR) and entrypoint/command/environment of the asterisk service. Then:
docker compose up -d --force-recreate asterisk worker
Check: docker compose logs worker | grep pbx-reload shows “Asterisk hat die Änderungen übernommen” (the log line is in German). The AMI account needs write = system.
Without AMI, reload once by hand — after that the watcher applies every further change:
Without the new musiconhold.conf, the greeting while it rings only plays the default hold music.
All calls reach the same destination although I have several numbers
Then the line doesn't tell us which number was dialled, and the destination of the topmost number (⭐) under Telephony → Numbers applies. With Zadarma the phone system recognises the dialled number automatically since version 1.1.32. With other providers, ask whether the line passes on the dialled number.
WhatsApp verification call: the greeting talks over the code
Route the number straight to a phone for the call — in the WhatsApp “Add number” assistant via “Put the code call straight through to me (10 min)”. How it works
Self-hosting: remote calls don't work
For real calls over the internet your server must be publicly reachable (public IP + open SIP/RTP ports). A pure home/NAT server is only suitable for local tests. Details in the server requirements.