Что переводится
| 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 |
Что придётся доделать руками
- Условия и ветвления (GotoIf, ExecIf, GotoIfTime), макросы и подпрограммы (Gosub) — в FreeSWITCH это отдельные condition и anti-action.
- Специальные расширения s, i, t, h: в FreeSWITCH их заменяют обработчики вроде hangup_hook и правила по умолчанию.
- Регулярные выражения с ?, {1,3} и сложными группами — у Asterisk нет такого синтаксиса, нужно разбить на несколько шаблонов.
- Имена транков и пользователей: PJSIP/имя без @ считается внутренним абонентом (user/), с @ — транком (sofia/gateway/).
Конфиг самого транка — генератор SIP-транка. Голосовое меню — конструктор IVR.