iron's blog

Automated event-phone numbers

Recently, I’ve visited both EMF2024 and Bornhack 2024. Both events are among the most fun events that I have had the pleasure to visit. Hackercamps are filled with awesome people, who are all working/sharing their amazing projects. Hackerevents are a little different from most other events, one of their most notable features is the wide availability and use of a local DECT network. This allows you to take a DECT phone (most will work!) and register is at the event, where you’ll be able to call any other DECT phone. Because DECT has its own dedicated part of the radio-spectrum, its very reliable and energy efficient.

EMF 2024 also had a widespread POTS network, with old telephone spread out all around the field. Being a hacker event, ofcourse these phones get bombarded with stickers for all kinds of groups, events and projects. But another common use for stickers at the phones was the advertisement of SIP numbers you could call. These numbers are often automated and would range from cute animal facts to a non-stop playlist of tom scott (Not even joking). Bornhack is much smaller in size compared to EMF, there was no widespread POTS network, but there was a DECT network. A village near my tent (IIS error is intended) did bring their own POTS network to Bornhack, with an assortment of old phones.

However, to my suprise, there were no stickers advertising automatic and silly phone numbers. That is why a friend of me decided to create a few of them with me. We ended up creating the following phone numbers:

NumberT9 MeaningDescriptionAudio
37438FRIETPlays the dutch wikipedia recording of the frietvorkje article
27846BRUINPlays the dutch wikipedia recording of the bruin article
54689LINUXPlays the GNU/Linux copy-pasta in UwU voice
38824DUTCHPlays a very cringe fact about the netherlands
7263RANDGenerates a random number

These phone numbers are using the SIP protocol. This means that they are not registered using DECT, but are using the LAN network to register. We found a Python library called sipsimple and got to work. The documentation for this library is “meh” at best, but it includes a few rich (2k+ lines) example programs (Why there is no simple example included is beyond me, this would be so much easier).

We ended up using the sip-audio-player example, which was so rich that it included nearly everything we wanted. Simply write a start-up script, write a dirty dockerfile and run it on a random thin-client that we borrowed.

sip-settings3 --account add 7263@100.100.100.37 0123456789
sip-settings3 --account add 38824@100.100.100.37 0123456790
sip-settings3 --account add 37438@100.100.100.37 0123456791
sip-settings3 --account add 27846@100.100.100.37 0123456792
sip-settings3 --account add 54689@100.100.100.37 0123456793

./sip-audio-player -a 7263@100.100.100.37 --auto-answer --disable-sound --playback-dir /srv/sip-audio-player/rand-wav/ --auto_answer_playback &
./sip-audio-player -a 38824@100.100.100.37 --auto-answer 3 --disable-sound --playback-dir /srv/sip-audio-player/dutch-wav/ --auto_answer_playback &
./sip-audio-player -a 37438@100.100.100.37 --auto-answer 3 --disable-sound --playback-dir /srv/sip-audio-player/friet-wav/ --auto_answer_playback &
./sip-audio-player -a 27846@100.100.100.37 --auto-answer 3 --disable-sound --playback-dir /srv/sip-audio-player/bruin-wav/ --auto_answer_playback &
./sip-audio-player -a 54689@100.100.100.37 --auto-answer 3 --disable-sound --playback-dir /srv/sip-audio-player/gnuplus-wav/ --auto_answer_playback

In the future, we want to make more advanced phone bots. With choice menu’s (such as afschepen as a service), or even implement a bot that we got told about: the “mate-bottle fill percentage bot” — which can tell you how full your mate bottle is based on the sound it creates when you blow into it.

Thank you for reading this article.
If you spot any mistakes or if you would like to contact me, visit the contact page for more details.