2. Who we are
● Sylvain Boily
○ XiVO creator
○ Asterisk French community / speaker (http://asterisk-france.org)
○ DCAP
○ CEO Proformatique INC (founded in France in 2004 and merged with Avencall in 2010)
■ Left partnership with Avencall in december 2015
■ Now in Quebec City (since 2010)
○ Love Linux and free software since 1998
● Sébastien Duthil
○ XiVO developer @Proformatique INC
3. What is XiVO?
● Free software telecom business engine (GPLv3)
○ Created in 2005 in France
● Distribution based on Debian (http://xivo.io)
● Downloaded over the world (50 to 70 per day)
● Many customers in France (Avencall and partners)
● Size of installations
○ small/medium/large company
○ Public or private (like banks, universities, city halls, etc.)
● Documentation: http://documentation.xivo.io
5. Asterisk contributions
hexanol a.k.a. Etienne Lessard is in charge of development in Asterisk in
@xivodevteam.
● Bugs / patches
● SCCP channel (http://github.com/xivo-pbx/libsccp)
● Skill-based routing for app_queue
● Asterisk consul discovery service (http://github.com/sboily/asterisk-consul-module)
● Asterisk realtime sqlite2 support
● chan_test (to help us in our tests)
6. XiVO and ARI
● Micro-service xivo-ctid-ng (http://github.com/xivo-pbx/xivo-ctid-ng)
○ Business logic
○ Connected to ARI and AJAM
○ Features
■ Start/stop/list call(s)
■ Transfer call
■ Presences
■ Chat
○ Python (Flask)
○ State stored in Asterisk
● Future
○ Queue
○ Voicemail
○ Switchboard
○ ...
7. What we would love to see in ARI
● Bridge variables
● Get or set multiple variables on a channel
● List global variables
● MOH events and possibility to list MOH classes
● In-memory database
● External bus (more about scaling later)
● We can contribute of course!
8. Itches
● No variable on channel event hangup
○ We need to maintain a cache for channel variables
● “allocation failed”
○ looks like blue screen of death ;-)
● Event on channel originate
● Convert channel to stasis to use in a stasis bridge
● Setting variable on non-stasis chan
○ We wrote a patch
9. We love ARI
● Easy to test
○ Docker power
○ Mock ARI
○ https://github.com/xivo-pbx/xivo-ctid-ng/tree/
master/integration_tests
○ http://jenkins.xivo.io
● Having tools like Swagger is very helpful
for developers
○ We are using Swagger too (http://api.xivo.io)
10. Python ARI
● python-ari from Digium is not maintained
○ We forked the library
○ Who is the maintainer?
○ How can we help?
ref. https://github.com/xivo-pbx/ari-py
11. Scaling ARI
● How to scale?
● Multiple Asterisk
○ Asterisk UUID in every event? Each XiVO installation has its own xivo-uuid
● Using ARI proxy?
● What about publishing ARI events directly in a bus like rabbitMQ (AMQP)?
○ What about AMI events? (we already do that with xivo-amid)