New Features Coming in 13.5.0
Wed, 29 Jul 2015 03:09:03 +1200
Matt Jordan has posted an update on what\'s coming in Asterisk 13.5.0:

Hey everyone:

As you may have noticed, yesterday the announcement for 13.5.0-rc1 was sent out to the list. This release contains a lot of new and interesting features that I thought would be nice if we highlighted.

Sorcery Caching

For those who aren\'t familiar the Sorcery framework in Asterisk 13: Sorcery acts as a Data Abstraction Layer, sitting between its consumers and all the various types of configuration providers in Asterisk. Sorcery provides its consumers:
  • A pseudo ORM (pseudo because in C we don\'t really have objects, and the configuration provider may not be relational). For a consumer\'s in memory objects, Sorcery does provide a level of type safety, input validation, and other helpful operations that typically require a lot of boilerplate code.

  • Atomicity of configuration information for module operations.

  • Integration with other subsystems, such as the XML documentation engine.

A consumer\'s in-memory objects are mapped to a configuration provider in sorcery.conf. For example, the snippet below maps res_pjsip\'s endpoint objects to a realtime backend, with optional data passed to the realtime backend of \'ps_endpoints\' - in this case, the table name:


Since its inception, Sorcery has had a notion of caching. For example, we could tell Sorcery to put an in-memory cache for our previous endpoint object using the following:


However, this cache was pretty simplistic: once something got defined in it, it would stick around. This, unfortunately, made it not so useful for most scenarios.

The new Sorcery Cache that is in 13.5.0 provides full, configurable caching support. That includes:

  • Object expiration via an object lifetime

  • Maximum number of objects allowed in the cache

  • Object staleness, which can force an auto-refresh of an object

  • Options to control when the cache is purged

  • AMI/CLI commands to manipulate the cache

Note that this is configured the same way as shown previously, with a small adjustment for which subsystem provides the cache:


Note that you aren\'t limited to using a cache in front of a realtime backend; you can theoretically use a cache in front of any object managed by Sorcery to improve performance.

More information on this feature can be found on the wiki:

Push Configuration

ARI has received a new feature that allows for Sorcery managed configuration to be pushed into Asterisk, as opposed to pulled. What does that mean?

Typically, configuration in Asterisk works something along the following lines:

  • Some consumer realizes they need configuration information for some operation

  • The consumer asks their provider, Sorcery - in this case - for that information

  • Sorcery tries to find which backend provides that information

  • Sorcery asks that backend

  • Backend provides the information

  • The information is translated into the right format/validated

  • The consumer gets the information

The issue, of course, comes when that information isn\'t asked for often and an external system updates the information in the backend. Traditionally, Asterisk is notified of such a configuration change via a \"module reload\" of the affected system.

While this works, a \"module reload\" is a bit of a heavy weight operation. We have to reload everything in the module, when only a small piece of information may have been updated. What\'s more, external systems now have to perform two steps:
(1) Update the configuration
(2) Reload the module(s) in Asterisk

Push configuration flips this around. External systems now have the ability to update the configuration directly in Asterisk via ARI, and let Asterisk - via Sorcery - update the persistent storage itself. In this scenario, there are no module reloads.

For example, take a PJSIP endpoint for \"Alice\". We can push Alice\'s endpoint directly into Asterisk using the following:

curl -X PUT -H \"Content-Type: application/json\" -u asterisk:secret -d \'{\"fields\": [ { \"attribute\": \"allow\", \"value\": \"!all,g722,ulaw,alaw\"}, {\"attribute\": \"context\", \"value\": \"default\" }, {\"attribute\": \"auth\", \"value\": \"alice\" }, {\"attribute\": \"aors\", \"value\": \"alice\"} ] }\' https://localhost:8088/ari/asterisk/config/dynamic/res_pjsip/endpoint/alice

While that\'s a lot to digest, we can take the endpoint we want to create, represent its fields as JSON, and push it directly into Asterisk. Asterisk - with Sorcery configured correctly - will then write that back into the backing data storage for PJSIP endpoints - which could be anything from the AstDB to a relational database. The next operation inside Asterisk that asks for Alice\'s endpoint will get the newly pushed information.

No reloads necessary!

More information on Push Configuration can be found on the wiki:

ARI Module Operations

While Push Configuration is nice, it is only applicable to Sorcery managed configuration. Manipulating modules - load, reload, unload - is a very common operation. Those operations are now supported natively in ARI as well. As an example, to reload chan_sip you would do the following:

curl -X PUT -u asterisk:secret https://localhost:8088/ari/asterisk/modules/chan_sip

Note that the new module operations were implemented by Benjamin Ford and Scott Emidy, two co-op students here at Digium, as part of their final project as co-op students. They planned the project, wrote the Swagger specification for the new operations, survived withering code reviews, wrote a bevy of tests to cover the new functionality, tweaked the module API in Asterisk, and wrote the ARI commands - and did a great job.

A Few Final New Features

In addition to the previously mentioned features, a few other very nice improvements have been made. These include:

  • Addition of the \'rtptimeout\' option to the PJSIP stack

  • New AMI events for the PJSIP stack that help to inform of lifecycle changes in Contacts

  • Support for \';line\' functionality for PJSIP outbound registrations

A huge thank-you to all the contributors for new features in this release, including George Joseph and Dmitriy Serov.

Note that as with all new features in Asterisk, these features have automated tests in the Asterisk Test Suite. However, if something did get missed, please make sure you file an issue and let the developer community know.



Matthew Jordan
Digium, Inc. | Director of Technology
AstLinux 1.2.3 Released
Tue, 14 Jul 2015 01:19:33 +1200
The AstLinux Team has released 1.2.3. All current users are encouraged to upgrade as this release addresses several security issues.

Updates include:
  • Security fixes, including 35 significant \"CVE\" exploits have been resolved for various packages.
  • Asterisk version bumps and pjsip 2.4 for Asterisk 13
  • Web Interface enhancements and package upgrades providing important security and bug fixes.
  • The default HTTPS self-signed certificate is now uniquely auto-generated
  • Kernel runtime parameters may now be specified via a file or the KERNEL_SYSCTL variable.

A full changelog can be viewed in the release pages:

The AstLinux Team
Hosted TTS
Fri, 03 Jul 2015 01:21:33 +1200
David Knell has written a post to the Asterisk Business list about a new hosted text to speech platform. Going to the website it looks like they\'ll be doing hosted speech recognition as well.

In terms of pricing he\'s said \"Free for everyone right now, and will remain so for small* users.\" where the definition of small is to be decided.

Anyway, here\'s his post:

Hi -

We\'ve been putting together a hosted speech service, and we\'re ready to make the first element available. It\'s a hosted TTS service for Asterisk users, provided via an AGI script.

Script and example usage at
More info, signup and keys from


David Knell, Director, TelNG
T: +44 1223 797979 / +1 970-315-4721
Product CDR/Queue/Meetme
Tue, 23 Jun 2015 04:24:57 +1200
Helvio Junior has posted details of a beta version of some software he is developing to give visibility to various parts of Asterisk.


Moderators, i don\'t know if this topic if OFF-Topic, if yes, please tell me.

I had some difficult looking for a Asterisk software that provide me some functions (For exemple: CDR, Queue control, MeetMe Control) all-in-one. So i decided to develop than.

In a few weeks i\'ll deploy a Beta version of this software and i\'d like to know if is somebody available to try this beta and free version?

If you don\'t want to try this version but would like to see/suggest any feature in this software, let me know.

Forecast functions to Beta Version:
Realtime view for:
Peers (Similar as BLF);
Trunk calls/utilization;
Create, modify, delete and schedule;
Real time view of members;
Delete members;
Send Invite by e-mail (with .VCS file)
Create dialer (by campaign with contacts)
Monitoring of campaig, calls, and status;
Time control to retry failed call
Control of day time to call (commercial time, full time, etc...)
Charts and reports:
Trunk utilization;
Queues (Most common reports and charts, distributions, times, etc...)
Export to Excel Spreadsheet and PDF File
Report Scheduler
Much more...
REST API for 100% of functionalities;
Admin and User Console 100% Web HTML5;
Developed in Windows with C#;
Integrate with Asterisk using AMI only;
Allow manage many Asterisk that you want using same instance of this software (One software and one installation);

Obs.: I\'ll provide a Full License for everybody that help me trying the Beta version.

Helvio Junior
SafeId - Gestao de identidades e Acessos
+55 41 | 9893-2694,
DAHDI-Linux and DAHDI-Tools 2.10.2 Now Available
Tue, 16 Jun 2015 10:32:52 +1200
The Asterisk Development Team has announced the releases of:

This release is available for immediate download at:

  • Fixes compile issues with linux kernel source up to 4.1

  • Fixes \"I/O error reported by firmware\" issue on TE131,TE133,TE235,TE435,A4B,and A8B

Shortlog of dahdi-linux changes since v2.10.1:
John Sloan (1):
wcxb: Fix \"I/O error reported by firmware\" followed by underruns

Michael Walton (1):
dynamic: Prevent oops due to inverted compile flag

Russ Meyerriecks (1):
wctc4xxp: Fix continuous \"errored receive packets\" with 2+ transcoders

Shaun Ruffell (10):
dahdi: Fix failure to read / write on kernel 3.16+
dahdi: smp_mb_{before,after}_clear_bit -> smp_mb_{before,after}_atomic.
build_tools/dkms-helper: Use bash to process dkms-helper script.
dahdi_dynamic: Release reference count on network device when destroying dynamic spans.
dahdi: struct file.f_dentry macro was removed in kernel 3.19
dahdi: Fix \"void value not ignored...\" error when compiling against kernel 4.0.
dahdi: strnicmp() -> strncasecmp()
dahdi: Remove IRQF_DISABLED.
wctc4xxp: Clear packet error count when reloading firmware.

Tzafrir Cohen (6):
xpp: FPGA_1161.201.hex: module types detection
xpp: firmware: 203 as alias to (newer) 201
xpp: firmware: a stray ^Z in FPGA_1161.201.hex
xpp: module_refcount is back to int on 3.19
README: use file time for reproducable build
xpp: USB_FW*: fix incorrect chan num with 2FXS6FXO

Shortlog of dahdi-tools changes since v2.10.1:
Oron Peled (8):
xpp: revert USB \"clear_halt\" change and better overrides.
xpp: astribank_is_starting: improve \'-v\' output
xpp: waitfor_xpds: expansion error with no ABs
xpp: waitfor_xpds: assume astribank_is_starting exists
xpp: can use modern Asterisk hotplug support
xpp: waitfor_xpds: documentation
xpp/astribank_hook: remove Astribank initialization
xpp: waitfor_xpds: Always remove Astribank semaphore

Russ Meyerriecks (1):
tonezone: Fix regression in Australian tone patch

Tzafrir Cohen (3):
astribank_hook: remove useless \'time\'
no astribank_is_starting with hotplug asterisk
xpp_fxloader: handle empty span-type.conf

The diffstat from the dahdi-linux v2.10.1 release:

Makefile | 3 +-
drivers/dahdi/firmware/Makefile | 8 ++---
drivers/dahdi/pciradio.c | 3 +-
drivers/dahdi/tor2.c | 7 +++-
drivers/dahdi/voicebus/voicebus.c | 2 +-
drivers/dahdi/wcaxx-base.c | 4 +--
drivers/dahdi/wcb4xxp/base.c | 7 +++-
drivers/dahdi/wcfxo.c | 2 +-
drivers/dahdi/wct1xxp.c | 10 ++++--
drivers/dahdi/wct4xxp/base.c | 4 +--
drivers/dahdi/wctc4xxp/base.c | 14 +++++---
drivers/dahdi/wctdm.c | 3 +-
drivers/dahdi/wcte11xp.c | 10 ++++--
drivers/dahdi/wcte13xp-base.c | 2 +-
drivers/dahdi/wcte43x-base.c | 2 +-
drivers/dahdi/wcxb.c | 56 ++++++++++--------------------
drivers/dahdi/wcxb.h | 7 ++--
drivers/dahdi/xpp/card_pri.c | 6 ++--
drivers/dahdi/xpp/firmwares/USB_FW.201.hex | 6 ++--
drivers/dahdi/xpp/firmwares/USB_FW.hex | 6 ++--
drivers/dahdi/xpp/xproto.c | 3 +-
include/dahdi/kernel.h | 12 +++----
22 files changed, 93 insertions(+), 84 deletions(-)

The diffstat from the dahdi-tools v2.10.1 release:

xpp/xpp_fxloader | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

For a full list of changes in these releases, please see the shortlog at:;a=shortlog;h=refs/tags/v2.10.2;a=shortlog;h=refs/tags/v2.10.2

Issues found in this release can be reported in the DAHDI-Linux and DAHDI-Tools projects at

Thank you for your continued support of Asterisk!
Original Content (C) 2005 Matt Riddell