통신 시스템용으로 설계된 플랫폼을 기반으로 구축된 채팅 앱용 MVC 프레임워크입니다.
이 작업은 진행 중이며 아직 실제적인 작업은 준비되지 않았습니다.
개발자가 수십 년 동안 사용해 온 친숙한 모델-뷰-컨트롤러 아키텍처 패턴을 사용하여 주요 채팅 봇 애플리케이션 플랫폼용 채팅 봇 애플리케이션을 구축하세요.
Juvet은 다음을 포함하여 모든 주요 메시징 플랫폼용 채팅 애플리케이션을 구축하는 데 필요한 모든 것을 포함하는 애플리케이션 프레임워크입니다.
슬랙 RTM
Slack 이벤트 API
Slack 수신 웹훅(출시 예정)
아마존 알렉사
페이스북 메신저
트윌리오 SMS
관습...
Juvet은 다음을 포함하여 확장 가능하고 유지 관리 가능한 채팅 애플리케이션을 구축하는 데 필요한 모든 기능을 제공합니다.
API 래퍼
메시지 큐
미들웨어 및 플러그인
대화 지원
NLP 지원
앞으로 더 많이...
ROADMAP은 각 릴리스의 주요 향후 기능을 설명합니다.
이 저장소는 https://github.com/sponsors/jwright의 GitHub 후원자를 통해 후원할 수 있습니다.
귀하 또는 귀하의 회사가 잘 관리되고 사용하기 쉬운 채팅 애플리케이션 프레임워크의 혜택을 누리고 싶다면 후원을 고려해 보십시오. 귀하의 후원은 이러한 발전에 도움이 될 것입니다.
지원해 주셔서 감사합니다! ?
mix.exs
파일에 Juvet 종속성을 추가하세요.
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
종속성 설치
mix deps.get
신청하기 전에 Juvet이 시작되었는지 확인하십시오.
# mix.exs def application do [extra_applications: [:juvet]] end
Juvet이 시작되면 프로세스 트리는 다음과 같습니다.
+------+ +------+| |------| ViewState레지스트리 | +--| 뷰상태관리자 | +------+ | | | +---------+ | +------+------| ViewState감독자 | +---------------+ +---------------+--+ +------------- ---+ +---------+ | | | | | | | 유베 |----| 봇팩토리 |------| 교육감 | | (신청) | | | | | | | +---------------+--+ +---+ +---------------+ | +------+ | | | +--| 공장감독자 | | | +------+ | | | | +---------------+ +---------------+ | | | | | 봇 감독자 | | 봇 감독자 | | | | | +---------------+ +---------------+ | | | | +------+ +------+ | 봇 | | 봇 | +------+ +------+
Juvet - Juvet.BotFactory
감독자를 시작하는 애플리케이션
BotFactory - Juvet.Superintendent
및 Juvet.ViewStateManager
프로세스를 시작하는 감독자입니다.
ViewStateManager - 주어진 키 세트에 대한 임의의 데이터 저장을 관리할 수 있는 감독자입니다. Juvet.ViewStateRegistry
및 Juvet.ViewState
프로세스에 대한 동적 감독자를 시작합니다.
ViewStateRegistry - Juvet.ViewState
프로세스를 식별하기 위해 키(튜플)를 PID로 변환하는 레지스트리 서비스 역할을 하는 서버입니다.
감독관 - 작전의 두뇌입니다. 프로세스는 구성의 유효성을 확인하고 올바르게 구성되면 Juvet.Endpoint
프로세스와 Juvet.FactorySupervisor
시작합니다.
FactorySupervisor - 모든 Juvet.BotSupervisor
프로세스를 감독합니다.
BotSupervisor - 하나의 Juvet.Bot
프로세스 및 추가 지원 프로세스(예: Juvet.Receivers.SlackRTMReceiver
)에 대한 감독자입니다.
봇 - 채팅 제공자로부터 메시지를 받습니다. 메시지 처리 및 응답 생성을 담당합니다.
새로운 연결이 이루어질 때 어떤 봇 모듈을 생성해야 하는지 Juvet에 알려주어야 합니다. 다음 구성을 사용하면 그렇게 할 수 있습니다.
# 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" ]
Juvet을 사용하는 클라이언트 애플리케이션은 클라이언트 애플리케이션의 라우터를 사용할 수 있습니다. Juvet.Plug
만 마운트하면 됩니다.
다음을 추가하면 라우터를 Phoenix 엔드포인트 내부에 마운트할 수 있습니다.
# lib/my_phoenix_app_web/endpoint.ex defmodule MyPhoenixAppWeb.Endpoint do use Phoenix.Endpoint, otp_app: :my_phoenix_app # ... plug Juvet.Plug end
현재 Juvet은 oauth 기능을 수행하지 않습니다. 이는 곧 제공될 예정이므로 OAuth를 통해 앱을 Slack에 연결하는 것은 애플리케이션에 달려 있습니다. ueberauth를 사용하는 경우 ueberauth_slack은 사용자에게 Slack 권한을 부여하는 데 좋은 선택입니다.
팀의 봇 액세스 토큰을 받으면 시작할 준비가 된 것입니다.
팀을 위한 봇 액세스 토큰이 있으면 다음을 통해 Slack에 연결할 수 있습니다.
{:ok, bot} = Juvet.create_bot("MyBot")
봇에서 handle_event/3
함수를 재정의하여 Slack의 메시지를 처리할 수 있습니다. 이 기능은 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
봇의 send_message/3
함수를 재정의하여 봇에서 Slack으로 다시 메시지를 보낼 수 있습니다. 두 번째 인수( state
)에는 올바른 팀에 메시지를 보내는 데 사용되는 ( id
) 키가 포함되어야 합니다.
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
표준 mix 명령을 사용하여 작업을 실행할 수 있습니다.
mix test
다음 mix 명령을 사용하여 Slack의 응답을 다시 녹음할 수 있습니다.
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>
위의 method
매개변수(예: method:chat.update
)를 추가하여 하나의 메소드에 대한 카세트를 녹음할 수 있으며 해당 메소드가 다시 기록됩니다.
Slack API 앱의 OAuth & Permissions
영역을 방문하여 모든 팀을 위한 Slack 토큰을 생성할 수 있습니다.
저장소 git clone https://github.com/juvet/juvet
복제하세요.
기능 브랜치 만들기 git checkout -b my-awesome-feature
코데즈!
변경 사항을 커밋합니다(작은 커밋을 부탁드립니다).
새로운 브랜치를 푸시하세요 git push origin my-awesome-feature
풀 요청 hub pull-request -b juvet:main -h juvet:my-awesome-feature
저작권 (c) 2018, Jamie Wright.
Juvet 소스 코드는 MIT 라이선스에 따라 라이선스가 부여됩니다.