Das MVC-Framework für Chat-Apps, das auf einer Plattform für Kommunikationssysteme basiert.
DIES IST IN ARBEIT UND NOCH NICHT BEREIT FÜR ECHTES
Erstellen Sie Chat-Bot-Anwendungen für die wichtigsten Chat-Bot-Anwendungsplattformen unter Verwendung bekannter Model-View-Controller-Architekturmuster, die Entwickler seit Jahrzehnten verwenden.
Juvet ist ein Anwendungsframework, das alles enthält, was Sie zum Erstellen einer Chat-Anwendung für alle wichtigen Messaging-Plattformen benötigen, einschließlich:
Slack RTM
Slack Events-API
Slack Incoming Webhook (in Kürze verfügbar)
Amazon Alexa
Facebook Messenger
Twillio SMS
Brauch...
Juvet bietet alle Funktionen, die Sie zum Erstellen einer skalierbaren und wartbaren Chat-Anwendung benötigen, einschließlich
API-Wrapper
Nachrichtenwarteschlange
Middleware und Plugins
Gesprächsunterstützung
NLP-Unterstützung
es kommt noch mehr...
Die ROADMAP beschreibt die wichtigsten kommenden Funktionen jeder Version.
Dieses Repository kann über GitHub Sponsors unter https://github.com/sponsors/jwright gesponsert werden.
Wenn Sie oder Ihr Unternehmen von einem gut gepflegten und benutzerfreundlichen Chat-Anwendungs-Framework profitieren möchten, denken Sie bitte über eine Patenschaft nach. Ihre Patenschaft trägt zu dieser Entwicklung bei.
Vielen Dank für die Unterstützung! ?
Fügen Sie die Juvet-Abhängigkeiten zu Ihrer mix.exs
Datei hinzu
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
Installieren Sie die Abhängigkeiten
mix deps.get
Stellen Sie sicher, dass Juvet vor Ihrer Bewerbung gestartet ist
# mix.exs def application do [extra_applications: [:juvet]] end
Wenn Juvet startet, sollte dieser Prozessbaum wie folgt aussehen.
+------------------+ +-------------------+| |-----| ViewStateRegistry | +--| ViewStateManager | +-----+ | | | +-------+ | +----+-----| ViewStateSupervisor | +---------------+ +--------------+--+ +------------- ---+ +---------------------+ | | | | | | | Juvet |----| BotFactory |-----| Superintendent | | (Bewerbung) | | | | | | | +-------------+--+ +----------------+ +---------------+ | +-----+ | | | +--| Fabrikleiter | | | +-----+ | | | | +---------------+ +---------------+ | | | | | BotSupervisor | | BotSupervisor | | | | | +---------------+ +---------------+ | | | | +-----+ +-----+ | Bot | | Bot | +-----+ +-----+
Juvet – Anwendung, die den Juvet.BotFactory
-Supervisor startet
BotFactory – Supervisor, der die Prozesse Juvet.Superintendent
und Juvet.ViewStateManager
startet.
ViewStateManager – Supervisor, der die Speicherung beliebiger Daten für einen bestimmten Schlüsselsatz verwalten kann. Startet die Juvet.ViewStateRegistry
und einen dynamischen Supervisor für Juvet.ViewState
-Prozesse.
ViewStateRegistry – Server, der als Registrierungsdienst fungiert und Schlüssel (als Tupel) in PIDs umwandelt, um Juvet.ViewState
-Prozesse zu identifizieren.
Superintendent – Das Gehirn der Operation. Der Prozess prüft die Gültigkeit der Konfiguration und startet bei korrekter Konfiguration den Juvet.Endpoint
-Prozess und den Juvet.FactorySupervisor
FactorySupervisor – Supervisor für alle Juvet.BotSupervisor
-Prozesse.
BotSupervisor – Supervisor für einen Juvet.Bot
-Prozess sowie alle zusätzlichen unterstützenden Prozesse (wie Juvet.Receivers.SlackRTMReceiver
)
Bot – Empfängt Nachrichten von den Chat-Anbietern. Es ist für die Verarbeitung von Nachrichten und die Generierung von Antworten verantwortlich
Sie müssen Juvet mitteilen, welches Bot-Modul erstellt werden soll, wenn eine neue Verbindung hergestellt wird. Sie können dies mit der folgenden Konfiguration tun.
# 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" ]
Die Clientanwendung, die Juvet verwendet, kann den Router Ihrer Clientanwendung verwenden. Sie müssen lediglich den Juvet.Plug
montieren.
Der Router kann im Phoenix-Endpunkt montiert werden, indem einfach Folgendes hinzugefügt wird:
# lib/my_phoenix_app_web/endpoint.ex defmodule MyPhoenixAppWeb.Endpoint do use Phoenix.Endpoint, otp_app: :my_phoenix_app # ... plug Juvet.Plug end
Derzeit führt Juvet keine OAuth-Funktionalität aus. Das wird bald verfügbar sein, daher liegt es an Ihrer Anwendung, Ihre App über OAuth mit Slack zu verbinden. Wenn Sie ueberauth verwenden, ist ueberauth_slack eine gute Wahl, um Ihre Benutzer bei Slack zu autorisieren.
Sobald Sie das Bot-Zugriffstoken für Ihr Team erhalten haben, können Sie loslegen.
Sobald Sie ein Bot-Zugriffstoken für Ihr Team haben, können Sie sich über Folgendes mit Slack verbinden:
{:ok, bot} = Juvet.create_bot("MyBot")
Sie können Nachrichten von Slack verarbeiten, indem Sie die Funktion handle_event/3
auf Ihrem Bot überschreiben. Diese Funktion kann Mustervergleich verwenden, um verschiedene Ereignisse von Slack zu verarbeiten.
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
Sie können Nachrichten von Ihrem Bot an Slack zurücksenden, indem Sie die Funktion send_message/3
auf Ihrem Bot überschreiben. Das zweite Argument ( state
) sollte einen ( id
)-Schlüssel enthalten, der zum Senden der Nachricht an das richtige Team verwendet wird.
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
Sie können die Aufgaben mit dem Standard-Mix-Befehl ausführen:
mix test
Sie können die Antworten von Slack mit dem folgenden Mix-Befehl neu aufzeichnen:
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>
Sie können die Kassetten für nur eine Methode aufzeichnen, indem Sie oben einen method
hinzufügen (z. B. method:chat.update
), und diese eine Methode wird einfach neu aufgezeichnet.
Sie können ein Slack-Token für jedes Ihrer Teams erstellen, indem Sie den Bereich OAuth & Permissions
in Ihren Slack-API-Apps besuchen.
Klonen Sie das Repository git clone https://github.com/juvet/juvet
Erstellen Sie einen Feature-Zweig git checkout -b my-awesome-feature
Codez!
Übernehmen Sie Ihre Änderungen (bitte kleine Commits)
Pushen Sie Ihren neuen Branch git push origin my-awesome-feature
Erstellen Sie einen Pull-Request hub pull-request -b juvet:main -h juvet:my-awesome-feature
Copyright (c) 2018, Jamie Wright.
Der Juvet-Quellcode ist unter der MIT-Lizenz lizenziert.