This is just brainstorming, but have you looked at
Device::Modem::Log::File ? You can at least see if your AT commands are being logged, and if so, the docs mention:
implement your own new(), write() and close() methods. . So it seems possible to intercept the log file write() and parse it.