Схема работы такая:
Любой разрешенный ip звонит на DID номер pbx, станция перезванивает с DID номера и соединяет с внутренним абонентом) показывая в качестве callerid номер на который осуществляется дозвон.
Особенности: минимум вмешательства в код freepbx чтобы можно было использовать весь функционал станции.
У вас уже установлена: Freepbx, callback модуль, правильно настроены callback и trunk в интерфейсе freepbx
Всё что нам нужно это добавить передачу переменной в callback модуль:
//define the args for Originate
$channel = "Local/".$callback_number."@from-internal";
$exten = $callback_exten;
$context = $callback_context;
$priority = $callback_priority;
$timeout = $callback_timeout;
$callerid = $callback_callerid;
$variable = "__MYVAR4=$callback_number";
$account = "";
$application = "";
$data = "";
затем поймать её в extension_custom.conf
[macro-dialout-one-predial-hook]
exten => s,1,set(CALLERID(all)=${MYVAR4})
[macro-AMD1]
exten => s,1,noop("Check of answering machine")
exten => s,n,background(silence/1)
exten => s,n,AMD()
exten => s,n,NoOp("AMD STATUS IS :"${AMDSTATUS}"…CAUSE:"${AMDCAUSE})
exten => s,n,Set(CDR(userfield)=${AMDSTATUS}|${AMDCAUSE})
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?human:mach)
exten => s,n(mach),Hangup()
exten => s,n(human),noop(This is Human continue)
Leave a Reply