You've received a lot of good info thus far. Allow me to try to answer your latest:
So a node is an extension addressed by a node number that could be any function or series of functions executable by the asterisk dialplan.
A simplified way to look at it is extensions and dialplans as related only to establishing the *connections* between nodes. The *functions* that are available on a given node are mostly unrelated to that, and are defined elsewhere. Perhaps that's where some of your confusion lies? A node number and an extension number are equal - it's a unique identifier for an endpoint. As Kevin said, node numbers can either be "public", whereby they are published via AllstarLink so that all other nodes can connect to them without having a static entry mapping node number to IP address/port in their local "phone book", or they can be private, with the node number, IP address, and port shared only among those node owners/operators in that private group. This is akin to a listed versus unlisted telephone number. In a PBX, an extension might be associated with an analog port to which a regular desk phone is connected, whereas in ASL, it is usually associated with an interface for a single radio, whether that radio is a repeater, a simplex or duplex auxiliary link radio, a simplex radio, a receive-only radio, a transmit-only radio, a frequency-agile remote base, or whatever. Additionally, you can have a radio-less node, which simply behaves as a "hub" for other nodes to connect to (i.e. a conference bridge). By default, all nodes also act as hubs in the sense that multiple remote nodes can connect to a given node at the same time, i.e. you don't need to create or use a radio-less node to act as a hub. However, many larger systems do operate a separate radio-less hub as it allows the hub server to be put in a data center or other secure location with backup power and fast/reliable connectivity. A given node (which has its own unique node number) has associated with it a list of functions that are available on that node. They are defined, along with many other things, in the configuration file rpt.conf. In rpt.conf, you create a mapping of your own codes to the desired Asterisk/app_rpt function . I think if you look through the default rpt.conf or other examples on the net it may start to make more sense. For example, you might create code 6789 and map it to the control operator function which disables the repeater (cop,3). Functions codes that you create are are normally accessed over-the-air via DTMF, but can also be called by scripts, the Asterisk command line interface, triggered remotely from another node, etc.. They can also be called through the event management subsystem to accomplish things like "when node 4444 connects to my node, play this message", or "when the transmitter is first keyed up, set GPIO output #3 high which turns on the fan". You can also create macros that execute a series of functions sequentially, and those macros can be called just like any other function (i.e. via DTMF, via CLI, etc.).
but could just as well be setup to play tt-weasels, trigger a relay at the site, and/or send or read an email with AGI and dialplan scripting. Is this correct?
Aside from the functionality built into app_rpt, you can create functions that do some of the other things you suggest by having that function call a shell script to do whatever you want to do outside of Asterisk. I think that many of your questions will answer themselves once you do an installation, look at the config files, and start playing with it. --- Jeff WN3A --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus