Code Monkey home page Code Monkey logo

irontec / ivozprovider Goto Github PK

View Code? Open in Web Editor NEW
193.0 33.0 76.0 102.36 MB

IVOZ Provider - Multitenant solution for VoIP telephony providers

Home Page: https://ivoz.irontec.com/

License: GNU General Public License v3.0

CSS 0.06% JavaScript 2.33% HTML 0.63% PHP 67.09% Shell 0.34% Perl 0.05% Gherkin 9.70% Makefile 0.01% Dockerfile 0.04% SCSS 4.45% Less 3.96% Python 0.03% TypeScript 11.10% Twig 0.01% Vim Script 0.01% Go 0.21%
provider multitenant pbx scale platform voip sip telephony

ivozprovider's Introduction

stable release

Ivoz Provider is a multitenant solution for VoIP telephony providers designed for horizontal scaling and load balancing.

Features

Multitenancy

IvozProvider supports multiple management levels, from Global platform administrator to final user, each of them having its own web interface with visibility to perform configuration tasks.

  • Global Administrator manages multiple Brands
  • Brand Administrators manage multiple Companies
  • Company Administrators manage multiple Users
  • Users manage their preferences

Scaling

From its beginning, IvozProvider was designed to be installed distributed between multiple machines, each one fullfilling one of the existing profiles:

  • Proxy:

    • Provides SIP communication with Providers and Users terminals
    • Provides media relay between endpoints
    • Powered by Kamailo SIP Server 5.7
  • Portal:

    • Provides Web interfaces for all platform roles
    • Access to all Bussiness data and shared files through Rest API services
  • Application Server:

    • Provides PBX features and runs configured logics
    • Powered by Asterisk 20 LTS with PJSIP channel driver
    • Logics implemented in PHP using fastagi AGI
  • Data:

    • Provides database and shared storage for the rest of machines
    • Powered by Percona Server 8.0

And many others open source projects.

Bear in mind that, while at least one of each profile must be installed for the platform to work, there can be multiple machines of each profile and all of them can also be installed in the same machine (a.k.a. standalone installation).

Cloud Service

IvozProvider is designed to work directly from the Internet. Although it can be used in local environments, being exposed to the public network has it's advantages

Installation

There are several ways to install IvozProvider.

If you want to test an standalone installation, we recommend using one of auto-install CDs based on Debian Stretch 9.4 amd64.

Version 64 bits 32 bits
oldoldstable (oasis 1.7) iso http iso http
oldstable (artemis 2.23.0) iso http
stable (halliday 3.4.1) iso http
testing (tempest 4.0.3) iso http

You can read about differences between releases here.

Documentation

You can browse online documentation in different formats:

Language HTML LaTeX PDF EPUB
Spanish badge html badge singlehtml badge latex badge pdf badge epub
English badge html badge singlehtml badge latex badge pdf badge epub

Feedback & Questions

Any feedback is also welcomed at #ivozprovider irc channel at irc.libera.chat

You can read frequently asked questions here.

For environment or functional questions, use ivozprovider-users group.

Commercial support

Don't hesitate to contact us for support if you plan to create a multi instance installation or want any kind of help with your systems.

License

Ivoz Provider - Multitenant solution for VoIP telephony providers
Copyright (C) 2014-2024 Irontec S.L.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

In addition, as a special exception, the copyright holders give
permission to link the code of portions of this program with the
OpenSSL library under certain conditions as described in each
individual source file, and distribute linked combinations
including the two.
You must obey the GNU General Public License in all respects
for all of the code used other than OpenSSL.  If you modify
file(s) with this exception, you may extend this exception to your
version of the file(s), but you are not obligated to do so.  If you
do not wish to do so, delete this exception statement from your
version.  If you delete this exception statement from all source
files in the program, then also delete it here.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

ivozprovider's People

Contributors

abejaruco avatar adamgent avatar ancahy avatar cruzccl avatar danigargar avatar dependabot[bot] avatar eduardduran avatar f3rguz avatar fmendozzac avatar gelexpe avatar gil-obradors avatar glacroix avatar ironibai avatar kaian avatar manfer avatar mikelmadariaga avatar mmadariaga avatar nitefood avatar powerpbx avatar r0mandev avatar rbatistadev avatar sbenirontec avatar zetagor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ivozprovider's Issues

as: Asterisk calling to UAC - Fix Contact header

As Asterisk UAC endpoints have from_domain set to company domain, requests (and responses) sent to them have this domain both in from-domain and in Contact domain.

Example:

INVITE sip:uac@companydomain SIP/2.0
From: "Test User" <sip:101@companydomain>;tag=6a978499-8617-4899-a70b-03327b0fb789
To: <sip:uac@companydomain>
Contact: <sip:asterisk@companydomain>

Until this is fixed and Asterisk uses from-domain only for domain in From header (and not in Contact header), there is a temporary fix in KamUsers logic (FIX_AS_CONTACT route).

