I have been developing the library ATModem to interface with modem by at commands. The modems supported by library are ESP8266 and SIM900.
Everything can be found at https://github.com/brusdev/ATModem.
If you have any questions, I'll do my best to answer.
Enjoy!