Migrating you current Asterisk systems to Callweaver

Why Migrating?

People on italian forum say i’m crazy moving from asterisk to callweaver right now that asterisk is having a lot of cool features. Well i need a PBX not a funny deamon that interface with everything except doing a PBX job.

I migrate because:
  1. need STUN support;
  2. need T38 working;
  3. need a reliable way to send/receive faxes;
  4. need MOH not chopping when someone calls me via SIP provider;
  5. need someone to listen to my needs and watch my tickets (Digium is just good to close the tickets 30 seconds after you opened it);
  6. need my patches to be integrated;
  7. don’t like Digium licensing stuffs;
  8. need my SIP clients do not freeze when DSL is down due to DNS blocking stuffs;

Migration steps

I wrote this document while i’m migrating all my dialpan, AGI, scripts and GUI for a PBX from Asterisk to Callweaver.

You got your callweaver daemon up and running, isn’t it quite exiciting yeah? Now i’m sure you want to have your old Asterisk things, macro and stuffs up and running again, right? Well, i’ll try to tell you here wich are the steps you have to perform to do this.

1. Directory structure

The directory names has just changed in a way that every occurrence of the word “asterisk” has been renamed in “callweaver”, then just copy all your old config files from /etc/asterisk/ to /etc/callweaver/

If you want to reuse your old sound files just hack callweaver.conf for their path or symlink the whole old asterisk directory to the new one. At this moment, sound files seems pretty compatible between the two softwares.

2. The dialplan

Callweaver is a fork from Asterisk 1.2 so it is enough easy to migrate from this version of Asterisk since there are only a small set of changes you have to perform to have your system back to work:

  • AGI: rename the AGI command as OGI and you’re done;
  • Macro: in the same way Macro has been renamed Proc;
  • Macro Names: be sure to rename all your [macro-whatever] to [proc-whatever] in your dialplan so the Proc application can find them.
  • Macro Variables: all of the special MACRO_WHATEVER variables available in macros have been renamed to PROC_WHATEVER. These include MACRO_EXTEN, MACRO_CONTEXT, MACRO_OFFSET, and MACRO_PRIORITY. Rename these as well.
  • application names are now case sensitives, so change PlaYBaCK with PlayBack or it will not work;
  • parameters are now comma separate instead of separated with pipes, check all you’re old Macro and AGI calls;
  • Newman Technology’s apps for fax/voice detection has been ported and now are native callweave’s application, they have been named: FaxDetect and BackgroundDetect
  • if you had in the past some exotic use for SendURL or SendImage they are not inside current CallWeaver release;
  • CAREFULLY check the options of your Dial command, for example “R” works really different in CallWeaver, please check output of show application Dial of Asterisk and CallWeaver and compare them, then change your Dialplan to migrate it;
  • when you use the Dial command make sure you don’t have a trailing “&” when you concatenate multiple devices, in asterisk this will work in CallWeaver can cause problems; check your dialplan for trailing characters;
  • the command System should be used with this syntax: System("sudo -u root /usr/local/bin/myscript '${VAR1}' '${VAR2}'") please not the use of doublequotes at the begin of the command and singlequotes to separate each arg that can become an empty string;

To automatically check for those topics you can use the script ./contrib/scripts/chkDialplan.pl from the callweaver source directory

2.1 Tips

  • If you are using PlayTones in asterisk 1.2 as workaround against buggy Congestion() and Busy() behaviour, then notice that this has been fixed in CallWeaver, so replace:
exten => s,n,PlayTones(congestion)
exten => s,n,Congestion(7) 

or

exten => s,n,PlayTones(busy)
exten => s,n,Busy(7) 

simply removing (or commenting out) the PlayTones command

3. from Asterisk.pm to Callweaver.pm

If you’re using asterisk-perl for writing AGI in Perl there is a slight little incompatiblity: inside callweaver source direcectory check for “contrib” and “ogi-perl”. Just install this perl modules and port your old AGI to OGI.
  • rename the use Asterisk.pm; as use Callweaver.pm; ;

4. The other config files

  • sip.conf include STUN support, don’t forget to set the new parameter for the stun server, it rocks!

5. Sound Files

Position of sound file has changed for digits, letters and other stuffs that can be used for example from the voicemail:
  • in asterisk you have sounds/digits/en, move them like sounds/en/digits and it will works;

Incompatibilities

Installation from source code

  • in asterisk you have to use make samples to install config files; with CallWeaver those are installed, if not already presents, using make install; remember to cleanup them under /etc/callweaver if you don’t want them.

Behaviours

  • SNOM BFL stop to working if using reload from CLI, to have them working you need to resync/restart the phone or use restart from CLI and of course set your phone timeouts; other option is to upgrade the firmware to beta 6.5.12 but this is not available for Snom300;
  • SNOM pickup pushing a BFL is not supported, you have to upgrade to beta 6.5.12 but this is not available for Snom300;

mISDN

mISDN is a pain under CallWeaver since the core has changed and the chan_misdn suffer from this; also there are too few developer inside CW project to support this in a decent (for production use) way.

You can find a working mISDN here: svn co http://svn.callweaver.org/callweaver/branches/agx/

Or you have to find a way to use mISDN in some other way (Bristuff, VISDN, piped to asterisk, Patton BRI GW, etc.)