The solution would depend on which Avaya you have (Aura or IP Office)...Both solutions I can think of are CTI.
For AURA: CTI -- Avaya support via the AES platform and the DMCC (Device, Media, and Call Control) API....
How It Works:
A. User's J189 phone is registered to Avaya Aura / Communication Manager.
B. Your application (on the PC or Mac) connects to Avaya AES server using the DMCC API.
C. The application authenticates as the user or station and sends a "Make Call" command.
D; AES instructs Communication Manager to initiate the call on the J189.
E. The J189 phone goes off-hook and starts dialing — it behaves as though the user manually dialed.
-----------------
-----------------
For IP OFFICE: Use CCTI with Avaya IP Office...
NOTE: There is no native Mac compatible TAPI or CTI API for IP Office. I think you can achieve your goal using one of these two approaches:
OPTION 1: Use IP Office DevLink Pro API (requires license)
DevLink Pro lets a custom application send a MakeCall command to the IP Office system, which instructs the J189 phone to place the call.
How It Works:
A. You run a small backend service (Node.js, Python, .NET, etc.)
B. This connects to IP Office over a socket (TCP 50797 by default)
C. The phyton code (or whichever you use) sends a message like: "ACTION: MAKECALL EXTN:1001 TO:14085551234"
D. IP Office tells extension 1001 (the J189 phone) to go off-hook and call the number
OPTION 2: Use HTTP + PhoneManager Pro or 3rd-Party Middleware (not sure I'm capturing all the planning details here, but)...
How It Works:
If your setup includes a CTI middleware (e.g., PhoneHelper, TapiLink, or Go Connect), they may expose:
A REST API or a custom URL scheme (e.g.,
http://localhost:3000/dial?number=+15555551234)
You can then trigger this from the Mac via:
A. Browser extension
B. Native macOS shortcut or Automator app
C, JavaScript embedded in a web portal
This will cause the middleware to send the dial instruction to IP Office which send to J189.