I’ve created and open-sourced a Crystal-lang shard (library) that handle all the Asterisk PBX interfaces (ARI, AMI and all types of AGI). Get it here: https://github.com/ctiapps/asterisk.
There were no libraries for VoIP with Crystal-lang so I’ve created my own.
Working on recent project we had a need to deal with AMI and ARI together, with a lot of async processing. Initial code were Ruby-based, but there it only single Ruby-gem for ARI and async support in Ruby is not the best one.
I really love Crystal-lang. It’s inspired by Ruby and I had no issues switching to it (however it is not Ruby, only syntax is more or less shared). It is fast, really fast, no lags, no delays! It compiles and resulting code is tiny, docker image with all the stuff packed-in is around 20MB in size. Before making decision I also have tried Elixir. Golang might be also an option, but after Ruby I don’t want to leave comfort zone ;)
What’s in a box?
- All the interfaces ARI, AMI, AGI, FastAGI and AsyncAGI;
- Test specs using live Asterisk PBX (in a Docker). Specs also demonstrate how to use library, but more documentation is coming;
First of all, the library will be continuously supported. I hope, community members will join to help me;
Documentation site with examples;
Considering to add Freeswitch support too;