Asterisk PBX
Disclaimer
-
TransitBridge is only available on the same host as TetraPack Core, so the target of this document is a server administrator. Other Asterisk systems can be connected to transit Asterisk system via IAX2, SIP, etc.
-
TransitBridge (as well as DetroitBridge) is plug-and-play, no extra configuration required.
-
TransitBridge channel driver uses only default dialplan context. Please use GotoIf or Lua.
-
Some TETRA Systems (at least CTS) don't support external numbers (PSTN on PABX) for messaging.
-
Some TETRA Systems (at least CTS) don't support PABX calls (PSTN or ISSI only).
Modules
- codec_pack.so - TETRA codec definitions and translations, uses our own library CodecPack.so
- chan_transit.so - TransitBridge channel driver
Environment variables
CODECPACK=/<path>/CodecPack.so
asterisk.conf
[options]
systemname = <numeric ID of local system>
Dialplan
Outbound calls
Dial(Transit/<Core ID>/<ISSI>[/<options>])
Where options are:
- s - Use simplex call with PTT control (RADIO_KEY/RADIO_UNKEY, see app_rpt)
- t - Use PSTN call (source ISSI 16777184, CALERID(num) is passed as an external number)
- b - Use PBX call (source ISSI 16777186, CALERID(num) is passed as an external number)
- n<ISSI> - Use specified source ISSI and pass CALLERID(num) as an external number
- c<0-3> - Use service number 0-3 (at this moment only 0 / ACELP is supported)
- p<0-15> - Set call priority
By-default duplex individual call with ACELP (0) and normal priority (0) will be created.
Example:
Dial(Transit/2505/${EXTEN}/t)
Inbound calls
Channel variables:
- TRANSIT_TYPE=ISSI - Extension ID contains destination ISSI
- TRANSIT_TYPE=Number - Extension ID contains destination external number
- TRANSIT_FLOW=PTT - Simplex call
- TRANSIT_ISSI=<ISSI> - Destination ISSI
(only when TRANSIT_TYPE=Number, should contain 16777184 for PTSN call or 16777186 for PBX call) - TRANSIT_PRIORITY=<0-15> - Call priority
Outbound messages
MessageSend(Transit:<Link ID>[/<Destination ISSI>][,<Source ISSI>[ <External Number>]])
Please keep your eyes on formatting. There no spaces in <to> section, no space after comma in <from> section and only single space between source ISSI and external number.
Channel variables:
- MESSAGE(to)=<ISSI>
- MESSAGE(from)=<ISSI>
- MESSAGE(body)=<Text>
- MESSAGE_SEND_STATUS - Will be set to SUCCESS, when the message accepted by the basestation (TNSDS-REPORT result=0), timeout is 500 milliseconds.
Asterisk API said, it corresponds to message enqueuing, not delivery, but we have a bit more. :)
Inbound messages
Channel variables:
- MESSAGE(to)=<ISSI/External Number>
- MESSAGE(from)=<ISSI>
- MESSAGE(body)=<Text>
- MESSAGE_DATA(TRANSIT_TYPE)=ISSI - Extension ID and MESSAGE(to) contain destination ISSI
- MESSAGE_DATA(TRANSIT_TYPE)=Number - Extension ID and MESSAGE(to) contain destination external number
- MESSAGE_DATA(TRANSIT_ISSI)=<ISSI> - Destination ISSI
(only when MESSAGE_DATA(TRANSIT_TYPE)=Number, should contain 16777184 for PTSN call or 16777186 for PBX)
TransitBridge sends delivery report when terminal requested that. Delivery status depends on the status of dialplan proceeding.
Technical Information
Channel ID format
Transit/<Link ID>:<Session UUID>
- Link ID - decimal TetraPack Core instance identifier
- Session UUID - global call session UUID, used in TetraPack Core and BrandMeister Core (in lower case)
Specific Hangup-Cause codes
Transit <TETRA disconnect-cause code>
Get TETRA disconnect-cause codes at Table 14.55 in ETSI EN 300 392-2 V3.8.1. Read more about Hangup Cause here.
Dialplan example
exten => 9XXXXXXX,1,Dial(Transit/2505/${EXTEN:1}/t)
same => n,NoOp(Disconnect Cause: ${HANGUPCAUSE(${HANGUPCAUSE_KEYS()},tech)})
same => n,HangUp()
exten => 16777184,1,NoOp(Incoming message)
same => n,NoOp(From: ${MESSAGE(from)})
same => n,NoOp(To: ${MESSAGE(to)})
same => n,NoOp(Body: ${MESSAGE(body)})
same => n,NoOp(TRANSIT_TYPE: ${MESSAGE_DATA(TRANSIT_TYPE)})
same => n,MessageSend(Transit:2505/${MESSAGE(from)},16777184 911)
same => n,NoOp(Message send status: ${MESSAGE_SEND_STATUS})
No Comments