Simple and lightweight sip server to create voice robots, based on vert.x

Overview

Overview

Lightweight SIP application built on vert.x.

It's intended to be used as addon for full-featured PBX to implement programmable voice scenarios in Java (see motivation).

overview-diagram

dialog-flow-diagram

Motivation

Long story short:

  • need to program voice dialogs
  • want to do it in Java
  • want to do it without 3rd-party services, on open-source stack
  • want to use mature open source PBX for other telephony tasks

State of open source Java SIP

There are several popular open-source implementations of SIP stack in JAVA, for example:

JAIN-SIP-ri - JAIN SIP API Specification contains low-level SIP messages processing, SIP sessions handling (see Dialogs and Transactions) and transport layer (see SipStackImpl).

Sip-servlets - Java SIP Servlet specification allows building full-featured PBX system, uses JAIN-SIP-ri for message processing and application servers for transport layer and SIP sessions handling.

Why robot-sip-server

We need trivial SIP application, capable of accepting incoming calls (UAS) and processing call using programmable scenario. Specifically, we want to handle most of the call processing (like registration, initiation calls with users, dialplans) using full-featured mature PBX and delegate IVR part to lightweight, easy to use and fun to work with Java SIP application.

We can use sip-servlets, but there are issues:

  • SIP servlets have all features to build PBX - they can be used as PBX and programmable IVR both, but popular PBXs like Asterisk and Freeswitch are more mature technologies, and they perfectly suited to do call processing and require less resources.
  • SIP servlets can be used as addon to PBX to process IVR, but they have lots of non-needed for our task features - this involves learning curve (SIP Servlets specification) and customization, troubleshooting and debugging becomes complex.
  • SIP servlets are heavy (comparing to vert.x). Available implementations of sip servlets are running on application servers (like Tomcat or Wildfly), and vert.x Verticles are much faster to boot and require less resources.
  • Available SIP servlets implementations use blocking IO.

Implementation

Implementation is very simple, because we implemented only needed SIP processing, basing on invariants:

Invariants

  1. UAC directly calls UAS - no proxying => SipSession = Dialog = Call (between PBX and robot-sip-server); at most 1 Dialog can be established from 1 INVITE request.
  2. No security and registration, no secure transport.
  3. No reinvites.

Results

  1. Very lightweight SIP application implemented as Verticle
  2. Simplest possible system with minimal needed features. Trivial to undarstand and start working with.
  3. Vert.x (and Quarkus if you want) and Java ecosystem

See examples module in the repository.

Also see example with media (you can call this robot from softphone and hear phrase): example robot announcement

Contributing

Project is hosted on gitlab: https://gitlab.com/ivoice-oss/robot-sip-server

Github repository is mirror.

Reference

You might also like...

Build highly concurrent, distributed, and resilient message-driven applications on the JVM

Akka We believe that writing correct concurrent & distributed, resilient and elastic applications is too hard. Most of the time it's because we are us

Jan 3, 2023

Distributed Stream and Batch Processing

Distributed Stream and Batch Processing

What is Jet Jet is an open-source, in-memory, distributed batch and stream processing engine. You can use it to process large volumes of real-time eve

Dec 31, 2022

a blockchain network simulator aimed at researching consensus algorithms for performance and security

a blockchain network simulator aimed at researching consensus algorithms for performance and security

Just Another Blockchain Simulator JABS - Just Another Blockchain Simulator. JABS is a blockchain network simulator aimed at researching consensus algo

Jan 1, 2023

Apache Mesos is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks

Apache Mesos is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks. It can run Hadoop, Jenkins, Spark, Aurora, and other frameworks on a dynamically shared pool of nodes.

Dec 31, 2022

The react-native Baidu voice library provides voice recognition, voice wake-up and voice synthesis interfaces. react-native百度语音库,提供语音识别,语音唤醒以及语音合成接口。

The react-native Baidu voice library provides voice recognition, voice wake-up and voice synthesis interfaces. react-native百度语音库,提供语音识别,语音唤醒以及语音合成接口。

react-native-baidu-asr react-native-baidu-asr It is a Baidu speech library under React Native, which can perform speech recognition, speech wake-up an

Oct 12, 2022

Create: Liftoff is a create addon that hopes to empower the player even more with the industrial age of the create mod and space rockets!

Create: Liftoff is a create addon that hopes to empower the player even more with the industrial age of the create mod and space rockets!

Create: Liftoff Welcome to Create: Liftoff, a mod that hopes to empower the player even more with the industrial age of the create mod and space rocke

Jun 6, 2022

A course for learning how to program FRC robots using the WPILib and a Romi robot.

FRC-Romi-Programming-Course A course for learning how to program FRC robots using the WPILib and a Romi robot. This course is designed for FRC teams o

