What gets converted
| Asterisk | FreeSWITCH |
|---|---|
| _1XX, _9., _NXXNXXXXXX | ^(1\d{2})$, ^(9.+)$, ^([2-9]\d{2}[2-9]\d{6})$ |
| Dial(PJSIP/101) | bridge user/101@${domain_name} |
| Dial(PJSIP/${EXTEN:1}@trunk,60) | set call_timeout=60; bridge sofia/gateway/trunk/${destination_number:1} |
| Set(CALLERID(num)=…) | set effective_caller_id_number=… |
| Goto(ctx,ext,1) | transfer ext XML ctx |
| VoiceMail(101@default) | voicemail default ${domain_name} 101 |
| Queue(sales), ConfBridge(1) | callcenter sales@default, conference 1@default |
| Playback, Wait, Answer, Hangup(17) | playback, sleep, answer, hangup USER_BUSY |
What needs manual work
- Conditions and branches (GotoIf, ExecIf, GotoIfTime), macros and Gosub: in FreeSWITCH these become extra conditions and anti-actions.
- Special extensions s, i, t, h: FreeSWITCH uses hooks such as hangup_hook and catch-all rules instead.
- Regexes with ?, {1,3} and complex groups: Asterisk has no such syntax, split them into several patterns.
- Trunk and user names: PJSIP/name without @ is taken as a user (user/), with @ as a trunk (sofia/gateway/).
The trunk itself: SIP trunk generator. Voice menu: IVR builder.