An SGX is a "Soprani.ca Gateway to XMPP", that is, a translation layer between the phone network and XMPP. They are designed to be used as backends for Cheogram and so can implement XMPP in a basic or even sometimes degenerate way and still work well as Cheogram will "fill in the gaps".
How voice will be handled in the SGX/Cheogram world is still TBD and current implementations handle voice outside this process. SMS and MMS are handled inside. Voice can/should be added eventually for call control and/or Jingle.
Basic SMS SGX
The most basic functional SGX supports in-band registration (https://xmpp.org/extensions/xep-0077.html) to provide whatever credentials are needed to access the phone network (for more complex registrations, may alternately implement an ad-hoc command with node `jabber:iq:register`) , and then for every inbound text message to the associated phone number it will send a `<message type="chat">` to the registering JID from a gateway JID of the form `<tel-uri-without-scheme>@gateway.tld`. Every inbound XMPP `<message>` to JIDs of that same style should send a message to the relevant telephone number or return an XMPP error if the message could not be delivered or the number could not be understood.
Messages the SGX sends to users may well result in XMPP-level errors. It is up to the SGX to communicate the failure to deliver the message appropriately.
MMS Pictures / Files
Cheogram delivers file transfers using https://xmpp.org/extensions/xep-0066.html#x-oob -- this may be used to send an MMS with attached media. As a fallback for SGX that only support the "Basic" mode above, the `<body>` will usually end with the URL, so that should be stripped before delivery when converting to an attachment.
MMS "group text"
Advertising additional capabilities
An SGX may support https://xmpp.org/extensions/xep-0030.html on local JIDs. The reported features will be added by Cheogram to its default supported list, and any XMPP stanzas for these extra features will be passed through to the SGX directly.
Message Delivery Receipts
As a special case of the above, if your SGX advertises support for https://xmpp.org/extensions/xep-0184.html then Cheogram will not send receipts itself, but will wait for your SGX to send them (assumedly in response to your carrier telling you the SMS was delivered, or similar).
Setting a Default SIP Route
An SGX can advertise a SIP hostname that will be the default for Cheogram to use when making outgoing calls for users of this SGX. Report a service of type `sip` for https://xmpp.org/extensions/xep-0215.html