TODO:

  • Patch Asterisk to include its address and port in Contact header instead of from-domain.
  • Remove temporary fix in KamUsers FIX_AS_CONTACT route

Default DID for Outgoing calls in Bussiness Level

To avoid in environments with many extensions in the same company, to have to go one by one specifying the outgoing DID, to be able to establish one by default at company level and to inherit it if one is not specified.

Realtime dashboard

Brand Operator deserves seeing some graphs and realtime stats :)

Company administrator too.

Limit call duration

  • God can limit call duration of Brands.

  • If God disables call limit for a Brand, Brands can limit call duration for its Companies.

Add Support for Session-Timers

Once established, calls may last 3 hours (dialog default_timer parameter).

Make tests to implement session-timers in AS.

Basic Queue support

Add new inbound logic: queue.

Only queue basics are included:

  • Queue weight
  • Strategy (round-robin, ringall, random, least recent, etc.)
  • Wrap-up time
  • Max length
  • Max wait time
  • Periodic announces
  • Agent priorities

The goal of this feature is to make possible to distribute calls using a queue logic, but does not convert IvozProvider into a Callcenter solution: there are no reports, no realtime queue visualization, etc.

Allow users to use any screen extension

Right now users can only present as internal number any of the extensions that are routed to them.

I think there shouldn't be a problem (other than selecting the extension in the infernal selection box) if we allow selecting any existing extension.

Asterisk does not up

Hi there,

I'm trying iVozProvider and in my pre-production installation I check Asterisk does not up.

root@xxx:~# ps aux | grep asterisk
root     22808  0.0  0.0  13968  2172 pts/1    S+   10:09   0:00 grep asterisk
root@xxx:~# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 xxx.xxx.xxx.3:53         0.0.0.0:*               LISTEN      6362/named      
tcp        0      0 xxx.xxx.xxx.2:53         0.0.0.0:*               LISTEN      6362/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      6362/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      563/sshd        
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      6362/named      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1022/exim4      
tcp        0      0 127.0.0.1:4730          0.0.0.0:*               LISTEN      31852/gearmand  
tcp        0      0 xxx.xxx.xxx.2:10080      0.0.0.0:*               LISTEN      6628/kamailio   
tcp        0      0 xxx.xxx.xxx.2:8000       0.0.0.0:*               LISTEN      6628/kamailio   
tcp        0      0 xxx.xxx.xxx.3:8001       0.0.0.0:*               LISTEN      6755/kamailio   
tcp        0      0 xxx.xxx.xxx.2:10081      0.0.0.0:*               LISTEN      6628/kamailio   
tcp        0      0 xxx.xxx.xxx.3:5060       0.0.0.0:*               LISTEN      6755/kamailio   
tcp        0      0 xxx.xxx.xxx.2:5060       0.0.0.0:*               LISTEN      6628/kamailio   
tcp        0      0 xxx.xxx.xxx.3:5061       0.0.0.0:*               LISTEN      6755/kamailio   
tcp        0      0 xxx.xxx.xxx.2:5061       0.0.0.0:*               LISTEN      6628/kamailio   
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      32240/mysqld    
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      16137/memcached 
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6137/redis-server 1
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      536/rpcbind     
tcp        0      0 0.0.0.0:56561           0.0.0.0:*               LISTEN      545/rpc.statd   
tcp6       0      0 :::22                   :::*                    LISTEN      563/sshd        
tcp6       0      0 ::1:953                 :::*                    LISTEN      6362/named      
tcp6       0      0 ::1:25                  :::*                    LISTEN      1022/exim4      
tcp6       0      0 ::1:4730                :::*                    LISTEN      31852/gearmand  
tcp6       0      0 :::443                  :::*                    LISTEN      990/apache2     
tcp6       0      0 :::1443                 :::*                    LISTEN      990/apache2     
tcp6       0      0 :::2443                 :::*                    LISTEN      990/apache2     
tcp6       0      0 :::111                  :::*                    LISTEN      536/rpcbind     
tcp6       0      0 :::80                   :::*                    LISTEN      990/apache2     
tcp6       0      0 :::37616                :::*                    LISTEN      545/rpc.statd   
root@xxx:~# netstat -ulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 xxx.xxx.xxx.3:5060       0.0.0.0:*                           6660/kamailio   
udp        0      0 xxx.xxx.xxx.2:5060       0.0.0.0:*                           6534/kamailio   
udp        0      0 127.0.0.1:22222         0.0.0.0:*                           6485/rtpproxy   
udp        0      0 xxx.xxx.xxx.3:53         0.0.0.0:*                           6362/named      
udp        0      0 xxx.xxx.xxx.2:53         0.0.0.0:*                           6362/named      
udp        0      0 127.0.0.1:53            0.0.0.0:*                           6362/named      
udp        0      0 0.0.0.0:111             0.0.0.0:*                           536/rpcbind     
udp        0      0 xxx.xxx.xxx.3:123        0.0.0.0:*                           19751/ntpd      
udp        0      0 xxx.xxx.xxx.2:123        0.0.0.0:*                           19751/ntpd      
udp        0      0 127.0.0.1:123           0.0.0.0:*                           19751/ntpd      
udp        0      0 0.0.0.0:123             0.0.0.0:*                           19751/ntpd      
udp        0      0 0.0.0.0:711             0.0.0.0:*                           536/rpcbind     
udp        0      0 127.0.0.1:721           0.0.0.0:*                           545/rpc.statd   
udp        0      0 0.0.0.0:50784           0.0.0.0:*                           545/rpc.statd   
udp        0      0 127.0.0.1:11211         0.0.0.0:*                           16137/memcached 
udp6       0      0 :::57136                :::*                                545/rpc.statd   
udp6       0      0 :::111                  :::*                                536/rpcbind     
udp6       0      0 ::1:123                 :::*                                19751/ntpd      
udp6       0      0 :::123                  :::*                                19751/ntpd      
udp6       0      0 :::711                  :::*                                536/rpcbind     
root@xxx:~# /etc/init.d/asterisk start
-bash: /etc/init.d/asterisk: No existe el fichero o el directorio
root@xxx:~# systemctl start asterisk
Failed to start asterisk.service: Unit asterisk.service is masked.

