Le framework MVC pour les applications de chat construit sur une plate-forme conçue pour les systèmes de communication.
C'EST UN TRAVAIL EN COURS ET PAS ENCORE PRÊT POUR RIEN DE RÉEL
Créez des applications de chatbot pour les principales plates-formes d'applications de chatbot en utilisant des modèles d'architecture modèle-vue-contrôleur familiers que les développeurs utilisent depuis des décennies.
Juvet est un framework d'application qui comprend tout ce dont vous avez besoin pour créer une application de chat pour toutes les principales plateformes de messagerie, notamment :
Slack RTM
API d'événements Slack
Webhook entrant Slack (à venir)
Amazon Alexa
Facebook Messenger
SMS Twillio
Coutume...
Juvet offre toutes les fonctionnalités dont vous avez besoin pour créer une application de chat évolutive et maintenable, notamment
Enveloppeurs d'API
File d'attente des messages
Middleware et plugins
Prise en charge des conversations
Prise en charge de la PNL
plus à venir...
La ROADMAP décrit les principales fonctionnalités à venir dans chaque version.
Ce référentiel est disponible pour le parrainage via GitHub Sponsors sur https://github.com/sponsors/jwright.
Si vous ou votre entreprise bénéficiez d'un cadre d'application de chat bien entretenu et facile à utiliser, veuillez envisager un parrainage. Votre parrainage contribuera à ce développement.
Merci pour le soutien! ?
Ajoutez les dépendances Juvet à votre fichier mix.exs
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
Installer les dépendances
mix deps.get
Assurez-vous que Juvet est démarré avant votre candidature
# mix.exs def application do [extra_applications: [:juvet]] end
Lorsque Juvet démarre, voici à quoi devrait ressembler cette arborescence de processus.
+------------------+ +-------------------+| |-----| Afficher le registre d'état | +--| ViewStateManager | +-------------------+ | | | +---------------------+ | +------------------+-----| ViewStateSuperviseur | +--------------+ +--------------+--+ +------------- ---+ +---------------------+ | | | | | | | Juvet |----| BotFactory |-----| Surintendant | | (demande) | | | | | | | +--------------+--+ +----------------+ +--------------------+ | +-------------------+ | | | +--| Superviseur d'usine | | | +-------------------+ | | | | +--------------+ +---------------+ | | | | | BotSuperviseur | | BotSuperviseur | | | | | +--------------+ +---------------+ | | | | +-----+ +-----+ | Bot | | Bot | +-----+ +-----+
Juvet - Application qui démarre le superviseur Juvet.BotFactory
BotFactory - Superviseur qui démarre les processus Juvet.Superintendent
et Juvet.ViewStateManager
.
ViewStateManager - Superviseur capable de gérer le stockage de n'importe quelle donnée arbitraire pour un ensemble de clés donné. Démarre Juvet.ViewStateRegistry
et un superviseur dynamique pour les processus Juvet.ViewState
.
ViewStateRegistry - Serveur pour agir comme un service de registre pour convertir les clés (sous forme de tuples) en pids afin d'identifier les processus Juvet.ViewState
.
Surintendant - Le cerveau de l'opération. Le processus vérifie la validité de la configuration et si elle est configurée correctement, il démarre le processus Juvet.Endpoint
et Juvet.FactorySupervisor
FactorySupervisor - Superviseur de tous les processus Juvet.BotSupervisor
.
BotSupervisor - Superviseur d'un processus Juvet.Bot
ainsi que de tout processus de support supplémentaire (comme Juvet.Receivers.SlackRTMReceiver
)
Bot - Reçoit les messages des fournisseurs de chat. Il est responsable du traitement des messages et de la génération des réponses
Vous devez indiquer à Juvet quel module de bot doit être créé lorsqu'une nouvelle connexion est établie. Vous pouvez le faire avec la configuration suivante.
# config/config.exs config :juvet, bot: MyBot, slack: [ actions_endpoint: "/slack/actions", commands_endpoint: "/slack/commands", events_endpoint: "/slack/events", options_load_endpoint: "/slack/options" ]
L'application client qui utilise Juvet peut utiliser le routeur de votre application client. Il vous suffit de monter le Juvet.Plug
.
Le routeur peut être monté à l'intérieur du point de terminaison Phoenix en ajoutant simplement :
# lib/my_phoenix_app_web/endpoint.ex defmodule MyPhoenixAppWeb.Endpoint do use Phoenix.Endpoint, otp_app: :my_phoenix_app # ... plug Juvet.Plug end
Actuellement, Juvet n'exécute aucune fonctionnalité oauth. Cela arrivera bientôt, c'est donc à votre application de connecter votre application à Slack via OAuth. Si vous utilisez ueberauth, alors ueberauth_slack est un bon choix pour autoriser vos utilisateurs avec Slack.
Une fois que vous avez obtenu le jeton d'accès au bot pour votre équipe, vous êtes prêt à partir.
Une fois que vous disposez d’un jeton d’accès au bot pour votre équipe, vous pouvez vous connecter à Slack via :
{:ok, bot} = Juvet.create_bot("MyBot")
Vous pouvez gérer les messages de Slack en remplaçant la fonction handle_event/3
sur votre bot. Cette fonction peut utiliser la correspondance de modèles afin de gérer divers événements de Slack.
defmodule MyBot do use Juvet.Bot def handle_event(platform, %{type: "message"} = message, state) do # Add your logic here on how to handle a message event {:ok, state} end def handle_event(platform, %{type: "file_created"} = message, state) do # Add your logic here on how to handle a file_created event {:ok, state} end end
Vous pouvez renvoyer des messages à Slack depuis votre bot en remplaçant la fonction send_message/3
sur votre bot. Le deuxième argument ( state
) doit contenir une clé ( id
) qui sera utilisée pour envoyer le message à la bonne équipe.
defmodule MyBot do use Juvet.Bot def handle_event(platform, %{type: "message", text: "Hello"} = message, %{id: id, channel: channel} = state) do send_message(platform, state, %{type: "message", channel: channel, message: "Right back at cha!"}) {:ok, state} end end
Vous pouvez exécuter les tâches avec la commande mix standard :
mix test
Vous pouvez réenregistrer les réponses de Slack avec la commande mix suivante :
MIX_ENV=test mix record token:<slack token here> channel:<slack channel id here> text:"<Welcome from Juvet!>" ts:<valid message timestamp here> user:<slack user id here> users:<slack user id here>,<another slack user id here>
Vous pouvez enregistrer les cassettes pour une seule méthode en ajoutant un paramètre method
ci-dessus (c'est-à-dire method:chat.update
) et cette méthode sera simplement réenregistrée.
Vous pouvez créer un jeton Slack pour n'importe laquelle de vos équipes en visitant la zone OAuth & Permissions
de vos applications API Slack.
Cloner le référentiel git clone https://github.com/juvet/juvet
Créer une branche de fonctionnalités git checkout -b my-awesome-feature
Codez !
Validez vos modifications (petits commits s'il vous plaît)
Poussez votre nouvelle branche git push origin my-awesome-feature
Créer un hub pull-request -b juvet:main -h juvet:my-awesome-feature
Copyright (c) 2018, Jamie Wright.
Le code source de Juvet est sous licence MIT.