Hi - few replies:
“Have you established SIP trunks between theirs and yours?”
No - there is no need for any additional trunks. This is all purely about signaling to your device that you have an incoming call, at which point your device takes over.
“what they mean when they describe me having to give access to Bria Push server”
This is the firewall part. For example in my router I have a rule that allows xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz etc (Acrobits push servers) on ports 5061, and 10000-20000, to my PBX. This is just required so their server can act as the same extension as my device, except whereas my device is asleep most of the time, their server is always on, always connected to the extension. When someone calls my number, in effect, their server receives the call, at which point they signal my device via push, at which point my device wakes, quickly connects to the PBX and I can answer the call.
“mapping a SIP address Of Record to the Contact URI”
This was what I didn’t understand either - and ultimately in my digging around ended up going with Groundwire (which I like btw). I am not sure if this required any additional setup. YMMV. All I can say is I didn’t need it.
One last piece - on your device when you are configuring whatever app you use it will give you a warning that it is sending your extension credentials to Bria (or Acrobits) - this is so that their server can act as the same extension on your PBX, I have no reason not to trust Bria so was fine with it. At the end of the day though you must consider they are whitelisted to your PBX and have that access.