Asterisk roadmap (rough)

Goal: The aim of the asterisk integration project is to allow drupal sites to easily add telephony features.
Sub goal: get a lot of peopole interested so the project sustains itself

Present: The original asterisk integration module assumed that many users would desire to include calls to regular phones. This would be achieved by the website operator setting up there own asterisk server, add obtaining either a VoIP account or a regular phone line and additional hardware.

Since these aserisk servers would often be behind firewalls, a system where the asterisk server would query the internet based drupal site was developed.

Also asterisk realtime was avoided as it would certainly complicate the asterisk setup!

Things that turned up:

  1. Its hard to set up an asterisk server. After basic setup access to the regular phone system is required. For that either a additional hardware, phone line and configuration or setting up an account with a voip provider is required.
  2. The code to make it work the old way is fairly complex and long. (while several person have looked a the asterisk module, the cron script which does most of the work has scared everyone away).
  3. There is another project that ties drupal and asterisk. Astbill (http://astbill.com) has many software requirements and is not easy to set up (for the linux/asterisk newbie). However there are numerous features already present in Astbill that we would like to take advantage of in the future.

Solution:
The old code is (mostly) good. Use it, but switch it around a bit. Move call queuing from drupal to asterisk. Individual sites will send the call directly to the central system via a xmlrpc call, rather than placing it in a queue. The central system will either be a drupal module or a standalone xmlrpc server.

We won't expect people to install there own asterisk server (they can but it'll require know-how). As such we can make use of the realtime. This will make everything easier to implement and cut down significantly on the code required.

Components

asterisk (perhaps rename to telephony)
Contains functions to call two users and connect them, call a user and play an audio message, call a user and record a message, call a user and connect them to an arbitrary number. Contains functions to authenticate users by PIN. Contains functionality to accept files via xmlrpc. This would _greatly_ simplify the installation instractions and actually make the process rather foolproof.
New
Add a function to accept call details from the central server (length, time, cost(?), etc of call)

Remove the call queing parts.

asterisk cron script
Take the call creation parts and create an 'asterisk_server' module. This will act on xmlrpc calls rather than by cron. Take the message recording, voicemail, etc parts and move them to an asterisk AGI. This AGI will execute when the actual calls are made to asterisk. It will also send call details back to drupal (simple since its now an AGI). The voicemail component will ideally take advantage of the new realtime system. This would be a mostly cut 'n paste/ delete operation. These are the only drupal components that require actual asterisk knowledge! Anyone (with drupal knowledge) can easily work on all the other parts.
auto dialer
makes use of the _play_message, connect to arbitrary number functionality. Remains as is.
conference
makes use of connect to arbitary number, _record_message functionality, Remains as is.
audio blog
The drupal specific functionality would be moved to other modules (blog API, audio, asterisk). This would in fact not be a drupal module, but rather a set of asterisk AGI scripts. This would be installed on central servers.
voicemail
current voicemail module merely stores voicemail messages. It does not include a mechanism for actually obtaining the messages. Can remain the same.
needs to be expanded (Leo's input here). Perhaps there will be a og_voicemail module as well?
Make a good demo site (sandbox, as per Zack's suggestion)
Test the directleap stuff. Its done, we should at least know that it works in case someone wants to use it.
User system
The backend is ugly. Use of the new realtime system would be great here as well. There are several other limitations. Hopefully asterisk 1.2 will decrease that number.
Central server
We were using beta.civicspacelabs.org to maintain user listings for drupal sites that require the use of our asterisk system. This makes less sense now since that site will be resynced with civicspacelabs.org several times in the near future. We should use a barebones site on the asterisk server instead. Also since the 'server' functionality will be separated, the UI to configure your asterisk server will be a _lot_ more straightforward.
Set up a separate site to handle pay calls
  • This will need to have a billing system (maybe astbill) as well.
  • There are several persons that have current system in operation [2

They are several coders involved now.

  • Herman
  • Leo (interested in group (og) voicemail)
  • Chad (drupal developer interested in asterisk)

There are coders that might get involved

There are documentors that want to jump in

  • Kieran

Comments

hunmonk’s picture

Status: Active » Closed (fixed)

closing down this task, as i've completely rewritten the asterisk module for 4.7 and beyond to use the push model discussed herein. I'll start a new task shortly that will reconstitute any remaining relevant to do's from this task given the massive reorganization that has taken place.