 
  
  [bridge]
type=bridge
max_members=20
mixing_interval=10
internal_sample_rate=8000
record_conference=no
language=ru
[simple]
type=user
music_on_hold_when_empty=yes
music_on_hold_class=default
announce_user_count_all=no
announce_join_leave=no
announce_only_user=no
dsp_drop_silence=yes
denoise=yes 
  
  same => n,System(echo \"Channel: OOH323/${Numbers:1:5}\\nMaxRetries: 1\\nRetryTime: 10\\nWaitTime: 60\\nContext: Conference-Bridge\\nExtension: ${CALLERID(num)}\\nPriority: 1\\nCallerid: ${CALLERID(num)}\\n\" > /var/spool/asterisk/outgoing/${Numbers:1:5}) 
  
  [Conference]
exten => _**XXXXX!,1,Set(Numbers=${EXTEN:1})
same => n(loop),GotoIf($["${Numbers:0:1}"!="*"]?end)
same => n(orig),Originate(OOH323/${Numbers:1:5},exten,Conference,${CALLERID(num)},1,60)
same => n,Set(Numbers=${Numbers:6})
same => n,Goto(loop)
same => n(end),ConfBridge(${CALLERID(num)},bridge,simple)
exten => _XXX,1,Wait(1)
same => n,ConfBridge(${EXTEN},bridge,simple) 
  
   
  
   
  
  CREATE TABLE `users` (
  `id` INT PRIMARY KEY AUTO_INCREMENT,
  `balance` INT
);
CREATE TABLE `messages` (
  `user_id` INT NOT NULL,
  `timestamp` TIMESTAMP,
  `message` VARCHAR(128)
);DELIMITER $$
CREATE TRIGGER `pay_message` AFTER INSERT ON `messages`
  FOR EACH ROW BEGIN
    UPDATE `users` 
      SET `balance` = `balance` - 1 
      WHERE `id` = NEW.`user_id`;
  END$$
DELIMITER ;INSERT INTO `messages` (`user_id`, `timestamp`, `message`)
VALUES (
  (SELECT `u`.`id`
    FROM (
      SELECT `id` 
        FROM `users`
        WHERE `id` = :user
          AND `balance` >= 1
    ) AS `u`
    JOIN (
      SELECT COUNT(*) AS `count`
        FROM `messages` 
        WHERE `user_id` = :user
          AND `timestamp` > NOW() - INTERVAL 30 MINUTE
    ) AS `m` ON `m`.`count` < 2
  ), NOW(), :message); 
  
   
  
  "coordinates" => json_decode($delivery->map, true) 
  
   
  
  func1() // вызов 1
func1() // вызов 2
func1() // вызов 3
func1() // вызов 4
func1() // вызов 5
func2() // вызов 6
callback1() // вернувшийся раньше всех ответ
func2() // вызов 1
func2() // вызов 2
func2() // вызов 3
func2() // вызов 4
func2() // вызов 5
callback1() или callbcak2() // ответ, вернувшийся вторым
... 
  
  
module reload app_confbridge.so