I already described the general setup that was being configured. The process of configuring these three systems to work together took quite a bit of time and referencing hundreds of blog and support pages. It was not until everything was working that I knew which steps were helpful, and the tabs have long-since been closed. Thus, I am going to attempt to capture the important steps for the next person. The final product was that an inbound call would follow this route: PSTN => SPA8800 => Axon => IP550.
Overview of the Experience
I started this configuration process having already given up on one PBX (Icewarp) due to lack of relevant documentation. Although Axon was notably better, there was still a lot left to be desired. As I learned through this process, part of the blame falls on Cisco's inconsistent configuration strategies. I found Axon+SPA3000 instructions and Asterisk+SPA8800 instructions (and here and a few other places), but nothing that pulled together what I needed.
Setting up an extension so that the phone could register with Axon was very intuitive. Inbound calls were initially dropped with the error "Rejected incoming call - could not find a VoIP line to use for call bridging." That error was created because Axon (1) does not do any intuitive header rewriting, and (2) requires one valid local end-point for a call. An inbound call would attempt to use the external line for one endpoint and the Axon system (the FXS on SPA8800) itself for the other. Without basic rewriting, that translated into 0 local end-points for a call. Similar endpoint problems came from outbound calls.
Axon is optimized to work with a Gateway Server (a reasonable decision on their part), but SPA8800 does not work as a gateway server. It initiates registration -- it cannot be registered with. That was a key distinction that came as a surprise. If it is possible for SPA8800 to be the server, I did not see any documentation to that extent during the project. Axon's interface suggests that everything should be plug-and-play if the SPA8800 registers as an external line, but the lack of header rewriting made that an impossibility -- perhaps other devices would have allowed more header customization such that it would have worked more easily.
For Axon to handle the SIP that SPA880 threw at it, we needed:
- SPA8800 Line 1 to register with Axon as an external line for outbound calls
- SPA8800 Line 1 to route calls to its own registration account on Axon for inbound calls
- Caller IDs to be mangled in a predictable way so that each system could appropriately route them
SPA8800 Line 1 to register as an external line for outbound calls
- In Axon, go to External Dialing, Add New External Line, and configure Device Login/Password* with a user name of line1 (change references to "line1" below if you use something different).
- Click Advanced Line Settings for the external line. Check "Disable call activity polling" and Save Changes.
In SPA8800, go to Advanced (top-right), Line 1, and configure Subscriber Information* to match the Axon device info. Additionally, set:
- Proxy: IP_OF_AXON:PORT_OF_AXON
- Register: yes
- Make calls without reg: yes
- Ans calls without reg: yes
- Dial Plan 1: ([2-9]xxxxxxxxx|[0-1][2-9]xxxxxxxxx|<line[1-2]-:>[2-9]xxxxxxxxx|<line[1-2]-:>[0-1][2-9]xxxxxxxxx)
- Dial Plan 8: (<:[email protected]_OF_AXON>S0)
- PSTN CID For VoIP CID: Yes
- PSTN Caller Default DP: 8
- PSTN CID Number Prefix: line1-
- PSTN Ring Timeout: 3 (only if you do not need caller ID)
SPA8800 Line 1 to unspoof when returning a call
- See the dial plan from the setup above. It removes the "line1-" prefix.
Avoid IP550 rewriting
- Add reg.1.thirdPartyName="[email protected]_OF_AXON" to the phone configuration. This provides a complete SIP address to any third-party devices so that all calls are routed through Axon. This was added early in the process, and we did not confirm whether it could be safely removed.
* In each of these cases, I configured the authID to be the same as the uid. That should be unnecessary, but it eliminated any potential confusion - and it works smoothly.
To summarize, you have configured 1 login within Axon and 1 line within SPA8800.
Inbound routing: A PSTN call hits SPA8800, which initiates a SIP from line1-[EXT_CID] to the line1 External Line account on Axon. That call is sent to Axon for handling because of the SPA8800 Line 1 dialplan. Axon uses line1 as one endpoint and the "Incoming Calls Ring on Extension or Group" selection as the other endpoint.
Outbound routing: The line1 external line registration can be used in an External Dialing - Dialing Plan.
Backing Up Settings
- How to backup SPA8800: Not easy.
- How to backup Axon: GUI > Options > Save Settings Backup
- How to backup Polycom: Just backup the configuration directory