Skip to content

Commit 8abc240

Browse files
author
Sergey Kasatkin
committed
Add queue methods
1 parent b0c3a29 commit 8abc240

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

src/AGI/Handler.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,42 @@ class Handler
2424
const AST_STATE_DIALING_OFFHOOK = 8;
2525
const AST_STATE_PRERING = 9;
2626

27+
const OPTION_QUEUE_DATA_QUALITY_CALL = 1;
28+
const OPTION_QUEUE_ALLOW_CALLEE_HANGUP = 2;
29+
const OPTION_QUEUE_ALLOW_CALLER_HANGUP = 4;
30+
const OPTION_QUEUE_NO_RETRIES_ON_TIMEOUT = 8;
31+
const OPTION_QUEUE_RING_INSTEAD_MOH = 16;
32+
const OPTION_QUEUE_STOP_MOH_ON_RINGING = 32;
33+
const OPTION_QUEUE_ALLOW_CALLEE_TRANFSER = 64;
34+
const OPTION_QUEUE_ALLOW_CALLER_TRANFSER = 128;
35+
const OPTION_QUEUE_ALLOW_CALLEE_MONITOR = 256;
36+
const OPTION_QUEUE_ALLOW_CALLER_MONITOR = 512;
37+
const OPTION_QUEUE_CONTINUE_ON_HANGUP = 1024;
38+
const OPTION_QUEUE_IGNORE_FORWARD_REQUESTS = 2048;
39+
const OPTION_QUEUE_ALLOW_CALLEE_PARKING = 4096;
40+
const OPTION_QUEUE_ALLOW_CALLER_PARKING = 8192;
41+
const OPTION_QUEUE_ALLOW_CALLEE_MIX_MONITOR = 16384;
42+
const OPTION_QUEUE_ALLOW_CALLER_MIX_MONITOR = 32768;
43+
44+
protected static $optionQueueValues = [
45+
self::OPTION_QUEUE_DATA_QUALITY_CALL => 'd',
46+
self::OPTION_QUEUE_ALLOW_CALLEE_HANGUP => 'h',
47+
self::OPTION_QUEUE_ALLOW_CALLER_HANGUP => 'H',
48+
self::OPTION_QUEUE_NO_RETRIES_ON_TIMEOUT => 'n',
49+
self::OPTION_QUEUE_RING_INSTEAD_MOH => 'r',
50+
self::OPTION_QUEUE_STOP_MOH_ON_RINGING => 'R',
51+
self::OPTION_QUEUE_ALLOW_CALLEE_TRANFSER => 't',
52+
self::OPTION_QUEUE_ALLOW_CALLER_TRANFSER => 'T',
53+
self::OPTION_QUEUE_ALLOW_CALLEE_MONITOR => 'w',
54+
self::OPTION_QUEUE_ALLOW_CALLER_MONITOR => 'W',
55+
self::OPTION_QUEUE_CONTINUE_ON_HANGUP => 'c',
56+
self::OPTION_QUEUE_IGNORE_FORWARD_REQUESTS => 'i',
57+
self::OPTION_QUEUE_ALLOW_CALLEE_PARKING => 'k',
58+
self::OPTION_QUEUE_ALLOW_CALLER_PARKING => 'K',
59+
self::OPTION_QUEUE_ALLOW_CALLEE_MIX_MONITOR => 'x',
60+
self::OPTION_QUEUE_ALLOW_CALLER_MIX_MONITOR => 'X',
61+
];
62+
2763
/**
2864
* @var Request
2965
*/
@@ -63,6 +99,19 @@ public function __construct(array $config = [])
6399
$this->out = defined('STDOUT') ? STDOUT : fopen('php://stdout', 'w');
64100
}
65101

102+
protected function buildOptions($optionSet, array $options)
103+
{
104+
$optionString = '';
105+
for ($i = 0 ; $i < 16 ; ++$i) {
106+
$option = pow(2, $i);
107+
if ($option & $optionSet) {
108+
$optionString .= $options[$option];
109+
}
110+
}
111+
112+
return $optionString;
113+
}
114+
66115
public function handleRequest()
67116
{
68117
$rawRequest = $str = fgets($this->in);
@@ -725,6 +774,21 @@ public function background($sound)
725774
return chr($result['result']);
726775
}
727776

777+
public function queue($queueName, $options, $url = null, $announceoverride = null, $timeout = null, $agi = null, $macro = null, $gosub = null, $rule = null, $position = null)
778+
{
779+
return $this->exec('queue', $queueName
780+
. ',' . $this->buildOptions($options, self::$optionQueueValues)
781+
. ',' . $url
782+
. ',' . $announceoverride
783+
. ',' . $timeout
784+
. ',' . $agi
785+
. ',' . $macro
786+
. ',' . $gosub
787+
. ',' . $rule
788+
. ',' . $position
789+
);
790+
}
791+
728792
/**
729793
* Set absolute maximum time of call.
730794
*

0 commit comments

Comments
 (0)