One order, two legs
digoDial is not a SIP endpoint and carries no audio. It sends your PBX an Originate order over the Asterisk Manager Interface and reads the events that come back. This page describes what has to be in place on the PBX, and names the limits openly. Screenshots on this site show the app as it is, in German.
How dialing works
digoDial sends an Originate with your device as the channel, the destination as the extension and the configured context, asynchronously. The PBX rings your device first. It answers immediately thanks to the auto answer header, without you pressing anything. Then the PBX dials the destination and bridges both legs.
Which means, honestly: your own device is connected first. Until the far end answers you hear nothing, because no ringback is faked.
Action: Originate Channel: SIP/snom-office Exten: +4969900129xx Context: from-internal CallerID: digoDial <10> Async: true
What your PBX needs
A dedicated AMI user with read on call and system and write on call, originate and system. Nothing more. Read delivers the channel and system events, write allows originate, hangup, transfer and the database access for do not disturb and the voicemail counter.
Restrict permit to the address or subnet the Mac connects from. An open 0.0.0.0/0.0.0.0 has no place in production.
[digodial] secret = <strong-password> read = call,system write = call,originate,system deny = 0.0.0.0/0.0.0.0 permit = 192.0.2.17/255.255.255.255
Do not disturb needs a line in the dialplan
The switch sets and clears an entry in the Asterisk database. Asterisk itself does not act on it, your dialplan does. Without that check the switch changes the stored value but nothing about how the PBX routes calls.
exten => _XXX,1,GotoIf($["${DB(DND/${EXTEN})}" = "YES"]?dnd)
exten => _XXX,n,Dial(SIP/${EXTEN},20)
exten => _XXX,n,Goto(voicemail)
exten => _XXX,n(dnd),Goto(voicemail)
exten => _XXX,n(voicemail),VoiceMail(${EXTEN}@default,u) How names are found
digoDial asks three sources in a fixed order and caches the answer for a configurable time: first the macOS contacts, then LDAP, then your own HTTP endpoint. The first hit wins; in the dial field, hits from several sources are merged.
Every number is normalised to E.164 first, on both sides. That is why the app still finds an entry when the directory holds 069 90012910 and the line delivers +49 69 90012910. Since version 1.5.3 digoDial compares LDAP candidates locally, because no directory can match a national spelling against an international one.
LDAP runs through the ldapsearch that ships with macOS. The HTTP endpoint receives the number in a template and answers with JSON, from which a path picks the name.
(|(telephoneNumber={number})(mobile={number})(homePhone={number}))
https://directory.example.com/lookup?number={number}
-> {"contact": {"displayName": "Katrin Vogler"}}
JSON path: contact.displayName Security
Plain AMI on port 5038 carries user, password and all call metadata in the clear. That belongs on your own network. Across sites, use AMI over TLS or put a WireGuard tunnel in place and reach the plain port only through it.
The password lives in the macOS keychain, not in a file. The app runs in the App Sandbox with Hardened Runtime and talks only to the configured host. Anyone who wants to check can see it in any packet capture.
Tested with
digoDial was accepted on 24 and 25 August 2026 against a production PBX: Asterisk 18.10 with chan_sip on Debian, a Snom D385 as the extension. All nine points of the acceptance list were walked through on the real phone, from connecting through transfer and do not disturb to reconnecting after the network was cut.
macOS 15 or newer is required. Development and acceptance ran on macOS 26.
The core package of the app has 218 automated tests in 31 groups, plus 22 tests of the app itself. They last ran green in full on 11 October 2026.
Frequent questions
What happens if several devices share my extension?
digoDial dials through the device you picked in the menu bar. Other devices on the same extension are untouched, and incoming calls still show up for the monitored extension.
Why do I hear nothing while dialing?
Because digoDial does not play you something the line does not carry. Your phone answers at once, the destination is called afterwards. If the carrier delivers no early media, it stays silent until the call is answered.
Does the Mac need an internet connection?
No. digoDial only talks to your PBX. Everything that lives inside your network works without internet.
The shortcut does nothing, what is missing?
The accessibility permission. Without it the app cannot read the selected text and reports that no phone number is selected. The checkbox is in System Settings under Privacy and Security.