Guest Blog: Asterisk Rides the Train
I have chosen Asterisk for many reasons. First was the lower cost, but once I had it running and tested I found it to have many more features than I could imagine. When I first started with Asterisk it was my first introduction to any telephony system at all, everything was learned for this one project, also known as my family’s business, Art Knapp Plantland.
I have had Asterisk running for well over two years, learning more every time I look at it. Once I had all the basics setup and functioning, I had some ideas to tryout and see what I could make work. One of those ideas was an automated timer system for our ride-on train.
Here at work, we have a ride-on train that goes through our nursery. The announcement system for this has gone through many revisions, starting with our cashiers making manual announcements following a timer, and then I made some recordings that were manually started following the timer. Both those attempts worked to a degree, but if it was busy the times would be off. Then I modified it so the cashiers could start the timer on a phone, and the three calls for boarding times (10 minutes, 5 minutes and 1 minute) would all go on their own.
If the driver asks how many minutes are remaining, they don’t usually know, so I made a script that checks the time and reads back the number of minutes before the train should leave.
Technically, the system works like this. Our phones are all connected to our overhead paging system. When the cashiers sell tickets, they dial an extension that launches an AGI script. That script first checks if a call is in progress or not. If there is not call it will copy three call files to the /tmp directory, touch them in the future based on the time they should be announced, move them to the /var/spool/asterisk/outgoing directory, then announce it was successful. Asterisk will then play them in sequence when the time is right. The time-checking script first gets the system time, and compares it against the time the one-minute call is scheduled to go, calculates the minutes, and reads it back. Quite simple really.