Dieses Skript enthält die Sprachregeln, also was kann gesprochen werden, und was soll dann passieren.
Hier ist also, der Teil, den man anpassen sollte. Dazu ein paar Beispiele aus dem Skript:
Beispiel Uhrzeit:
REGEX1’ => ‚wie spät ist es|wie viel Uhr|Zeit‘,
bedeutet dass dieses Kommando ausgeführt wird, wenn der Benutzer spricht
„Wie spät ist es ?“ ODER „Wie viel Uhr ist es“ ODER „Sag mir die Zeit“
Es wird also nur nach den marktierten Text gesucht, wenn der gefunden wurde, ist das Kommando erstmal gültig.
„Wie spät ist es in Australien“ führt ebenso zur Ausführung wie „Nenn mir eine Zeitschrift“
Danach wird das Kommando geprüft. Bei einem Kommando mit Parametern müssen noch weitere Wörter im Text vorkommen.
In diesem Beispiel ist das Parameter Regex leer (‚REGEX‘ => ’ ',), es wird also kein Parameter erwartet und die Ausführung kann losgehen.
Es wird also der Code ausgeführt, dieser steht in Code
‚CODE‘ => ‚$result = date(„H“)." Uhr ".date(„i“);‘,
Das ist eine geschachtelte Php Anweisung, also wird nun ausgeführt:
$result = date(„H“)." Uhr ".date(„i“);
Das Ergebnis wird in $result gespeichert und dann im letzten Step an die App zurückgegeben
‚SAY‘ => ‚Die aktuelle Uhrzeit ist $result‘
Und die App spricht…
Beispiel Licht schalten:
‚REGEX1‘ => ‚(Licht|Lampe)‘,
Hier steigen wir also ein wenn wir Licht oder Lampe hören.
Demnach steigen wir auch ein, wenn wir über eine Stehlampe oder Wunderlampe reden
Nun kommen wir wieder zum Parameter Regex
hier also
‚REGEX‘ => ‚an|ein|einschalten‘, im ersten Kommando
und
‚REGEX‘ => ‚aus|ausschalten‘, im zweiten.
Beide werden nun mit dem Gesprochen geprüft.
Nehmen wir mal diese vier Beispiele aus der Praxis
Wie man sieht, kommt überall Licht oder Lampe drin vor, also brauchen wir nur noch die Parameter überprüfen
- „Bitte schalte das Licht ein“
- „Die Wunderlampe war aussergewöhnlich“
- „Licht aus“
- „Der Blinker macht das Licht an, aus, an, aus“
Zu 1) Hier gilt das erste Kommando denn es wurde hier ein gefunden
Zu 2) Hier gilt das zweite Kommando denn es wurde hier aussergewöhnlich gefunden
Zu 3) Hier gilt das zweite Kommando denn es wurde hier aus gefunden
Zu 4) Hier gilt das erste Kommando denn es wurde hier an gefunden, die zweite Regel kommt nicht mehr zum Einsatz
Es wird also ausgeführt:
- Set_Light (###CONTEXTID###, true);
- Set_Light (###CONTEXTID###, false);
- Set_Light (###CONTEXTID###, false);
- Set_Light (###CONTEXTID###, true);
<?
function GetGrammar ()
{
$grammar = array(
array('REGEX1' => 'wie spät ist es|wie viel Uhr|Zeit',
'COMMAND1' => array(
'REGEX' => ' ',
'CODE' => '$result = date("H")." Uhr ".date("i");',
'SAY' => 'Die aktuelle Uhrzeit ist $result'
)
),
/* Licht */
array(
'REGEX1' => '(Licht|Lampe)',
'COMMAND1' => array(
'REGEX' => 'an|ein|einschalten',
'CODE' => 'Set_Light (###CONTEXTID###, true);',
'SAY' => 'Ich habe das Licht eingeschaltet'
),
'COMMAND2' => array(
'REGEX' => 'aus|ausschalten',
'CODE' => 'Set_Light (###CONTEXTID###, false);',
'SAY' => 'Ich habe das Licht ausgeschaltet'
)
),
/* Temperaturen */
array(
'REGEX1' => '(wie|welche|sag)?.+Temperatur',
'COMMAND1' => array(
'REGEX' => ' Kinderzimmern ',
'CODE' => '
$result = GetValue(34877);
$result = number_format($result, 1, ".", "");
$result1 = GetValue(24999);
$result1 = number_format($result, 1, ".", "");
',
'SAY' => 'In Aarons Zimmer beträgt die Temperatur $result Grad, in Dankens Zimmer beträgt die Temperatur $result1 Grad'
),
'COMMAND2' => array(
'REGEX' => ' Aarons Zimmer ',
'CODE' => '
$result = GetValue(34877);
$result = number_format($result, 1, ".", "");
',
'SAY' => 'In Aarons Zimmer beträgt die Temperatur $result Grad'
),
'COMMAND3' => array(
'REGEX' => ' Duncans Zimmer ',
'CODE' => '
$result = GetValue(24999);
$result = number_format($result, 1, ".", "");
',
'SAY' => 'In Dankens Zimmer beträgt die Temperatur $result Grad'
),
'COMMAND4' => array(
'REGEX' => ' Wohnzimmer ',
'CODE' => '
$result = GetValue(16576);
$result = number_format($result, 1, ".", "");
',
'SAY' => 'Im Wohnzimmer beträgt die Temperatur $result Grad'
),
'COMMAND5' => array(
'REGEX' => ' ',
'CODE' => '',
'SAY' => 'Bitte spezifizieren Sie Ihre Anfrage'
),
),
/* Globales */
array(
'REGEX1' => ' Alle ',
'REGEX2' => ' Lichter ',
'COMMAND1' => array(
'REGEX' => ' aus | ausschalten ',
'CODE' => '
$result = MyFunctionAllLightsOff();
',
'SAY' => '$result'
)
)
);
return $grammar;
}
?>