Вопрос про Originate
Есть такая задача вызвать двух людей в конференцию автоматом.
есть скрипт на php :
if ($asm->connect($manager_host, $manager_user, $manager_secret)) {
//Originate call to agent and create dynamic conference
$call = $asm->Originate(
"Local/1111@outgoing", // channel
"$number", // extension
"meetme-dialin", // context
1, // priority
NULL,
NULL,
99999, // timeout cia turi buti daugiau negu Dial() timeout // timeout
$client, // client
$variable, // variables
NULL,
0, // async
"$id" // action id
);
$variable = "CONFNO=1234,HANGUPER=1"; //For call to clients HANGUPER SHOULD BE 1 to start hanguper script
//Then originate call to clients and move FIRST ANSWERED to this conference othen numbers
$call = $asm->Originate(
"Local/2222@outgoing", // channel
"$number", // extension
"meetme-dialin", // context
1, // priority
NULL,
NULL,
99999, // timeout cia turi buti daugiau negu Dial() timeout // timeout
$client, // client
$variable, // variables
NULL,
0, // async
"$id" // action id
);
}
?>
Конфиг астериска такой :
[meetme-dialin]
)
exten => _X.,1,Set(CONFBRIDGE(bridge,max_members)=2)
exten => _X.,n,ConfBridge(${CONFNO},MqA)
Все работает, только есть нюанс
Допустим номер 1111 сбрасывает трубку проще говоря от него приходит сигнал BUSY, но Originate все равно вызывает второго и получается второй если поднял трубку он один в коференции.
Как сделать так что, если первый не поднял трубку, второму звонок не начал звонить ?
Соответственно идея в том чтобы в момент поднятия трубки номером 1111 исполнялся макрос/контекст в котором будет набор второго номера.
Либо с те же эффектом, но по другому:
| Код: |
| [callfirst] exten => s,1,Dial(SIP/1111) [callsecond] exten => s,1,Dial(SIP/2222) |
| Код: |
| Action: originate Channel: Local/s@callfirst WaitTime: 30 CallerId: 1111 Context: callsecond Exten: s Priority: 1 |
Ну а далее перенаправить оба канала в конференцию.