El marco MVC para aplicaciones de chat construido sobre una plataforma diseñada para sistemas de comunicación.
ESTE ES UN TRABAJO EN PROGRESO Y NO ESTÁ LISTO PARA NADA REAL AÚN
Cree aplicaciones de chat bot para las principales plataformas de aplicaciones de chat bot utilizando patrones de arquitectura de modelo, vista y controlador familiares que los desarrolladores han estado utilizando durante décadas.
Juvet es un marco de aplicación que incluye todo lo que necesita para crear una aplicación de chat para las principales plataformas de mensajería, incluidas:
RTM flojo
API de eventos flojos
Webhook entrante de Slack (próximamente)
alexa amazona
Mensajero de Facebook
SMS de Twillio
Costumbre...
Juvet ofrece todas las funciones que necesita para crear una aplicación de chat escalable y fácil de mantener, incluyendo
Envoltorios de API
Cola de mensajes
Middleware y complementos
Soporte de conversación
Soporte de PNL
más por venir...
La MAPA DE RUTA describe las principales funciones futuras de cada versión.
Este repositorio está disponible para patrocinio a través de los patrocinadores de GitHub en https://github.com/sponsors/jwright.
Si usted o su empresa se beneficiarán de un marco de aplicación de chat bien mantenido y fácil de usar, considere patrocinarlo. Su patrocinio ayudará con este desarrollo.
¡Gracias por el apoyo! ?
Agregue las dependencias de Juvet a su archivo mix.exs
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
Instalar las dependencias
mix deps.get
Asegúrese de que Juvet esté iniciado antes de su solicitud
# mix.exs def application do [extra_applications: [:juvet]] end
Cuando se inicia Juvet, el siguiente es el aspecto que debería tener el árbol de procesos.
+------------------+ +-------------------+| |-----| Ver registro estatal | +--| VerEstadoManager | +-------------------+ | | | +---------------------+ | +------------------+-----| VerEstadoSupervisor | +---------------+ +--------------+--+ +------------- ---+ +---------------------+ | | | | | | | Juvet |----| BotFactory |-----| Superintendente | | (aplicación) | | | | | | | +--------------+--+ +----------------+ +---------------+ | +-------------------+ | | | +--| Supervisor de fábrica | | | +-------------------+ | | | | +---------------+ +---------------+ | | | | | Supervisor de robots | | Supervisor de robots | | | | | +---------------+ +---------------+ | | | | +-----+ +-----+ | Robot | | Robot | +-----+ +-----+
Juvet - Aplicación que inicia el supervisor Juvet.BotFactory
BotFactory - Supervisor que inicia los procesos Juvet.Superintendent
y Juvet.ViewStateManager
.
ViewStateManager : supervisor que puede gestionar el almacenamiento de cualquier dato arbitrario para un conjunto determinado de claves. Inicia Juvet.ViewStateRegistry
y un supervisor dinámico para los procesos Juvet.ViewState
.
ViewStateRegistry : servidor que actúa como servicio de registro para convertir claves (como tuplas) en pids para identificar procesos Juvet.ViewState
.
Superintendente : el cerebro de la operación. El proceso comprueba la validez de la configuración y si está configurada correctamente inicia el proceso Juvet.Endpoint
y el Juvet.FactorySupervisor
FactorySupervisor : supervisor de todos los procesos de Juvet.BotSupervisor
.
BotSupervisor : supervisor de un proceso Juvet.Bot
, así como de cualquier proceso de soporte adicional (como Juvet.Receivers.SlackRTMReceiver
).
Bot : recibe mensajes de los proveedores de chat. Se encarga de procesar mensajes y generar respuestas.
Debe decirle a Juvet qué módulo de bot se debe crear cuando se realiza una nueva conexión. Puedes hacerlo con la siguiente configuración.
# 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" ]
La aplicación cliente que utiliza Juvet puede utilizar el enrutador desde su aplicación cliente. Sólo necesitas montar el Juvet.Plug
.
El enrutador se puede montar dentro del terminal Phoenix simplemente agregando:
# lib/my_phoenix_app_web/endpoint.ex defmodule MyPhoenixAppWeb.Endpoint do use Phoenix.Endpoint, otp_app: :my_phoenix_app # ... plug Juvet.Plug end
Actualmente Juvet no realiza ninguna función de autenticación. Esto llegará pronto, por lo que depende de su aplicación conectar su aplicación a Slack a través de OAuth. Si está utilizando ueberauth, entonces ueberauth_slack es una buena opción para autorizar a sus usuarios con Slack.
Una vez que obtenga el token de acceso al bot para su equipo, estará listo para comenzar.
Una vez que tengas un token de acceso al bot para tu equipo, podrás conectarte a Slack a través de:
{:ok, bot} = Juvet.create_bot("MyBot")
Puedes manejar mensajes de Slack anulando la función handle_event/3
en tu bot. Esta función puede utilizar la coincidencia de patrones para manejar varios eventos 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
Puedes enviar mensajes a Slack desde tu bot anulando la función send_message/3
en tu bot. El segundo argumento ( state
) debe contener una clave ( id
) que se utilizará para enviar el mensaje al equipo correcto.
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
Puede ejecutar las tareas con el comando mix estándar:
mix test
Puedes volver a grabar las respuestas de Slack con el siguiente comando de mezcla:
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>
Puede grabar los casetes de un solo método agregando un parámetro method
arriba (es decir, method:chat.update
) y simplemente volverá a grabar ese método.
Puedes crear un token de Slack para cualquiera de tus equipos visitando el área OAuth & Permissions
en tus aplicaciones API de Slack.
Clonar el repositorio git clone https://github.com/juvet/juvet
Crear una rama de funciones git checkout -b my-awesome-feature
¡Códice!
Confirme sus cambios (pequeños compromisos, por favor)
Empuja tu nueva rama git push origin my-awesome-feature
Crear un hub pull-request -b juvet:main -h juvet:my-awesome-feature
Copyright (c) 2018, Jamie Wright.
El código fuente de Juvet tiene la licencia MIT.