Gort adalah kerangka chatbot yang dirancang dari awal untuk chatops.
Gort menghadirkan kekuatan baris perintah ke tempat Anda berkolaborasi dengan tim: jendela obrolan Anda. Dukungan bundel perintah terbukanya memungkinkan pengembang untuk mengimplementasikan fungsionalitas dalam bahasa pilihan mereka, sementara kontrol akses yang kuat berarti Anda dapat berkolaborasi bahkan dalam tugas yang paling sensitif sekalipun dengan percaya diri. Fokus pada ekstensibilitas dan kemampuan beradaptasi berarti Anda dapat merespons dengan cepat terhadap hal-hal yang tidak terduga, tanpa kehilangan visibilitas tim Anda.
Dokumentasi resmi dapat ditemukan di sini: The Gort Guide.
Gort awalnya dianggap sebagai implementasi ulang Go dari Cog yang Dapat Dioperasikan, dan meskipun masih sangat terinspirasi oleh Cog, Gort sebagian besar telah menempuh jalannya sendiri.
Selama diskusi desain awal, kami menemukan bahwa banyak fitur Cog, betapapun inovatifnya, sebagian besar tidak digunakan, dan basis kode menjadi sulit untuk diperluas dan dipelihara. Selain itu, bahasa implementasinya -- Elixir -- hanya memiliki sedikit pengembang yang mahir. Solusinya, yang telah dibahas selama berbulan-bulan di ruang kerja Cog Slack, adalah menulis ulang Cog dari awal di Go, menghapus beberapa fungsi yang jarang digunakan dan mengurangi kompleksitas dalam prosesnya.
Hal ini memberi kami kesempatan untuk mempertimbangkan dan mungkin mendefinisikan ulang apa yang dimaksud dengan Cog. Untuk memilih fitur-fitur yang masuk akal, dan membuang fitur-fitur yang tidak masuk akal. Dengan cara ini, Gort dapat digambarkan lebih sebagai “penerus spiritual” Cog daripada implementasi ulang yang setia.
Filosofi desain Gort menekankan fleksibilitas dan keamanan dengan memungkinkan Anda membuat perintah dalam bahasa apa pun yang Anda inginkan, menggunakan peralatan yang sudah Anda kuasai, dan dapat mengontrol secara ketat siapa yang dapat menggunakannya dan bagaimana caranya.
Lebih khusus lagi:
Masing-masing dijelaskan secara lebih rinci di bawah ini.
Pengguna terutama berinteraksi dengan Gort melalui perintah , yang dipicu oleh karakter perintah ( !
secara default) namun secara konseptual identik dengan perintah yang dimasukkan pada baris perintah.
Misalnya, menggunakan perintah echo
mungkin terlihat seperti berikut:
Seperti yang ditunjukkan, keluaran dari perintah yang berhasil diteruskan kembali oleh Gort.
Informasi lebih lanjut tentang perintah dapat ditemukan di Panduan Gort:
Perintah Gort dibuat sebagai gambar container, yang berarti Anda dapat membuatnya dalam bahasa apa pun yang Anda sukai.
Terlebih lagi, karena executable Anda menerima semua input obrolan persis seperti yang diketik pada baris perintah, Anda dapat menggunakan penerjemah baris perintah apa pun yang Anda inginkan. Perintah bahkan dapat diimplementasikan sebagai skrip Bash, atau menggunakan perintah yang sudah ada, seperti curl
!
Informasi lebih lanjut tentang penulisan perintah dapat ditemukan di Panduan Gort:
Di Gort, sekumpulan satu atau lebih perintah terkait dapat diinstal sebagai "bundel perintah".
Sebuah bundel direpresentasikan dalam YAML, menentukan executable mana yang akan digunakan untuk setiap perintah dan siapa yang diizinkan untuk menjalankan setiap perintah.
File bundel yang sangat sederhana ditunjukkan di bawah ini.
---
gort_bundle_version : 1
name : echo
version : 0.0.1
image : ubuntu:20.04
author : Matt Titmus <[email protected]>
homepage : https://guide.getgort.io
description : A test bundle.
long_description : |-
This is an example bundle. It lets you echo text using the "echo"
command that's built into Ubuntu 20.04.
permissions :
- can_echo
commands :
echo :
description : " Echos back anything sent to it. "
executable : [ "/bin/echo" ]
rules :
- must have echo:can_echo
Ini menunjukkan bundel bernama echo
, yang mendefinisikan perintah (juga disebut echo
) dan izin yang disebut can_echo
. Setelah terinstal, setiap pengguna dengan izin echo:can_echo
dapat menjalankannya di Slack.
Informasi lebih lanjut tentang bundel dapat ditemukan di Panduan Gort:
Di Gort, pengguna dapat dipetakan secara unik ke pengguna di satu atau lebih penyedia obrolan. Pengguna Gort dapat menjadi anggota dari satu atau lebih grup , yang pada gilirannya dapat memiliki sejumlah peran yang dapat dianggap sebagai kumpulan izin yang diberikan. Misalnya, pengguna dave
mungkin tergabung dalam grup bernama developers
. Grup ini mungkin memiliki peran terlampir bernama deployers
yang berisi sejumlah izin, termasuk salah satu yang disebut production_deploy
.
Informasi lebih lanjut tentang izin dan aturan dapat ditemukan di Panduan Gort:
Sistem aturan yang canggih dapat diterapkan untuk setiap perintah yang menentukan siapa yang dapat menggunakannya. Ini bisa sangat terperinci, dan bahkan mampu membuat keputusan izin berdasarkan nilai tanda atau parameter tertentu.
Aturan ditetapkan pada tingkat paket, dan bisa sangat rumit. Di bawah ini kita memiliki subset dari bundel yang disebut deploy
.
name : deploy
version : 0.0.1
permissions :
- production_deploy
commands :
deploy :
description : " Deploys to the chosen environment. "
executable : [ "/bin/deploy" ]
rules :
- with arg[0] == "production" must have deploy:production_deploy
Seperti yang Anda lihat, contoh di atas menyertakan satu perintah, yang juga disebut deploy
. Salah satu aturannya menyatakan bahwa setiap pengguna yang meneruskan "produksi" sebagai parameter harus memiliki izin production_deploy
(dari bundel deploy
).
Informasi lebih lanjut tentang izin dan aturan dapat ditemukan di Panduan Gort:
Gort menyediakan sistem templating canggih yang memungkinkan Anda mengontrol penyajian informasi apa pun yang dikirim ke pengguna, termasuk pesan sistem, serta keluaran perintah dan pesan kesalahan.
Terlebih lagi, templat dapat ditentukan pada tingkat aplikasi dalam konfigurasi, atau pada bundel atau bahkan tingkat perintah dalam konfigurasi bundel individual.
Templat Gort menggunakan sintaks templat Go untuk memformat keluaran dengan cara tanpa obrolan. Misalnya, templat perintah yang sangat sederhana mungkin terlihat seperti berikut:
{{ text | monospace true }}{{ .Response.Out }}{{ endtext }}
Templat ini menampilkan respons perintah ( .Response.Out
) sebagai teks berspasi tunggal, yang mungkin terlihat seperti berikut:
Templat yang sedikit lebih rumit, ini templat kesalahan perintah (sebenarnya default), ditunjukkan di bawah.
{{ header | color "#FF0000" | title .Response.Title }}
{{ text }}The pipeline failed planning the invocation:{{ endtext }}
{{ text | monospace true }}{{ .Request.Bundle.Name }}:{{ .Request.Command.Name }} {{ .Request.Parameters }}{{ endtext }}
{{ text }}The specific error was:{{ endtext }}
{{ text | monospace true }}{{ .Response.Out }}{{ endtext }}
Yang ini mencakup header dengan warna dan judul, serta beberapa teks monospace dan standar bergantian. Dalam hal ini, ini akan memformat kesalahan perintah seperti berikut:
Anda akan melihat beberapa referensi ke .Response
: ini adalah referensi ke amplop respons , struktur data yang dapat diakses dari templat apa pun yang menyediakan semua data dan metadata di sekitar satu permintaan perintah, eksekusi, dan respons.
Informasi lebih lanjut tentang pencatatan audit dapat ditemukan di Panduan Gort:
Gort mendukung Slack dan Discord sebagai penyedia obrolan kelas satu.
Setiap penyedia obrolan yang didukung memiliki bagian khusus dalam konfigurasinya. Perhatikan bahwa masing-masingnya adalah sebuah daftar, jadi Anda tidak hanya dapat berinteraksi dengan Slack dan Discord dari pengontrol Gort yang sama, tetapi Anda juga dapat berinteraksi dengan beberapa instance dari masing-masingnya jika Anda mau!
Setelah Anda membuat pengguna bot sesuai dengan petunjuk yang diberikan di Mulai Cepat Gort, administrator hanya perlu membuat pengguna Gort (jika Anda belum melakukannya), dan memetakan pengguna Gort tersebut ke ID pengguna penyedia obrolan, seperti yang ditunjukkan di bawah:
$ gort user create mtitmus --email [email protected] --name " Matt Titmus " --password REDACTED
User " mtitmus " created.
$ gort user list
USER NAME FULL NAME EMAIL
admin Gort Administrator gort@localhost
mtitmus Matt Titmus [email protected]
$ gort user map mtitmus Slack U012P123456
User " mtitmus " mapped to " Slack:U012P123456 " .
$ gort user info mtitmus
Name mtitmus
Full Name Matt Titmus
Email [email protected]
Groups < undefined >
ADAPTER ID MAPPING
Slack U012P123456
Sejak saat itu, setiap perintah yang dimasukkan oleh pengguna obrolan yang dipetakan akan dikaitkan dengan pengguna Gort tersebut!
Semua aktivitas perintah dikeluarkan sebagai peristiwa log berkardinalitas tinggi (ditunjukkan di bawah) dan dicatat dalam log audit yang disimpan dalam database Gort.
Ambil contoh, pengguna yang menjalankan perintah !bundle list
dari Slack:
Ini akan menghasilkan keluaran log yang mirip dengan berikut:
INFO [49594] Triggering command adapter.name=Gort bundle.default=false bundle.name=gort bundle.version=0.0.1
command.executable="[/bin/gort bundle]" command.name=bundle
command.params=list gort.user.name=admin provider.channel.id=C1238A01234
provider.channel.name=gort-dev [email protected]
provider.user.id=U012P123456 trace.id=476b3089c8ce0d38a2915a3b58fde032
Seperti yang Anda lihat, peristiwa kaya ini meliputi:
Perhatikan bahwa contoh ini menggunakan format "dapat dibaca manusia" agar mudah dibaca. Dalam mode produksi, Gort menghasilkan peristiwa log yang dikodekan JSON.
Informasi lebih lanjut tentang pencatatan audit dapat ditemukan di Panduan Gort:
Untuk informasi lebih lanjut, lihat Panduan Memulai Cepat di Panduan Gort.
Biner gort
juga berfungsi sebagai CLI administrasi pengontrol.
Klien gort
menggunakan file konfigurasi berformat YAML, yang biasanya terletak di file profile
di direktori .gort
di direktori home Anda. Di sinilah Anda dapat menyimpan kredensial koneksi untuk memungkinkan gort
berinteraksi dengan REST API Pengontrol Gort.
Contoh file .gort/profile
mungkin terlihat seperti ini:
defaults :
profile : gort
gort :
url : https://gort.mycompany.com:4000
password : " seekrit#password "
user : me
preprod :
url : https://gort.preprod.mycompany.com:4000
password : " anotherseekrit#password "
user : me
Komentar dimulai dengan karakter #
; jika kata sandi Anda berisi #
, lingkari seluruh kata sandi dalam tanda kutip, seperti yang diilustrasikan di atas.
Anda dapat menyimpan beberapa "profil" dalam file ini, dengan nama berbeda untuk masing-masing profil (di sini, kami memiliki gort
dan preprod
). Mana pun yang dicatat sebagai default (di bagian defaults
) akan digunakan oleh gort
. Namun, Anda dapat meneruskan opsi --profile=$PROFILE
ke gort
untuk menggunakan kumpulan kredensial yang berbeda.
Meskipun Anda dapat menambahkan profil ke file ini secara manual, Anda juga dapat menggunakan perintah gort profile create
untuk membantu.
Eksekusi gort
berisi sejumlah perintah dan sub-perintah. Bantuan tersedia untuk semuanya dengan meneruskan opsi --help
. Mulailah dengan gort --help
, dan mulai dari sana.
Gort sedang dalam kondisi perkembangan aktif dan berat. Tanggal pencapaian berbagai pencapaian tercantum di bawah ini. Jumlah dan fokus pencapaian saat ini dan masa depan dapat berubah.