What's wrong? What's next?

Add support for MWI Subscriptions

Right now we only support unsolicited MWI notifications by sending NOTIFY events to the terminal associated to the voicemail.

It would be nice to let the terminals to subscribe to their voicemail or other voicemail (better even if we implement generic voicemails).

GL3 english documentation

The documentation base should be in english and then translate it to other languages.

Spanish is our native language, but not the tech world standard.

GL231 Share the same code for multiple services

Right now each service must start with asterisk * and services can not share the same code.

It would be nice if we can share the code between services that are alike, for example group pickup (just the code) or direct pickup (the same code + target extension).

Restore default routing patterns and routing groups

When a new brand is created, default routing patterns and routing patterns groups are populated with countries and continents. If brand operator deletes them, there is no way to recreate them.

Add a button in each section that allows restoring default routes (and groups) after deleting them.

Unmet dependencies Installing Standalone iVozProvider

Hi all,

I think iVozProvider looks great and I can't wait to test it out. I'm having trouble installing on ubuntu.

I've updated the sources but keep getting told that the ivozprovider has unmet dependencies. When I try to install manually I'm still getting stuck. Running Ubuntu 16 LTS.

Would appreciate if you could point me in the right direction.

Thanks,

C

Record locutions making a call

Alternative way to record locutions easily, making a call to a certain code instead of uploading a pre-recorded file.

GL254 Redesign call-pickup feature

Keypoints:

  • Direct pickup: do not need to be in any group to make a direct pickup.

  • Group pickup: one user 0 or 1 pickup group (not more).

  • Make KamUsers choose the AS wisely.

Distinctive Ring feature

Add an Alert-Info with context calls internal(from-internal) or external(from-external, from-pstn...) or custom value ¿?, for assign different ring tones according to the type of call (in function of manufacturer phone limitations).

Add Progress sounds for outgoing call errors

Play some informative locutions when ACL or Billing errors occur.
This can be handy so users can complain with extra information :-)

Most probably this should be configurable by Brand.

iso: failed to install if mysql pass has spaces

The 64 bits ISO crash in the "Select and install software" step.
The log shows:
Nov 17 13:33:48 in-target: dpkg: error al procesar el paquete ivozprovider-scheme (--configure):
I'm perfoming the install in VirtualBox 5.0.24 on Ubuntu 16.04.
I attach a screenshot of the log
virtualbox_ivoz_17_11_2016_14_45_06

CDR parser

En la distro stable , no se muestra el CDR

GL241 Configurable max digits for IVR inputs

Current IVR waits for user inputs during a couple of seconds after the welcome locution has been played or a digit has been entered. User can confirm the input with the pound key to avoid this timeout.

When the IVR has a predefined input length (custom entries with one digit or common extensions with 3-4 digits) it would be nice that the caller won't have to wait nor press # key.

Enable/Disable user call forward

Users can only add one type of each call forward in their portal (noanswer, busy, etc).
It would be nice to let them have multiple of each type only allowing one to be enabled.

GL260 Set language for DDIs

This way if an incoming call ends in a user voicemail, the voicemail sounds will be played in DDI language (instead of company language).

Add support for generic Voicemails

Rigth now we have once voicemail per user (if it's enabled for that user).

This enhancement add support for generic voicemails where multiple terminals can subscribe to their status and/or check it.

This require:

  1. Add support for checking any voicemail (not just ours)
  2. Add support for MWI subscriptions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.