Пример #1
0
 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;
 }