Re: Динамическое изменение диалплана.
Не знаю как в АМП, а реализовывается это довольно просто. При наборе заветной комбинации добавляется запись в базу данных с номером набравшего и сам набранный номер:
exten => _*11*.,1,Set(DB(CALLFWD/${CALLERIDNUM})=${EXTEN:4})
При звонке на этого абонента делается проверка на наличие его номера в базе. Если номера нет, то звонить абоненту, а если есть, то звонить на тот номер, который записан в базе:
exten => ?,1,GotoIf(${DB_EXISTS(CALLFWD/${EXTEN})}?dofwd)
exten => ?,n,Dial(SIP/${EXTEN})
exten => ?,n,Hangup
exten => ?,n(dofwd),Set(FWDNUM=${DB(CALLFWD/${EXTEN})})
exten => ?,n,Dial(Local/${FWDNUM})
Если же абонент вернувшись на место вводит *790, то из базы удаляется ключ ${CALLERIDNUM}
exten => *790,1,DBdel(CALLWFD/${CALLERIDNUM})
http://voip-info.org/wiki/view/Asterisk+database
|