actions_on_google_et_domotique
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| actions_on_google_et_domotique [2018/03/07 22:36] – créée 88.164.131.165 | actions_on_google_et_domotique [2018/03/18 09:48] (Version actuelle) – [Etapes] 88.164.131.165 | ||
|---|---|---|---|
| Ligne 8: | Ligne 8: | ||
| ==== Principe de fonctionnement === | ==== Principe de fonctionnement === | ||
| - | Vous créez des scénario sur IFTTT avec une condition et un action. | + | Vous créez des scénario sur IFTTT avec une condition et un action. |
| La condition sera une commande vocale et l' | La condition sera une commande vocale et l' | ||
| - | |||
| Le serveur recevra la commande et pilotera l' | Le serveur recevra la commande et pilotera l' | ||
| ==== Etapes === | ==== Etapes === | ||
| - | Créer un compte IFTTT | + | * Créer un compte IFTTT |
| + | * Créer une nouvelle applet | ||
| + | * Cliquer sur +this pour créer un nouvelle condition | ||
| + | * Dans le choix du service sélectionner Google Assistant | ||
| + | * Puis sélectionner "Say a simple phrase" | ||
| + | * Dans "What do you want to say", écrivez la phrase qui déclenchera votre l' | ||
| + | * Dans "What do you want the Assistant to say in response?", | ||
| + | * Dans Language sectionner French | ||
| - | Créer une nouvelle applet | + | {{:: |
| - | Cliquer sur +this pour créer | + | * Cliquer sur +that pour créer |
| + | * Dans le choix du service sélectionner Webhook | ||
| + | * Dans URL, mettez l'URL de la page sur votre serveur qui sera en charge d' | ||
| + | * (ex : http: | ||
| - | Dans le choix du service sélectionner Google Assistant | + | {{::action.png?200|}} |
| - | + | ||
| - | Puis sélectionner "Say a simple phrase" | + | |
| - | + | ||
| - | Dans "What do you want to say", écrivez la phrase qui déclenchera votre l' | + | |
| - | + | ||
| - | Dans "What do you want the Assistant to say in response?", | + | |
| - | + | ||
| - | Dans Language sectionner French | + | |
| - | + | ||
| - | Cliquer sur +that pour créer l'action | + | |
| - | + | ||
| - | Dans le choix du service sélectionner Webhook | + | |
| - | + | ||
| - | Dans URL, mettez l'URL de la page sur votre serveur qui sera en charge d' | + | |
| - | (ex : http: | + | |
| ==== Coté serveur === | ==== Coté serveur === | ||
| Ligne 81: | Ligne 74: | ||
| Cette solution fonctionne très bien mais elle ne permet que d' | Cette solution fonctionne très bien mais elle ne permet que d' | ||
| - | |||
| Exemple, on ne peut pas savoir si les volets sont montés ou descendus. | Exemple, on ne peut pas savoir si les volets sont montés ou descendus. | ||
| - | |||
| La solution suivante permet de palier à ce problème. | La solution suivante permet de palier à ce problème. | ||
| Ligne 89: | Ligne 80: | ||
| ==== Dialogflow ==== | ==== Dialogflow ==== | ||
| + | |||
| + | Actions on Google permet de développer une application pour votre Google Home. | ||
| + | En gros, elle remplacera IFTTT que nous avions utilisé avant. | ||
| + | L' | ||
| + | |||
| + | Il y a néanmoins des inconvénients à cette solution : | ||
| + | * Les applications ont vocations a être public même si vous pouvez les tester sur votre Google Home de manière privée. Lors du lancement de l' | ||
| + | * Il faut invoquer votre application pour l' | ||
| + | |||
| + | === Etapes === | ||
| + | * Aller sur https:// | ||
| + | * Créer un nouveau projet puis dans Actions, sélectionner Dialogflow actions. | ||
| + | * Vous allez ensuite arriver sur le site https:// | ||
| + | |||
| + | 2 menus sont important " | ||
| + | |||
| + | * Intents : Ce sont les intentions/ | ||
| + | * Entities : Ce soit les parametres variables de vos Intents | ||
| + | |||
| + | Exemple pour une demande du type "Monte les volets du salon." | ||
| + | Chaque valeur pourra avoir des synonymes. "du salon, salon, dans le salon etc ..." | ||
| + | |||
| + | Ce qui permettra a votre Google Home de reconnaitre toutes les variantes possibles | ||
| + | Monte les volets du salon, monte les volets dans le salon, monte les volets salon etc ... | ||
| + | |||
| + | * Créer dans Entities, un groupes " | ||
| + | * Créer dans Intents un nouvel intent qui s' | ||
| + | * Dans Training phrases taper "Monte les volets du salon" puis taper " | ||
| + | * Sélectionner "du salon" et sélectionner dans parametre votre entities " | ||
| + | * Sauvegardez votre intent | ||
| + | |||
| + | Dans intents, vous trouverez deux intent par defaut " | ||
| + | |||
| + | Maintenant que notre commande est paramétrée, | ||
| + | Pour cela, il faut aller dans " | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | Si votre serveur est héberge chez vous et que vous ne souhaitez pas payer pour avoir un certificat SSL, vous pouvez utiliser letsencrypt qui est gratuit: https:// | ||
| + | Le certificat n'est valable que 3 mois. Il faudra le renouveler tous les 3 mois. Il existe des systèmes de renouvellement automatique. (Faites recherche sur Google avec Letsencryt ACME). Par ma part j' | ||
| + | |||
| + | Une fois votre URL paramétré, | ||
| + | Dès que cette intent sera déclenché, | ||
| + | Ce JSON contiendra plein d' | ||
| + | |||
| + | Il faudra que votre page, réponde à ce post en envoyant un JSON avec deux paramètres " | ||
| + | |||
| + | La class équivalent/ | ||
| + | |||
| + | <code csharp> | ||
| + | public class JsonReponse | ||
| + | { | ||
| + | public string speech { get; set; } | ||
| + | public string displayText { get; set; } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Voici un exemple en ASP MCV pour le traitement du JSON envoyé par Google | ||
| + | |||
| + | <code csharp> | ||
| + | [HttpPost] | ||
| + | public async Task< | ||
| + | { | ||
| + | JsonReponse resp = await DecodeRequest(); | ||
| + | return resp; | ||
| + | } | ||
| + | | ||
| + | async Task< | ||
| + | { | ||
| + | string jsonData = await this.Request.Content.ReadAsStringAsync(); | ||
| + | string question = (string)jObject[" | ||
| + | string intent = (string)jObject[" | ||
| + | |||
| + | JsonReponse resp = new JsonReponse(); | ||
| + | resp.speech = "Cette demande n'a pas pû être traitée"; | ||
| + | resp.displayText = "Cette demande n'a pas pû être traitée"; | ||
| + | |||
| + | switch (intent) | ||
| + | { | ||
| + | case " | ||
| + | resp = DecodeQuestionVolets(jObject); | ||
| + | break; | ||
| + | default: | ||
| + | break; | ||
| + | } | ||
| + | |||
| + | return resp; | ||
| + | } | ||
| + | | ||
| + | private JsonReponse DecodeQuestionVolets(Newtonsoft.Json.Linq.JObject jObject) | ||
| + | { | ||
| + | JsonReponse resp = new JsonReponse(); | ||
| + | resp.speech = " | ||
| + | resp.displayText = " | ||
| + | |||
| + | Dictionary < string, string> parametres = jObject[" | ||
| + | |||
| + | if (parametres.Count > 0) | ||
| + | { | ||
| + | var parametre = parametres.First(); | ||
| + | string piece = parametre.Value; | ||
| + | | ||
| + | if (piece.Contains(" | ||
| + | { | ||
| + | //Monte le volet de la chambre | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Il peut aussi être utile d' | ||
| + | Pour cela vous pouvez faire une simple fonction de log pendant votre période de debuggage | ||
| + | |||
| + | <code csharp> | ||
| + | /// < | ||
| + | /// Enregistrement dans un fichier de log | ||
| + | /// </ | ||
| + | /// <param name=" | ||
| + | void log(string JsonData) | ||
| + | { | ||
| + | string directory = @" | ||
| + | |||
| + | if (!Directory.Exists(directory)) | ||
| + | { | ||
| + | try | ||
| + | { | ||
| + | Directory.CreateDirectory(directory); | ||
| + | } | ||
| + | catch (Exception ex) | ||
| + | { | ||
| + | } | ||
| + | } | ||
| + | try | ||
| + | { | ||
| + | File.AppendAllText(directory + @" | ||
| + | } | ||
| + | catch (Exception ex) | ||
| + | { | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | L' | ||
| + | Vous pourrez tester votre application sur le site mais elle sera aussi deployé sur votre Google Home. | ||
| + | Pour la démarrer il suffira de dire "Ok google parler avec < | ||
| + | |||
| + | | ||
actions_on_google_et_domotique.1520458614.txt.gz · Dernière modification : 2018/03/07 22:36 de 88.164.131.165
