Register SIP account and receive calls with Twilio

How to register your SIP softphone and receive inbound calls using Twilio

Properly terminate crystal-lang service in docker

How to handle signals and properly terminate docker service written with the Crystal-lang.

Create the smallest Crystal-lang docker image based on scratch

How to use docker multi-stage builds to create a smallest by size Crystal-lang docker image.

All-in-one (Crystal-lang library that handle all the Asterisk PBX interfaces)

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).

How to install software on firewalled server

How to use a reverse SSH proxy to install software on a server with outbound firewalls (gray zone ;) )

Digital Ocean, Floating IP and VoIP

How to configure Digital Ocean's floating IP with VoIP, specifically with Asterisk, with Docker!

Tiny docker image with ngrok

I've found an excellent tiny Docker image for ngrok (wernight/ngrok). From now just using it to handle this blog.

Updated OPUS codec patch that supports Asterisk 11.11.0 and 12.2.5

I have updated the OPUS codec patch that now supports Asterisk 11.11.0 and 12.2.5. I have tested it with VP8 in pass-through mode, and it works well. You can download it here!

WebRTC with Asterisk 11?

Tonight, I tried two WebRTC clients (JsSIP and sipML5) with Asterisk 11. I was able to get both of them working for echo test calls with the ulaw (g711u) codec. However, when I called from WebRTC to the SIP softphone, there was only one-way audio.

Roaming PBX update

What's new: Asterisk 11.4, SILK codec, watchdog to improve Raspberry Pi board performance and prevent deadlocks.

First release of Roaming PBX

Today, I created the latest image that includes Ruby, pcapsipdump, Asterisk PBX, and the SILK codec. Although it is still in the alpha stage, it is ready for testing.

Creating your own custom image for Raspberry Pi

How to cross-compile a custom Raspberry Pi image and to build custom Asterisk PBX installation.

SIP TCP vs UDP with mobile client: awesome results

Yes, I knew that TCP is better for mobile VoIP in terms of battery consumption, but I didn’t know how much better it would be! Yesterday, I replaced UDP with TCP on my Android softphone (Bria) and… Usually by this time (2:20 PM), my cellphone battery would be at 50% charge, but now it’s at 88 percent.

Raspberry Pi: how to create your own image

Currently I do developing my own Roaming VoIP PBX as a Raspberry Pi image, and have to rebuild project packages often. It is not best idea to compile packages right on Raspberry Pi. That would take hours. I was searching for a tool that can create image base - on my laptop or VPS.

Asterisk with silk8 and amr-nb codecs

How to get Asterisk PBX working with SILK and AMR-NB codecs.

Debian installer (Asterisk and Adhearsion AGI framework)

Here is a script that installs Asterisk PBX 11.x: with fax support, MySQL, Ruby, and Adhearsion AGI.

Roaming PBX with Raspberry Pi, Asterisk and chan_dongle

As a frequent traveler, I understand the telecommunications needs of other travelers and citizens of the world. Recently, I decided to dedicate my free time to building a Roaming PBX solution.

Why you should create AGI?

In the world of Asterisk, the dial-plan is a powerful tool for creating custom voice applications. However, there are situations where using AGI (Asterisk Gateway Interface) is preferred. This article explores the reasons why AGI can be a valuable addition to your Asterisk system.

Click-to-call script for Windows users

Sharing one of my older projects with Asterisk: a click-to-call library with client and server components. It does work with Windows!

How to unlock Huawei modem

After my last post about the GSM gateway based on Raspberry Pi and Huawei modem, I received a few questions asking how to unlock it. Below is a YouTube video that describes the process.

Asterisk on Raspberry Pi as GSM gateway

Yesterday, I installed chan_dongle for my Asterisk PBX running on Raspberry Pi. chan_dongle is a driver that enables the use of Huawei 3G USB dongles as a voice "board" for handling voice, SMS, and USSD. I conducted extensive research on various topics and summarized everything in a document. Additionally, I provided useful links related to Asterisk CLI commands, troubleshooting Huawei modems, and additional resources for chan_dongle.

Time based conditions in voice application

The typical telephony system processes incoming call flows based on different times. Customers want to have control over this and handle time ranges. The platform can also be a multi-tenant server with different virtual PBXes. In my implementation, I use Ruby, ActiveRecord, and polymorphic associations to create routing blocks. By reusing polymorphic database associations, I can create flexible call flow building blocks. These blocks can be linked to any voice-related entity in a PBX, such as an extension, voicemail, conference, etc. This enables customizable and dynamic call handling based on time conditions.

Delete voice recordings older than N-days

Disk space running out fast in loaded telephony systems with instant call recording or either with heavy usage of voicemail. It's good to purge them on regular basis.

Questionnaire application with Asterisk PBX AGI + Ruby

The Questionnaire application, based on the AsteriskRuby gem, is a production-ready system that was developed a while ago for a small project. Now, I want to share it with the VoIP community. The application provides caller authentication, prompts for a PIN code, and continues from the last unanswered question for returning callers, storing answers and call records in the database.

Telephony system for remote locations

How to build a telecommunication system to keep you connected globally while maintaining a good price/quality/flexibility balance. The components include a VoIP server, prepaid SIM card, and DID phone number for low-cost or zero-cost calls.

Asterisk AGI sample in bash

The Asterisk PBX AGI sample in Bash is a great option for creating small yet flexible dial plans for embedded devices and more.