VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Вопрос по звонкам из AGI

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
radeugen
Сообщения: 4
Зарегистрирован: 18 сен 2019, 13:08

Вопрос по звонкам из AGI

Сообщение radeugen »

Доброго дня всем!
Возникла задачка распределения звонков в зависимости от четности недели. Немного покопавшись, я решил, что проверять четность недели проще через AGI скрипт. И все бы ничего, но добавилось еще условие таймаутов звонков - после 30 секунд без ответа нужно звонить параллельно на еще один номер. Я попробовал реализовать это так:

extensions.conf

Код: Выделить всё

exten => 123456789,NoOp("SERVICE CALL")
same => n,Ringing
same => n,AGI(service.php)
same => n,Hangup
service.php

Код: Выделить всё

#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI(); 

if (date('W')%2==1) {
  $agi->exec('Dial', "SIP/111, 30, twh");
  $agi->exec('Dial', "SIP/111&SIP/222, 120, twh");
} else {
  $agi->exec('Dial', "SIP/333, 30, twh");
  $agi->exec('Dial', "SIP/333&SIP/444, 120, twh");
}
$agi->hangup();
?>
Определение четности работает, но таймаут 30 секунд не срабатывает и звонок идет только по первой записи ($agi->exec('Dial', "SIP/111, 30, twh"); или $agi->exec('Dial', "SIP/333, 30, twh");)
Направьте, пожалуйста, в правильное русло
radeugen
Сообщения: 4
Зарегистрирован: 18 сен 2019, 13:08

Re: Вопрос по звонкам из AGI

Сообщение radeugen »

Спасибо.
Repz
Сообщения: 169
Зарегистрирован: 04 мар 2015, 11:35

Re: Вопрос по звонкам из AGI

Сообщение Repz »

должно все без слипов работать, в консоле что по работе скрипта отображается?
для отладки после dial
$DialStatus = $AGI->get_variable("DIALSTATUS");
$HangapStatus = $AGI->get_variable("HANGUPCAUSE");
$Channel_status = $AGI->channel_status();
$AGI->exec("NoOp", $HangapStatus );
$AGI->exec("NoOp", $DialStatus.$Channel_status );
radeugen
Сообщения: 4
Зарегистрирован: 18 сен 2019, 13:08

Re: Вопрос по звонкам из AGI

Сообщение radeugen »

Да я решил не заморачиваться с AGI, т.к. инфы толковой по нему не нашел и ему отдал необходимый минимум - только проверку недели на четность

service.php

Код: Выделить всё

#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI(); 

if (date('W')%2==1) {
  $agi->set_variable("WEEK", "ODD");
} else {
  $agi->set_variable("WEEK", "EVEN");
}
?>
А остальная логика в диалплане
extensions.conf

Код: Выделить всё

exten => 123456789,NoOp("SERVICE CALL")
same => n,Ringing
same => n,AGI(service.php)
same => n,NoOp(" Week is ${WEEK} ")
same => n,GotoIf($["${WEEK}" = "EVEN"]?context1,s,1:context2,s,1)
same => n,Hangup

[context1]
exten => s,1,Dial(SIP/111,60,twh) 
exten => s,n,Dial(SIP/111&SIP/222,120,twh) 
exten => s,n,Hangup

[context2]
exten => s,1,Dial(SIP/333,60,twh) 
exten => s,n,Dial(SIP/333&SIP/444,120,twh) 
exten => s,n,Hangup
BorisTheBlade
Сообщения: 167
Зарегистрирован: 14 фев 2011, 14:24

Re: Вопрос по звонкам из AGI

Сообщение BorisTheBlade »

Можно прямо в диалплане:
exten => s,n, GotoIf($[${MATH(${STRFTIME(,,%U)}%2,int)}=0]?context1,s,1:context2,s,1)
radeugen
Сообщения: 4
Зарегистрирован: 18 сен 2019, 13:08

Re: Вопрос по звонкам из AGI

Сообщение radeugen »

Можно прямо в диалплане:
exten => s,n, GotoIf($[${MATH(${STRFTIME(,,%U)}%2,int)}=0]?context1,s,1:context2,s,1)
Спасибо, классно!
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Вопрос по звонкам из AGI

Сообщение ded »

radeugen, не цитируйте полностью предыдущее сообщение. Дурной тон. Не comme il' faut.
Порицание.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH