[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);