Look at creating a SMSMessage class and creating a single, static
Queue<SMSMessage>[
^] instance.
When you receive a message for TX, you create a new instance of an SMSMessage (including the info you need to respond to the client) and add it to the queue. You then have a background thread which retrieves a message from the queue and deals with it. It then used the info supplied to either respond directly, or pass the data to a separate thread to handle responding.
You will probably need to provide some locking to make the Queue thread safe - particularly if more than one thread will be adding to it.