mod_rayo: dtmf #*A-D was broken
This commit is contained in:
parent
ba6bf28a5e
commit
007ddda560
|
@ -3674,6 +3674,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_rayo_load)
|
||||||
"<![CDATA[<grammar mode=\"dtmf\"><rule id=\"digits\" scope=\"public\"><item repeat=\"4\"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]>"
|
"<![CDATA[<grammar mode=\"dtmf\"><rule id=\"digits\" scope=\"public\"><item repeat=\"4\"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]>"
|
||||||
"</grammar></input>"
|
"</grammar></input>"
|
||||||
"</prompt>");
|
"</prompt>");
|
||||||
|
rayo_add_cmd_alias("input", "<input xmlns=\""RAYO_INPUT_NS"\" mode=\"dtmf\" initial-timeout=\"5000\" inter-digit-timeout=\"3000\">"
|
||||||
|
"<grammar content-type=\"application/srgs+xml\">"
|
||||||
|
"<![CDATA[<grammar mode=\"dtmf\"><rule id=\"digits\" scope=\"public\"><item><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item><item>*</item><item>#</item></one-of></item></rule></grammar>]]>"
|
||||||
|
"</grammar></input>");
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -363,6 +363,37 @@ iks *nlsml_normalize(const char *result)
|
||||||
return result_xml;
|
return result_xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if digit is a DTMF
|
||||||
|
*/
|
||||||
|
static int isdtmf(const char digit)
|
||||||
|
{
|
||||||
|
switch(digit) {
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
case '*':
|
||||||
|
case '#':
|
||||||
|
case 'a':
|
||||||
|
case 'A':
|
||||||
|
case 'b':
|
||||||
|
case 'B':
|
||||||
|
case 'c':
|
||||||
|
case 'C':
|
||||||
|
case 'd':
|
||||||
|
case 'D':
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct an NLSML result for digit match
|
* Construct an NLSML result for digit match
|
||||||
* @param digits the matching digits
|
* @param digits the matching digits
|
||||||
|
@ -387,7 +418,7 @@ iks *nlsml_create_dtmf_match(const char *digits)
|
||||||
|
|
||||||
SWITCH_STANDARD_STREAM(stream);
|
SWITCH_STANDARD_STREAM(stream);
|
||||||
for (i = 0; i < num_digits; i++) {
|
for (i = 0; i < num_digits; i++) {
|
||||||
if (isdigit(digits[i])) {
|
if (isdtmf(digits[i])) {
|
||||||
if (first) {
|
if (first) {
|
||||||
stream.write_function(&stream, "%c", digits[i]);
|
stream.write_function(&stream, "%c", digits[i]);
|
||||||
first = 0;
|
first = 0;
|
||||||
|
|
Loading…
Reference in New Issue