The UNIX phylosophy is that every program should
do one thing but do it the best way. And all your problems
could be solved combining several programs.
I don't know lots of OpenBSD, but under linux there is
s/w mgetty. It comes with utility callback. Therefore that I
suggest is take mgetty for answering calls. write your
program to ask for phone number and check for presence in
your list of allowed numbers. If you find - exec() callback.
Otherwise - just exit().