]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_rayo: dtmf #*A-D was broken
authorChris Rienzo <chris.rienzo@grasshopper.com>
Fri, 28 Jun 2013 15:16:06 +0000 (11:16 -0400)
committerChris Rienzo <chris.rienzo@grasshopper.com>
Fri, 28 Jun 2013 15:16:06 +0000 (11:16 -0400)
src/mod/event_handlers/mod_rayo/mod_rayo.c
src/mod/event_handlers/mod_rayo/nlsml.c

index e6b2d20322ea7fcb476d06c15eae58c0b0c5ab17..66f59c9def332d4618f9a77d2b51f99c10852de8 100644 (file)
@@ -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>]]>"
                "</grammar></input>"
                "</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;
 }
index 81f45dc6fb81f6483c788e22263fc94ed1473a0a..e446d1bfd0af1f016cc5594e12ee441dadf31421 100644 (file)
@@ -363,6 +363,37 @@ iks *nlsml_normalize(const char *result)
        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
  * @param digits the matching digits
@@ -387,7 +418,7 @@ iks *nlsml_create_dtmf_match(const char *digits)
 
                SWITCH_STANDARD_STREAM(stream);
                for (i = 0; i < num_digits; i++) {
-                       if (isdigit(digits[i])) {
+                       if (isdtmf(digits[i])) {
                                if (first) {
                                        stream.write_function(&stream, "%c", digits[i]);
                                        first = 0;