2017-09-02 1 views
1

Je travaille sur une action google que j'ai écrite en nœud et que je déploie sur firebase pour interagir via des intentions définies sur API.AI.Envoi d'emails via un noeud sur un projet firebase

Je voudrais implémenter une fonctionnalité qui envoie un email à une adresse spécifique lorsqu'une intention spécifique est activée. J'ai essayé d'utiliser les paquets nodmail et sendmail, mais après le déploiement avec eux, ils ne semblent pas envoyer l'email quand l'intention correcte est invoquée. Je ne suis pas sûr si le problème est que je l'ai codé mal (une possibilité distincte étant donné mon inexpérience) ou s'il y a un problème inhérent à la spécification de ces paquets sur un déploiement Firebase. J'ai pu vérifier que j'obtiens le code qui exécute le sendmail en retournant simplement une réponse à API.AI à l'intérieur; Si je suis capable d'accéder aux journaux FireBase ou API.AI, je ne sais pas comment. API.AI affiche une réponse JSON, mais pour autant que je sache, c'est à peu près tout.

est ici un code simplifié (seulement les parties pertinentes):

const sendmail = require('sendmail')(); 

const getSuggestion = app => { 

    const rawInput = app.getRawInput(); 

    sendmail({ 
     from: '[email protected]', 
     to: '[email protected]', 
     subject: 'test sendmail', 
     html: rawInput, 
     }, function(err, reply) { 
     console.log(err && err.stack); 
     console.dir(reply); 
     return app.ask('You said ' + rawInput + '. Do you have any further input?'); 
    }); 

}; 
+0

Voyez-vous des erreurs? Avez-vous un code minimal qui ne fonctionne pas comme prévu? Utilisez-vous Cloud Functions pour Firebase? –

+0

Je ne vois aucune sorte d'erreur dans l'interface API.AI ou la réponse JSON. J'ai jeté un code là-haut dans la réponse. J'ai lu qu'il y avait un moyen d'utiliser les fonctions Cloud pour envoyer des emails, mais j'espérais éviter cela et faire quelque chose de très simple. – testingtesting

+0

En fait, j'ai fini par utiliser les fonctions Cloud. Je ne pense pas qu'il soit possible de faire en utilisant les paquets de nœuds habituels intégrés dans le déploiement de la base de données, mais je peux évidemment me tromper. – testingtesting

Répondre

0

Voici un exemple en utilisant des fonctions Cloud pour Firebase (aka fonctions Firebase), nodemailer et Gmail: https://github.com/firebase/functions-samples/tree/master/quickstarts/email-users

API.AI indique un 206 dans le simulateur de API.AI lorsque l'appel de webhook échoue, parce que certains contenus sont usent sen par API.AI même si l'appel de webhook échoue. Si vous voyez un 206 après avoir cliqué sur "Afficher JSON" vérifiez votre webhook (dans ce cas, Firebase) se connecte au débogage. Voici quelques captures d'écran: enter image description here

En cliquant « SHOW JSON » crée la fenêtre suivante:

enter image description here

Cette 206 partial_content Webhook call failed. Error: Webhook response was empty. indique une sorte d'erreur avec votre webhook, que ce soit une erreur 500, une réponse positive que n'a pas pu être formaté correctement ou vous avez entré de manière incorrecte l'URL HTTPS de votre webhook.