Nov 9, 2022

Silicon Copéllia is a software for making robots response affactively to other agents.

Silicon Copéllia is a software for making robots response affactively to other agents. This project aims to cope with the number produced by Copéllia during the affection/emotion processing process and make Copéllia talks by applying NLP.

May 26, 2022

A bukkit/spigot plugin to add custom music discs using the Simple Voice Chat API.

Custom Discs 1.19 A spigot/bukkit fork of henkelmax's Audio Player. Play custom music discs using the Simple Voice Chat API. (The voice chat mod is re

Dec 22, 2022

Vert.x is a tool-kit for building reactive applications on the JVM

Vert.x Core This is the repository for Vert.x core. Vert.x core contains fairly low-level functionality, including support for HTTP, TCP, file system

Jan 8, 2023

Vert.x jOOQ DSL

jOOQ.x - Vertx jOOQ DSL jooqx leverages the power of typesafe SQL from jOOQ DSL and running on SQL connection in a reactive and non-blocking of SQL dr

Nov 16, 2022

A reactive dataflow engine, a data stream processing framework using Vert.x

🐝 NeonBee Core NeonBee is an open source reactive dataflow engine, a data stream processing framework using Vert.x. Description NeonBee abstracts mos

Jan 4, 2023

Java software that notifies by voice when a new Vaccine is available in your specified district/pincode

Java software that notifies by voice when a new Vaccine is available in your specified district/pincode

CowinVaccineAvailabilitySpeaker is a Java software that notifies user by voice when a new vaccine is available in the specified pin-code/district. It

May 24, 2021

Consume an async api (with callback) from sync endpoint using vert.x

Consume an async api (with callback) from sync endpoint using vert.x

vertx-async-to-sync Problem statement Suppose we have two services - A and B. In a trivial and everyday scenario, client makes request to A. A then do

Oct 19, 2022

Aplikasi Penerjemah dengan Voice Recognition

Aplikasi Penerjemah dengan Voice Recognition

Air Translate Detail Bahasa pemrograman : Java Min SDK Version : 19 (Kitkat) Software : Android Studio Sumber Api : https://tools.helixs.tech//API/ Tu

Sep 1, 2022

Vert.x PoC for Project Loom Support

Vert.x Loom Wrapper Codegen This project contains a proof of concept implementation for a codegen wrapper API that provides virtual async-await suppor

Oct 10, 2022

A smart personal voice assistant powered by Alan AI. Enjoy hands free application that can manage daily tasks

Todogenix A smart personal voice assistant using Alan AI. Intro Todogenix is a personal assistant app powered by Alan AI that helps store and manage o

Mar 15, 2022

A todo app with Alan AI smart voice assistant android application

A todo app with Alan AI smart voice assistant android application

Todo App A todo app with Alan AI smart voice assistant android application. Experience a hands-free voice app where you can add, edit, delete and make

Jan 26, 2022
Owner
Ivoice Technology
Technologies for auromation of mass communications
Ivoice Technology
A reactive dataflow engine, a data stream processing framework using Vert.x

?? NeonBee Core NeonBee is an open source reactive dataflow engine, a data stream processing framework using Vert.x. Description NeonBee abstracts mos

SAP 33 Jan 4, 2023
Java software that notifies by voice when a new Vaccine is available in your specified district/pincode

CowinVaccineAvailabilitySpeaker is a Java software that notifies user by voice when a new vaccine is available in the specified pin-code/district. It

Abhishek Chawla 10 May 24, 2021
Netflix, Inc. 23.1k Jan 5, 2023
BitTorrent library and client with DHT, magnet links, encryption and more

Bt A full-featured BitTorrent implementation in Java 8 peer exchange | magnet links | DHT | encryption | LSD | private trackers | extended protocol |

Andrei Tomashpolskiy 2.1k Jan 2, 2023
Fault tolerance and resilience patterns for the JVM

Failsafe Failsafe is a lightweight, zero-dependency library for handling failures in Java 8+, with a concise API for handling everyday use cases and t

Jonathan Halterman 3.9k Dec 29, 2022
Fibers, Channels and Actors for the JVM

Quasar Fibers, Channels and Actors for the JVM Getting started Add the following Maven/Gradle dependencies: Feature Artifact Core (required) co.parall

Parallel Universe 4.5k Dec 25, 2022
Resilience4j is a fault tolerance library designed for Java8 and functional programming

Fault tolerance library designed for functional programming Table of Contents 1. Introduction 2. Documentation 3. Overview 4. Resilience patterns 5. S

Resilience4j 8.5k Jan 2, 2023
Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.

Zuul Zuul is an L7 application gateway that provides capabilities for dynamic routing, monitoring, resiliency, security, and more. Please view the wik

Netflix, Inc. 12.4k Jan 3, 2023