[JAVA] Créez un messager Facebook avec l'API Talk de api.ai et a3rt
Aperçu
- Utilisez api.ai pour la partie où vous souhaitez renvoyer un message fixe tel que "Quel est votre nom?" Ou "Quelle est votre date de naissance?" La conversation gratuite est laissée à a3rt talkAPI.
- Utilisez le webhook d'api.ai pour renvoyer la météo / les actualités à l'aide d'une API externe lors d'une conversation spécifique.
- Puisqu'il est gênant cette fois, il est installé vide. Préparez uniquement la boîte.
- Webhook est implémenté en java.
api.ai
agent
- L'agent est le corps du bot. .. Je pense. ..
- La définition du nom, de la langue et du fuseau horaire n'est pas difficile.
- Cette fois, le nom de l'agent est «kunipon». Lol
intent
- l'intention est une boîte qui classe les utilisateurs comme «que voulez-vous savoir?» et «quel genre de sentiments» en enregistrant ce que l'utilisateur est susceptible de dire.
- Vous pouvez enregistrer plusieurs réponses aux conversations des utilisateurs et les renvoyer de manière aléatoire.
- Enregistrez ce qui suit cette fois
Nom de l'intention |
Exemple de conversation d'inscription |
réponse |
acquaintance |
"Quel est votre nom?" "Qui êtes-vous?" |
C'est kunipon |
age |
"Quel âge" "Quel est votre âge?" |
9 ans |
teach_me |
"S'il vous plaît dites-moi" "Quel temps fera-t-il demain à Tokyo?" |
* Ceci sera décrit plus tard |
entity
- Utilisé pour identifier l'essence du texte inscrit dans l'intention.
- Par exemple, cette fois, je veux déterminer si je veux vraiment connaître la météo / les actualités, alors spécifiez "Dites-moi la météo de demain" ou "Dites-moi les nouvelles aujourd'hui" dans l'intention "Teach_me". Enregistrez l'entité.
- Plusieurs éléments et synonymes d'éléments peuvent être enregistrés dans une seule entité.
- Cela ne doit pas nécessairement être en fonction de l'application.
- Cette fois, je me suis inscrit comme suit.
Nom de l'entité |
Nom de référence |
Exemple Synonim |
teach_me |
weather |
"Météo" "Ensoleillé" "Chaud" |
teach_me |
news |
"Actualités" "Événements" "Thèmes" |
intent2
- Après avoir déterminé que la conversation de l'utilisateur appartient à l'intention teach_me, vous devez déterminer ce que l'utilisateur est dans l'état Teach_me. Par conséquent, une entité peut être associée à l'intention.
- Si l'entité associée n'existe pas dans la conversation, une réponse différente de la réponse par défaut peut être renvoyée.
- Cette fois, par exemple, lorsque l'utilisateur dit "S'il vous plaît dites-moi", la réponse "Je peux consulter la météo ou les actualités, mais laquelle voulez-vous?"
- Comme indiqué ci-dessous, l'entité Teach_me de la table sans élément Action a un contrôle liquide, et la réponse est enregistrée dans les invites.
Essayez-le une fois
- Puisque le mot «météo» enregistré en tant qu'entité est inclus, vous pouvez voir que le paramètre teach_me est météo.
default fallback
- Ce type réagit lorsqu'une conversation qui ne correspond pas à l'intention enregistrée arrive.
- l'action est décidée par vous-même, mais l'entrée par défaut est-elle inconnue?
webhook
- Utilisé lorsque vous souhaitez acquérir des données via une API à une intention spécifique et renvoyer les données acquises en tant que réponse.
- Tout d'abord, activez le webhook sur la page d'exécution et définissez l'URL.
- Vous ne pouvez pas enregistrer localhost etc. comme URL, et vous vous fâchez de définir une URL publique, mais à ce stade, vous n'avez pas à vous précipiter pour utiliser heroku ou quoi que ce soit. Je veux dire, si vous donnez heroku, vous ne pouvez pas déboguer. .. Google me dit également d'utiliser ngrok pendant le développement.
Local fulfillment testing with ngrok
- ngrok peut être installé avec
brew cask install ngrok
, et si vous faites quelque chose comme ngrok http 8080
, vous pouvez créer une URL publique comme Forwarding https: //abcd1234.ngrok.io-> localhost: 8080
.
- Après cela, accédez à la page d'intention cible, cliquez sur Exécution en bas et cochez la case "Utiliser le webhook" qui apparaît.
- Vérifiez avec l'intention teach_me (pour apporter des informations avec l'api) et le repli par défaut (pour envoyer à l'API a3rt talk lorsqu'il est inconnu dans api.ai)
facebook messenger
- Concernant l'intégration avec api.ai, il y a un document sur ici.
- Vous pouvez parler comme ça.
finalement
- L'exemple de github sera utile.
- La source réelle. J'espère que cela aide quelqu'un. ..