Llamada de voz a través del módem GSM

Me gustaría usar un módem GSM para hacer una llamada de voz a un número de teléfono, reproducir un mensaje grabado, esperar a que se presione un dígito y luego desconectar la llamada. El sistema necesita saber si la línea estaba ocupada, si el usuario respondió y qué dígito fue presionado por el usuario (si lo hubiera). Debería dejar caer la línea si no se presiona nada en 30 segundos. Si el usuario presiona el dígito antes de completar la pregunta, la voz debería detenerse (el usuario no tiene que esperar). Además, sería bueno si el sistema pudiera manejar dígitos no válidos (reproducir el mensaje "dígito no válido", reproducir el mensaje original y esperar la entrada). Sería bueno realizar varias llamadas en paralelo, pero supongo que esto no es posible.

He encontradoEste artícul que explica la interfaz de bajo nivel bastante bien. Sin embargo, esta pregunta es más pragmática: ¿qué bibliotecas y qué módem GSM recomendaría? El sistema operativo es Linux, el módem puede ser RS232 o USB. Preferiría Python, pero C (++) también está bien.

BTW: esto no es telemarketing, es un sistema de notificación. No es que importe ...;)

EDITA: Aprendí que este sistema se conoce con la palabra clave "IVR" (agregado para futuros buscadores).

Respuestas a la pregunta(2)

Su respuesta a la pregunta