聊天應用程式的 MVC 框架建構在專為通訊系統設計的平台上。
這是一項正在進行中的工作,尚未準備好進行任何實際的工作
使用開發人員幾十年來一直使用的熟悉的模型-視圖-控制器架構模式為主要聊天機器人應用程式平台建立聊天機器人應用程式。
Juvet 是一個應用程式框架,包含為所有主要訊息平台建立聊天應用程式所需的一切,包括:
鬆弛 RTM
Slack 事件 API
Slack 傳入 Webhook(即將推出)
亞馬遜 Alexa
臉書信使
Twillio 簡訊
風俗...
Juvet 提供建立可擴展且可維護的聊天應用程式所需的所有功能,包括
API 包裝器
訊息佇列
中介軟體和插件
對話支持
自然語言處理支援
未來還會有更多...
路線圖描述了每個版本中即將推出的主要功能。
此儲存庫可透過 GitHub Sponsors 贊助:https://github.com/sponsors/jwright。
如果您或您的公司將從維護良好且易於使用的聊天應用程式框架中受益,請考慮贊助。您的贊助將有助於這項發展。
感謝您的支持! ?
將 Juvet 依賴項新增至mix.exs
檔案中
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
安裝依賴項
mix deps.get
確保 Juvet 在您的應用程式之前啟動
# mix.exs def application do [extra_applications: [:juvet]] end
當 Juvet 啟動時,進程樹應如下所示。
+--------------------------------+ +--------------- -----------------+| |-----|查看狀態註冊表 | +--|視圖狀態管理器 | +--------------------+ | | | +--------------------+ | +------------------+-----|視圖狀態Supervisor | +----------------+ +--------------+--+ +------------ ---- ---+ +--------------------+ | | | | | | | 尤維特 |----| BotFactory |-----|總監| | (申請)| | | | | | | +--------------+--+ +----------------+ +----------------+ | +--------------------+ | | | +--|廠長 | | | +--------------------+ | | | | +----------------+ +----------------+ | | | | |機器人主管 | |機器人主管 | | | | | +----------------+ +----------------+ | | | | +-----+ +-----+ |機器人 | |機器人 | +-----+ +-----+
Juvet - 啟動Juvet.BotFactory
主管的應用程式
BotFactory - 啟動Juvet.Superintendent
和Juvet.ViewStateManager
進程的 Supervisor。
ViewStateManager - 可以管理給定鍵集的任意資料塊的儲存的主管。啟動Juvet.ViewStateRegistry
和Juvet.ViewState
流程的動態管理程式。
ViewStateRegistry - 充當註冊表服務的伺服器,將金鑰(作為元組)轉換為 pid,以便識別Juvet.ViewState
程序。
主管——行動的大腦。進程檢查配置的有效性,如果配置正確,則會啟動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,傑米·賴特。
Juvet 原始碼根據 MIT 許可證獲得許可。