AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Вопрос про Originate

Asterisk IP PBX 4 сообщений -
#1

Вопрос про 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 все равно вызывает второго и получается второй если поднял трубку он один в коференции.

Как сделать так что, если первый не поднял трубку, второму звонок не начал звонить ?
#2

Оригинейтить вызов контекста для набора первого номера и в нем уже набирать второй номер, только после того как первый поднял трубку.
#3

А можно пример? А то я не много не понял идеи.
#4

У команды Dial есть опции M и U, которые позволяют выполнить макрос или другой контекст в тот момент когда вызываемый номер поднимет трубку.
Соответственно идея в том чтобы в момент поднятия трубки номером 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


Ну а далее перенаправить оба канала в конференцию.