Kerangka kerja MVC untuk aplikasi obrolan dibangun pada platform yang dirancang untuk sistem komunikasi.
INI ADALAH PEKERJAAN DALAM PROGRES DAN BELUM SIAP UNTUK APA PUN YANG NYATA
Bangun aplikasi bot obrolan untuk platform aplikasi bot obrolan utama menggunakan pola arsitektur pengontrol tampilan model yang sudah dikenal yang telah digunakan pengembang selama beberapa dekade.
Juvet adalah kerangka aplikasi yang mencakup semua yang Anda perlukan untuk membangun aplikasi obrolan untuk semua platform perpesanan utama termasuk:
RTM kendur
API Acara Slack
Webhook Masuk Slack (segera hadir)
Amazon Alexa
Facebook Messenger
SMS Twillio
Kebiasaan...
Juvet menawarkan semua fitur yang Anda perlukan untuk membangun aplikasi obrolan yang skalabel dan dapat dipelihara, termasuk
Pembungkus API
Antrian Pesan
Middleware dan Plugin
Dukungan Percakapan
Dukungan NLP
lebih banyak lagi yang akan datang...
ROADMAP menjelaskan fitur-fitur utama yang akan datang dalam setiap rilis.
Repositori ini tersedia untuk sponsorship melalui GitHub Sponsors di https://github.com/sponsors/jwright.
Jika Anda atau perusahaan Anda akan mendapat manfaat dari kerangka aplikasi obrolan yang terpelihara dengan baik dan mudah digunakan, silakan pertimbangkan untuk menjadi sponsor. Sponsor Anda akan membantu perkembangan ini.
Terima kasih atas dukungannya! ?
Tambahkan dependensi Juvet ke file mix.exs
Anda
# mix.exs def deps do [{:juvet, "~> 0.0.1"}] end
Instal dependensinya
mix deps.get
Pastikan Juvet dimulai sebelum aplikasi Anda
# mix.exs def application do [extra_applications: [:juvet]] end
Ketika Juvet dimulai, berikut adalah tampilan pohon proses tersebut.
+------------------+ +----+| |-----| LihatStateRegistry | +--| ViewStateManager | +----+ | | | +-------+ | +---+-----| ViewStateSupervisor | +---------------+ +--------------+--+ +------------- ---+ +-------+ | | | | | | | Juve |----| Pabrik Bot |-----| Inspektur | | (aplikasi) | | | | | | | +--------------+--+ +-+ +---------------+ | +----+ | | | +--| Supervisor Pabrik | | | +----+ | | | | +---------------+ +---------------+ | | | | | Pengawas Bot | | Pengawas Bot | | | | | +---------------+ +---------------+ | | | | +-----+ +-----+ | Bot | | Bot | +-----+ +-----+
Juvet - Aplikasi yang memulai supervisor Juvet.BotFactory
BotFactory - Supervisor yang memulai proses Juvet.Superintendent
dan Juvet.ViewStateManager
.
ViewStateManager - Supervisor yang dapat mengelola penyimpanan data apa pun untuk sekumpulan kunci tertentu. Memulai Juvet.ViewStateRegistry
dan supervisor dinamis untuk proses Juvet.ViewState
.
ViewStateRegistry - Server yang bertindak sebagai layanan registri untuk mengubah kunci (sebagai Tuple) menjadi pid untuk mengidentifikasi proses Juvet.ViewState
.
Inspektur - Otak dari operasi ini. Proses memeriksa validitas konfigurasi dan jika dikonfigurasi dengan benar, proses Juvet.Endpoint
dan Juvet.FactorySupervisor
akan dimulai
FactorySupervisor - Supervisor atas semua proses Juvet.BotSupervisor
.
BotSupervisor - Supervisor atas satu proses Juvet.Bot
serta proses pendukung tambahan lainnya (seperti Juvet.Receivers.SlackRTMReceiver
)
Bot - Menerima pesan dari penyedia obrolan. Ini bertanggung jawab untuk memproses pesan dan menghasilkan tanggapan
Anda perlu memberi tahu Juvet modul bot apa yang harus dibuat ketika sambungan baru dibuat. Anda dapat melakukannya dengan konfigurasi berikut.
# 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" ]
Aplikasi klien yang menggunakan Juvet dapat menggunakan router dari aplikasi klien Anda. Anda hanya perlu memasang Juvet.Plug
.
Router dapat dipasang di dalam titik akhir Phoenix hanya dengan menambahkan:
# lib/my_phoenix_app_web/endpoint.ex defmodule MyPhoenixAppWeb.Endpoint do use Phoenix.Endpoint, otp_app: :my_phoenix_app # ... plug Juvet.Plug end
Saat ini Juvet tidak menjalankan fungsi oauth apa pun. Itu akan segera hadir sehingga terserah pada aplikasi Anda untuk menghubungkan aplikasi Anda ke Slack melalui OAuth. Jika Anda menggunakan ueberauth, maka ueberauth_slack adalah pilihan yang baik untuk membuat pengguna Anda diotorisasi dengan Slack.
Setelah Anda mendapatkan token akses bot untuk tim Anda, Anda siap berangkat.
Setelah Anda memiliki token akses bot untuk tim Anda, Anda dapat terhubung ke Slack melalui:
{:ok, bot} = Juvet.create_bot("MyBot")
Anda dapat menangani pesan dari Slack dengan mengganti fungsi handle_event/3
di bot Anda. Fungsi ini dapat menggunakan pencocokan pola untuk menangani berbagai event dari 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
Anda dapat mengirim pesan kembali ke Slack dari bot Anda dengan mengganti fungsi send_message/3
di bot Anda. Argumen kedua ( state
) harus berisi kunci ( id
) yang akan digunakan untuk mengirim pesan ke tim yang benar.
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
Anda dapat menjalankan tugas dengan perintah mix standar:
mix test
Anda dapat merekam ulang respons dari Slack dengan perintah mix berikut:
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>
Anda dapat merekam casette hanya untuk satu metode dengan menambahkan parameter method
di atas (yaitu method:chat.update
) dan metode tersebut hanya akan merekam ulang satu metode tersebut.
Anda dapat membuat token Slack untuk tim mana pun dengan mengunjungi area OAuth & Permissions
di Aplikasi Slack API Anda.
Kloning repositori git clone https://github.com/juvet/juvet
Buat cabang fitur git checkout -b my-awesome-feature
Kodez!
Komit perubahan Anda (tolong lakukan komitmen kecil)
Dorong cabang baru Anda git push origin my-awesome-feature
Buat hub pull-request -b juvet:main -h juvet:my-awesome-feature
Hak Cipta (c) 2018, Jamie Wright.
Kode sumber Juvet dilisensikan di bawah Lisensi MIT.