mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-13 15:50:59 +00:00
FS-9542 [avmd]: multithreaded
Now avmd detection is done in detector threads processing audio frames with different resolution and/or offsets. Detection decision is based on relative standard deviation which dynamically adjusts to the signal. Detection of amplitude, frequency and both simultaneously is enabled and corresponding setting added to the configuration. Frequency estimates are filtered with median filter. This commit also resolves: FS-9539 - Get estimates with different resolution FS-9513 - Use adjustable thresholds FS-9502 - Add detection mode setting FS-9501 - Enable three modes of detection FS-9407 - Add check of amplitude for NaN before appending to SMA buffer FS-9139 - Unit test framework
This commit is contained in:
parent
2b1f0da5c4
commit
8e189ed233
@ -37,13 +37,16 @@
|
||||
<!-- required number of consecutive elements in the SMA buffer
|
||||
without reset. This parameter helps to avoid false beeps, bigger this value is
|
||||
smaller the probability of getting false detection -->
|
||||
<param name="sample_n_continuous_streak" value="15"/>
|
||||
<param name="sample_n_continuous_streak" value="5"/>
|
||||
|
||||
<!-- define number of samples to skip starting from the beginning
|
||||
of the frame and/or after reset has happened. This serves the purpose of skipping first few
|
||||
estimations on each frame, as these estimations may be inaccurate. This parameter also helps
|
||||
to give more robust detections when it's value is increased (up to scertain limit of about 60). -->
|
||||
<param name="sample_n_to_skip" value="15"/>
|
||||
<param name="sample_n_to_skip" value="0"/>
|
||||
|
||||
<param name="require_continuous_streak_amp" value="1"/>
|
||||
<param name="sample_n_continuous_streak_amp" value="5"/>
|
||||
|
||||
<!-- define/undefine this to enable/disable simplified estimation
|
||||
of frequency based on approximation of sin(x) with (x)
|
||||
@ -55,6 +58,10 @@
|
||||
|
||||
<!-- define/undefine to enable/disable avmd on external channel -->
|
||||
<param name="outbound_channel" value="1"/>
|
||||
|
||||
<!-- determines the mode of detection, default is both amplitude and frequency -->
|
||||
<param name="detection_mode" value="2"/>
|
||||
|
||||
<!-- Per call settings end -->
|
||||
</settings>
|
||||
</configuration>
|
||||
|
@ -39,7 +39,7 @@ extern size_t next_power_of_2(size_t v);
|
||||
{ \
|
||||
(b)->pos++; \
|
||||
(b)->pos &= (b)->mask; \
|
||||
(b)->lpos++; \
|
||||
(b)->lpos + 1 < 2 * (b)->buf_len ? (b)->lpos++ : (b)->lpos = (b)->buf_len; \
|
||||
if ((b)->backlog < (b)->buf_len) (b)->backlog++; \
|
||||
}
|
||||
|
||||
|
@ -63,14 +63,14 @@ avmd_desa2_tweaked(circ_buffer_t *b, size_t i, double *amplitude) {
|
||||
we do simplified, modified for speed version : */
|
||||
|
||||
result = n/d;
|
||||
if (ISINF(result)) {
|
||||
/* if (ISINF(result)) {
|
||||
*amplitude = 0.0;
|
||||
if (n < 0.0) {
|
||||
return -10.0;
|
||||
} else {
|
||||
return 10.0;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
*amplitude = 2.0 * PSI_Xn / sqrt(PSI_Yn);
|
||||
return result;
|
||||
}
|
||||
|
@ -13,9 +13,9 @@
|
||||
#define __AVMD_FIR_H__
|
||||
|
||||
|
||||
#define DESA_MAX(a, b) (a) > (b) ? (a) : (b)
|
||||
#define MEDIAN_FILTER(a, b, c) (a) > (b) ? ((a) > (c) ? \
|
||||
DESA_MAX((b), (c)) : a) : ((b) > (c) ? DESA_MAX((a), (c)) : (b))
|
||||
#define AVMD_MAX(a, b) (a) > (b) ? (a) : (b)
|
||||
#define AVMD_MEDIAN_FILTER(a, b, c) (a) > (b) ? ((a) > (c) ? \
|
||||
AVMD_MAX((b), (c)) : a) : ((b) > (c) ? AVMD_MAX((a), (c)) : (b))
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -46,7 +46,7 @@ typedef struct {
|
||||
|
||||
#define INC_SMA_POS(b) \
|
||||
{ \
|
||||
(b)->lpos++; \
|
||||
((b)->lpos + 1 < 2 * (b)->len) ? ((b)->lpos++) : ((b)->lpos = (b)->len); \
|
||||
(b)->pos = (b)->lpos % (b)->len; \
|
||||
}
|
||||
|
||||
|
@ -37,13 +37,16 @@
|
||||
<!-- required number of consecutive elements in the SMA buffer
|
||||
without reset. This parameter helps to avoid false beeps, bigger this value is
|
||||
smaller the probability of getting false detection -->
|
||||
<param name="sample_n_continuous_streak" value="15"/>
|
||||
<param name="sample_n_continuous_streak" value="5"/>
|
||||
|
||||
<!-- define number of samples to skip starting from the beginning
|
||||
of the frame and/or after reset has happened. This serves the purpose of skipping first few
|
||||
estimations on each frame, as these estimations may be inaccurate. This parameter also helps
|
||||
to give more robust detections when it's value is increased (up to scertain limit of about 60). -->
|
||||
<param name="sample_n_to_skip" value="15"/>
|
||||
<param name="sample_n_to_skip" value="0"/>
|
||||
|
||||
<param name="require_continuous_streak_amp" value="1"/>
|
||||
<param name="sample_n_continuous_streak_amp" value="5"/>
|
||||
|
||||
<!-- define/undefine this to enable/disable simplified estimation
|
||||
of frequency based on approximation of sin(x) with (x)
|
||||
@ -55,6 +58,10 @@
|
||||
|
||||
<!-- define/undefine to enable/disable avmd on external channel -->
|
||||
<param name="outbound_channel" value="1"/>
|
||||
|
||||
<!-- determines the mode of detection, default is both amplitude and frequency -->
|
||||
<param name="detection_mode" value="2"/>
|
||||
|
||||
<!-- Per call settings end -->
|
||||
</settings>
|
||||
</configuration>
|
||||
|
782
src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml
Normal file
782
src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml
Normal file
@ -0,0 +1,782 @@
|
||||
|
||||
<extension name="1701">
|
||||
<condition field="destination_number" expression="^1701$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/sin1000hz.raw"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="1702">
|
||||
<condition field="destination_number" expression="^1702$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/sin1200hz.raw"/>
|
||||
<action application="hangup"/>
|
||||
<action application="avmd" data="stop"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="1703">
|
||||
<condition field="destination_number" expression="^1703$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/sin1400hz.raw"/>
|
||||
<action application="hangup"/>
|
||||
<action application="avmd_stop"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="1704">
|
||||
<condition field="destination_number" expression="^1704$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/8000/sin1600hz.raw"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="503"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(503)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,400,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="504"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(504)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="505"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(505)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,600,700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="506"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(506)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,700,800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="507"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(507)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,800,900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="508"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(508)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,900,1000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="509"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(509)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1100)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="510"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(510)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1100,1200)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="511"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(511)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1200,1300)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="512"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(512)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1300,1400)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="513"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(513)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1400,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="514"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(514)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,1600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="515"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(515)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1600,1700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="516"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(516)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1700,1800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="517"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(517)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1800,1900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="518"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(518)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,1950)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="519"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(519)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,200,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="520"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(520)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="521"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(521)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="522"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(522)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="523"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(523)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=0"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="603"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(603)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,400,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="604"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(604)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="605"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(605)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,600,700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="606"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(606)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,700,800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="607"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(607)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,800,900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="608"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(608)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,900,1000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="609"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(609)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1100)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="610"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(610)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1100,1200)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="611"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(611)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1200,1300)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="612"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(612)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1300,1400)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="613"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(613)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1400,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="614"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(614)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,1600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="615"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(615)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1600,1700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="616"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(616)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1700,1800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="617"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(617)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1800,1900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="618"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(618)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="619"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(619)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,1000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="620"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(620)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="621"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(621)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="622"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(622)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="623"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(623)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="703"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(703)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,400,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="704"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(704)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="705"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(705)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,600,700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="706"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(706)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,700,800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="707"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(707)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,800,900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="708"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(708)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,900,1000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="709"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(709)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1100)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="710"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(710)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1100,1200)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="711"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(711)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1200,1300)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="712"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(712)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1300,1400)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="713"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(713)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1400,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="714"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(714)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,1600)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="715"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(715)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1600,1700)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="716"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(716)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1700,1800)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="717"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(717)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1800,1900)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="718"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(718)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="719"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(719)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,1000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="720"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(720)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="721"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(721)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="722"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(722)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,1500)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="723"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
|
||||
<condition field="destination_number" expression="^(723)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
|
||||
<action application="playback" data="tone_stream://L=1;%(1850,1000,1500,2000)" />
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="840531000"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531000)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2086613157-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531001"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531001)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2179185111-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531002"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531002)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2539488697-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531003"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531003)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2565910163-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531004"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531004)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2679091031-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531005"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531005)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2815939138-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531006"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531006)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2819127763-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531007"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531007)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/3157668346-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531008"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531008)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/4064659099-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531009"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531009)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/6062255782-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531010"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531010)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/8477910425-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531011"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531011)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/8000/8508497121-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531012"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531012)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/8635280270-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531013"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531013)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/8000/9106390422-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531014"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531014)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2"/>
|
||||
<action application="playback" data="voicemail/8000/9156332150-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="840531200"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531200)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2086613157-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531201"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531201)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2179185111-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531202"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531202)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2539488697-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531203"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531203)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2565910163-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531204"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531204)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2679091031-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531205"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531205)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2815939138-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531206"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531206)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/2819127763-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531207"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531207)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/3157668346-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531208"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531208)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/4064659099-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531209"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531209)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/6062255782-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531210"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531210)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/8477910425-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531211"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531211)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/8508497121-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531212"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531212)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/8635280270-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531213"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531213)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/9106390422-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<extension name="840531214"><!-- obscure voicemail -->
|
||||
<condition field="destination_number" expression="^(840531214)$">
|
||||
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=1,debug=0"/>
|
||||
<action application="playback" data="voicemail/8000/9156332150-18-15-bad.wav"/>
|
||||
<action application="avmd_stop"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
File diff suppressed because it is too large
Load Diff
@ -1,13 +1,17 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
|
||||
#brief Subscribe to avmd events and print them to the console.
|
||||
#author Piotr Gregor <piotrgregor@rsyncme.org>
|
||||
#date 13 Sept 2016 09:44 PM
|
||||
|
||||
|
||||
#!/usr/bin/perl
|
||||
$|++; # turn on autoflush
|
||||
use strict;
|
||||
use warnings;
|
||||
require ESL;
|
||||
|
||||
|
||||
my $host = "127.0.0.1";
|
||||
my $port = "8021";
|
||||
my $pass = "ClueCon";
|
||||
|
90
src/mod/applications/mod_avmd/scripts/avmd_originate.pl
Normal file
90
src/mod/applications/mod_avmd/scripts/avmd_originate.pl
Normal file
@ -0,0 +1,90 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
|
||||
#brief Call single voicemail available in default dialplan
|
||||
# and print detection result to the console.
|
||||
#author Piotr Gregor <piotrgregor@rsyncme.org>
|
||||
#date 15 Sept 2016 02:44 PM
|
||||
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require ESL;
|
||||
use POSIX;
|
||||
use Time::HiRes;
|
||||
|
||||
my $host = "127.0.0.1";
|
||||
my $port = "8021";
|
||||
my $pass = "ClueCon";
|
||||
my $extension_base = "sofia/internal/1000\@192.168.1.60";
|
||||
|
||||
my $playback = 'local_stream://moh';
|
||||
my $context = 'default';
|
||||
my $endpoint;
|
||||
my $dest;
|
||||
my $callerid;
|
||||
|
||||
|
||||
if ($#ARGV + 1 eq 2) {
|
||||
$dest = $ARGV[0];
|
||||
$callerid = $ARGV[1];
|
||||
print "Dialing [" .$dest ."] as " .$callerid ."]\n";
|
||||
} else {
|
||||
die "Please specify destination number and caller id\n";
|
||||
}
|
||||
|
||||
my $con = new ESL::ESLconnection($host, $port, $pass);
|
||||
if (!$con) {
|
||||
die "Unable to establish connection to $host:$port\n";
|
||||
}
|
||||
if ($con->connected()) {
|
||||
print "OK, Connected.\n";
|
||||
} else {
|
||||
die "Connection failure.\n";
|
||||
}
|
||||
|
||||
print "Subscribing to avmd events...\n";
|
||||
$con->events("plain", "CUSTOM avmd::start");
|
||||
$con->events("plain", "CUSTOM avmd::stop");
|
||||
$con->events("plain", "CUSTOM avmd::beep");
|
||||
|
||||
while($con->connected()) {
|
||||
test_once($dest, $callerid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
print "Disconnected.\n\n";
|
||||
|
||||
sub test_once {
|
||||
my ($dest, $callerid) = @_;
|
||||
my $originate_string =
|
||||
'originate ' .
|
||||
'{ignore_early_media=true,' .
|
||||
'origination_uuid=%s,' .
|
||||
'originate_timeout=60,' .
|
||||
'origination_caller_id_number=' . $callerid . ',' .
|
||||
'origination_caller_id_name=' . $callerid . '}';
|
||||
|
||||
if(defined($endpoint)) {
|
||||
$originate_string .= $endpoint;
|
||||
} else {
|
||||
$originate_string .= 'loopback/' . $dest . '/' . $context;
|
||||
}
|
||||
$originate_string .= ' ' . '&playback(' . $playback . ')';
|
||||
|
||||
my $uuid = $con->api('create_uuid')->getBody();
|
||||
my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
|
||||
printf("Calling with uuid [%s] [%s]...\n", $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $time_hires);
|
||||
|
||||
$con->bgapi(sprintf($originate_string, $uuid));
|
||||
|
||||
print "Waiting for the events...\n\n";
|
||||
while($con->connected()) {
|
||||
my $e = $con->recvEvent();
|
||||
if ($e) {
|
||||
my $body = $e->serialize('plain');
|
||||
print $body;
|
||||
print "\n\n";
|
||||
}
|
||||
}
|
||||
}
|
@ -4,8 +4,10 @@
|
||||
#brief Test module avmd by calling all voicemails available
|
||||
# in avmd test suite and print detection results to the console.
|
||||
#author Piotr Gregor <piotrgregor@rsyncme.org>
|
||||
#details If you are testing locally - remember to set avmd to inbound mode,
|
||||
# "avmd set inbound" in fs_cli.
|
||||
#details If you are testing serving voicemails from dialplan then avmd
|
||||
# must be set to inbound mode, either globally (by avmd set inbound
|
||||
# in fs_cli) or in dialplan settings (<action application="avmd_start"
|
||||
# data="inbound_channel=1,outbound_channel=0").
|
||||
#date 15 Sept 2016 03:00 PM
|
||||
|
||||
|
||||
@ -19,23 +21,99 @@ use Time::HiRes;
|
||||
|
||||
# Hashtable of <destination number : test result expectation> pairs
|
||||
my %numbers = (
|
||||
400 => "DETECTED",
|
||||
401 => "DETECTED",
|
||||
402 => "DETECTED",
|
||||
403 => "DETECTED",
|
||||
404 => "DETECTED",
|
||||
405 => "DETECTED",
|
||||
406 => "DETECTED",
|
||||
407 => "DETECTED",
|
||||
408 => "DETECTED",
|
||||
409 => "DETECTED",
|
||||
410 => "DETECTED",
|
||||
411 => "DETECTED",
|
||||
412 => "DETECTED",
|
||||
413 => "DETECTED",
|
||||
414 => "DETECTED",
|
||||
500 => "NOTDETECTED",
|
||||
501 => "NOTDETECTED"
|
||||
503 => "NOTDETECTED", # dual frequency (similar to single freq with varying amplitude), mode [0] AVMD_DETECT_AMP
|
||||
504 => "NOTDETECTED",
|
||||
505 => "NOTDETECTED",
|
||||
506 => "NOTDETECTED",
|
||||
507 => "NOTDETECTED",
|
||||
508 => "NOTDETECTED",
|
||||
509 => "NOTDETECTED",
|
||||
510 => "NOTDETECTED",
|
||||
511 => "NOTDETECTED",
|
||||
512 => "NOTDETECTED",
|
||||
513 => "NOTDETECTED",
|
||||
514 => "NOTDETECTED",
|
||||
515 => "NOTDETECTED",
|
||||
516 => "NOTDETECTED",
|
||||
517 => "NOTDETECTED",
|
||||
518 => "NOTDETECTED",
|
||||
519 => "NOTDETECTED",
|
||||
520 => "NOTDETECTED",
|
||||
521 => "NOTDETECTED",
|
||||
522 => "NOTDETECTED",
|
||||
523 => "NOTDETECTED",
|
||||
603 => "DETECTED", # dual frequency (similar to single freq with varying amplitude), mode [1] AVMD_DETECT_FREQ
|
||||
604 => "DETECTED",
|
||||
605 => "DETECTED",
|
||||
606 => "DETECTED",
|
||||
607 => "DETECTED",
|
||||
608 => "DETECTED",
|
||||
609 => "DETECTED",
|
||||
610 => "DETECTED",
|
||||
611 => "DETECTED",
|
||||
612 => "DETECTED",
|
||||
613 => "DETECTED",
|
||||
614 => "DETECTED",
|
||||
615 => "DETECTED",
|
||||
616 => "DETECTED",
|
||||
617 => "DETECTED",
|
||||
618 => "DETECTED",
|
||||
619 => "DETECTED",
|
||||
620 => "DETECTED",
|
||||
621 => "DETECTED",
|
||||
622 => "DETECTED",
|
||||
623 => "DETECTED",
|
||||
703 => "NOTDETECTED", # dual frequency (similar to single freq with varying amplitude), mode [2] AVMD_DETECT_BOTH
|
||||
704 => "NOTDETECTED",
|
||||
705 => "NOTDETECTED",
|
||||
706 => "NOTDETECTED",
|
||||
707 => "NOTDETECTED",
|
||||
708 => "NOTDETECTED",
|
||||
709 => "NOTDETECTED",
|
||||
710 => "NOTDETECTED",
|
||||
711 => "NOTDETECTED",
|
||||
712 => "NOTDETECTED",
|
||||
713 => "NOTDETECTED",
|
||||
714 => "NOTDETECTED",
|
||||
715 => "NOTDETECTED",
|
||||
716 => "NOTDETECTED",
|
||||
717 => "NOTDETECTED",
|
||||
718 => "NOTDETECTED",
|
||||
719 => "NOTDETECTED",
|
||||
720 => "NOTDETECTED",
|
||||
721 => "NOTDETECTED",
|
||||
722 => "NOTDETECTED",
|
||||
723 => "NOTDETECTED",
|
||||
840531000 => "DETECTED", # obscure voicemails, mode AVMD_DETECT_BOTH
|
||||
840531001 => "DETECTED",
|
||||
840531002 => "DETECTED",
|
||||
840531003 => "DETECTED",
|
||||
840531004 => "DETECTED",
|
||||
840531005 => "DETECTED",
|
||||
840531006 => "DETECTED",
|
||||
840531007 => "DETECTED",
|
||||
840531008 => "DETECTED",
|
||||
840531009 => "DETECTED",
|
||||
840531010 => "DETECTED",
|
||||
840531011 => "DETECTED",
|
||||
840531012 => "DETECTED",
|
||||
840531013 => "DETECTED",
|
||||
840531014 => "DETECTED",
|
||||
840531200 => "DETECTED", # obscure voicemails, mode AVMD_DETECT_FREQ
|
||||
840531201 => "DETECTED",
|
||||
840531202 => "DETECTED",
|
||||
840531203 => "DETECTED",
|
||||
840531204 => "DETECTED",
|
||||
840531205 => "DETECTED",
|
||||
840531206 => "DETECTED",
|
||||
840531207 => "DETECTED",
|
||||
840531208 => "DETECTED",
|
||||
840531209 => "DETECTED",
|
||||
840531210 => "DETECTED",
|
||||
840531211 => "DETECTED",
|
||||
840531212 => "DETECTED",
|
||||
840531213 => "DETECTED",
|
||||
840531214 => "DETECTED",
|
||||
);
|
||||
|
||||
my $host = "127.0.0.1";
|
||||
@ -72,7 +150,7 @@ if (!$con) {
|
||||
if ($con->connected()) {
|
||||
print "OK.\n";
|
||||
} else {
|
||||
die "Conenction failure.\n";
|
||||
die "Connection failure.\n";
|
||||
}
|
||||
|
||||
print "Subscribing to avmd events...\t";
|
||||
@ -108,10 +186,12 @@ sub test_once {
|
||||
'originate_timeout=60,' .
|
||||
'origination_caller_id_number=' . $callerid . ',' .
|
||||
'origination_caller_id_name=' . $callerid . '}';
|
||||
my $outcome;
|
||||
my $result;
|
||||
my $event_uuid;
|
||||
my $outcome = "";
|
||||
my $result = "";
|
||||
my $event_uuid = "N/A";
|
||||
my $uuid_in = "";
|
||||
my $freq = "N/A";
|
||||
my $freq_var = "N/A";
|
||||
|
||||
if(defined($endpoint)) {
|
||||
$originate_string .= $endpoint;
|
||||
@ -137,6 +217,10 @@ sub test_once {
|
||||
} elsif (!($uuid_in eq "") && (($avmd_event_type eq 'avmd::beep') || ($avmd_event_type eq 'avmd::stop'))) {
|
||||
$event_uuid = $e->getHeader("Unique-ID");
|
||||
if ($event_uuid eq $uuid_in) {
|
||||
if ($avmd_event_type eq 'avmd::beep') {
|
||||
$freq = $e->getHeader("Frequency");
|
||||
$freq_var = $e->getHeader("Frequency-variance");
|
||||
}
|
||||
$outcome = $e->getHeader("Beep-Status");
|
||||
if ($outcome eq $expectation) {
|
||||
$result = "PASS";
|
||||
@ -150,7 +234,7 @@ sub test_once {
|
||||
}
|
||||
} elsif ($event_name eq 'CHANNEL_HANGUP') {
|
||||
$event_uuid = $e->getHeader("variable_origination_uuid");
|
||||
if ($event_uuid eq $uuid_out) {
|
||||
if ((defined $event_uuid) && ($event_uuid eq $uuid_out)) {
|
||||
$outcome = "HANGUP";
|
||||
$result = "HANGUP";
|
||||
$hanguped++;
|
||||
@ -159,5 +243,6 @@ sub test_once {
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\t[%s]\t[%s]\t\t[%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result);
|
||||
printf("\t[%s]\t[%s]\t\t[%s]\t[%s]HZ\t[%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result, $freq, $freq_var);
|
||||
Time::HiRes::sleep(0.5); # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user