На Asterisk поднят транк (10000) в сторону FXO шлюза Grandstream. Вызовы пришедшие с FXO шлюза Grandstream попадают на ivr с предложением набрать номер нужного абонента, либо 0 для соединения с секретарем. Если абонент набирает 4-х значный номер, то с помощью MYSQL Connect вытаскивается из базы 3-х значный номер соответствующий 4-х значному номеру, и далается на него вызов через тот же FXO шлюз Grangstream.
context incoming-call {
_10000 => {
Background(/var/lib/asterisk/sounds/record/newivr);
WaitExten(7);
}
_XXXX => {
MYSQL(Connect connid localhost asterisk P@ssw0rd number);
MySQL(Query resultid ${connid} select three from telcodes where four=${EXTEN});
MySQL(Fetch fetchid ${resultid} ext);
Dial(SIP/10000/${ext},20,mt);
switch(${DIALSTATUS}) {
case BUSY:
Playback(vm-nobodyavail);
Voicemail(${EXTEN}@default);
break;
case NOANSWER:
Playback(vm-nobodyavail);
Voicemail(${EXTEN}@default);
break;
case CHANUNAVAIL:
Playback(vm-nobodyavail);
Voicemail(${EXTEN}@default);
break;
default:
}
MYSQL(Clear ${resultid});
MYSQL(Disconnect ${connid});
}
i => {
Dial(SIP/10000/350,20,Tt);
Playback(vm-nobodyavail);
Voicemail(350@default);
}
t => {
Dial(SIP/10000/350,20,TtR);
Playback(vm-nobodyavail);
Voicemail(350@default);
}
_XXX => {
Dial(SIP/10000/${EXTEN},20,Tt);
Playback(vm-nobodyavail);
Voicemail(${EXTEN}@default);
}
_600 =>{
Answer();
ConfBridge(1234);
}
_0 => {
Dial(SIP/10000/350,20,rTt);
Playback(vm-nobodyavail);
Voicemail(350@default);
}
}