public static function generateXmlGrammar() { $xmlWildcard = ''; $xml = "<grammar version=\"1.0\" xml:lang=\"fr-FR\" mode=\"voice\" root=\"ruleJeedom\" xmlns=\"http://www.w3.org/2001/06/grammar\" tag-format=\"semantics/1.0\">\r\n"; $xml .= "<rule id=\"ruleJeedom\" scope=\"public\">\r\n"; $xml .= "<tag>out.action=new Object(); </tag>\r\n"; $xml .= "<item>Sarah</item>\r\n"; $xml .= "<one-of>\r\n"; foreach (interactQuery::all() as $interactQuery) { if ($interactQuery->getEnable() == 1) { $query = $interactQuery->getQuery(); preg_match_all("/#(.*?)#/", $query, $matches); $matches = $matches[1]; if (count($matches) > 0) { $xmlWildcard .= "<rule id=\"ruleJeedom_" . $interactQuery->getId() . "\" scope=\"public\">\r\n"; $xmlWildcard .= "<tag>out.action=new Object();</tag>\r\n"; foreach ($matches as $match) { $beforeMatch = substr($query, 0, strpos($query, "#" . $match . "#")); $query = substr($query, strpos($query, "#" . $match . "#") + strlen("#" . $match . "#")); $xmlWildcard .= "<item>" . $beforeMatch . "</item>\r\n"; $xmlWildcard .= "<ruleref special=\"GARBAGE\" />\r\n"; } if (strlen($query) > 0) { $xmlWildcard .= "<item>" . $query . "</item>\r\n"; } $xmlWildcard .= "</rule>\r\n"; $xml .= "<item><ruleref uri=\"#ruleJeedom_" . $interactQuery->getId() . "\"/><tag>out._attributes.dictation=\"true\";out.action.id=\"" . $interactQuery->getId() . "\"; out.action.method=\"execute\"</tag></item>\r\n"; } else { $xml .= "<item>" . $interactQuery->getQuery() . "<tag>out.action.id=\"" . $interactQuery->getId() . "\"; out.action.method=\"execute\"</tag></item>\r\n"; } } } $xml .= "</one-of>\r\n"; $xml .= "<tag>out.action._attributes.uri=\"http://127.0.0.1:8080/sarah/jeedom\";</tag>\r\n"; $xml .= "</rule>\r\n"; $xml .= $xmlWildcard; $xml .= "</grammar>\r\n"; return $xml; }