I feel like I'm missing something extremely simple, here.
I'm using an XBee3 4G to send and receive low level commands to a custom circuit board, which is essentially an Arduino running the TinyGSM library. It can send SMS messages using the P# command. No problems there. It can also receive texts using a stream read command: if there is data available, take it in.
For some reason it reads the SMS body well, but I can't figure out how to get it to spit out the phone number that the SMS (or perhaps the last SMS received) is from.
I know there are a lot of variables here that make it hard for much debugging help, but google has led me to the same unanswered forum posts or info for other brand 4G boards.