Gort هو إطار عمل chatbot مصمم من الألف إلى الياء لشاشات الدردشة.
يجلب Gort قوة سطر الأوامر إلى المكان الذي تتعاون فيه مع فريقك: نافذة الدردشة الخاصة بك. يتيح دعم حزمة الأوامر المفتوحة للمطورين تنفيذ الوظائف باللغة التي يختارونها، بينما يعني التحكم القوي في الوصول أنه يمكنك التعاون حتى في المهام الأكثر حساسية بثقة. التركيز على التوسعة والقدرة على التكيف يعني أنه يمكنك الاستجابة بسرعة لما هو غير متوقع، دون أن يفقد فريقك الرؤية.
يمكن العثور على الوثائق الرسمية هنا: دليل Gort.
تم تصور Gort في البداية على أنه إعادة تنفيذ Go لـ Operable's Cog، وبينما يظل مستوحى بشكل كبير من Cog، فقد ذهب Gort إلى حد كبير في طريقه الخاص.
أثناء مناقشة التصميم الأولية، وجدنا أن العديد من ميزات Cog، مهما كانت مبتكرة، لم يتم استخدامها إلى حد كبير، وأصبح من الصعب توسيع قاعدة التعليمات البرمجية وصيانتها. بالإضافة إلى ذلك، كان لدى لغة التنفيذ - Elixir - عدد قليل نسبيًا من المطورين ذوي الكفاءة. كان الحل، الذي تمت مناقشته لعدة أشهر في مساحة عمل Cog Slack، هو إعادة كتابة Cog من الصفر في Go، وإزالة بعض الوظائف الأقل استخدامًا وتقليل التعقيد في العملية.
لقد أعطانا هذا الفرصة للتفكير وربما إعادة تعريف ما كان من المفترض أن يكون عليه Cog. لاختيار الميزات التي لها معنى، وتجاهل تلك التي لا تفعل ذلك. بهذه الطريقة، يمكن وصف جورت بأنه "الخليفة الروحي" لكوج أكثر من كونه إعادة تنفيذ أمينة.
تؤكد فلسفة تصميم Gort على المرونة والأمان من خلال السماح لك ببناء الأوامر بأي لغة تريدها، باستخدام الأدوات التي تناسبك بالفعل، ويمكنك التحكم بإحكام في من يمكنه استخدامها وكيف.
وبشكل أكثر تحديدًا:
يتم وصف كل من هذه بمزيد من التفاصيل أدناه.
يتفاعل المستخدمون بشكل أساسي مع Gort من خلال الأوامر ، والتي يتم تشغيلها بواسطة حرف الأمر ( !
افتراضيًا) ولكنها بخلاف ذلك متطابقة من الناحية المفاهيمية مع الأوامر التي تم إدخالها في سطر الأوامر.
على سبيل المثال، قد يبدو استخدام أمر echo
كما يلي:
كما هو موضح، يتم ترحيل مخرجات الأوامر الناجحة مرة أخرى بواسطة Gort.
يمكن العثور على مزيد من المعلومات حول الأوامر في دليل Gort:
يتم إنشاء أوامر Gort كصور حاوية، مما يعني أنه يمكنك إنشاؤها بأي لغة تناسبك.
والأكثر من ذلك، نظرًا لأن الملف القابل للتنفيذ الخاص بك يتلقى جميع مدخلات الدردشة تمامًا كما لو تم كتابتها في سطر الأوامر، فيمكنك استخدام أي مترجم سطر أوامر تريده. يمكن أيضًا تنفيذ الأوامر كنصوص Bash، أو باستخدام الأوامر الموجودة، مثل curl
!
يمكن العثور على مزيد من المعلومات حول أوامر الكتابة في دليل Gort:
في Gort، يمكن تثبيت مجموعة من أمر واحد أو أكثر ذات صلة على أنها "حزمة أوامر".
يتم تمثيل الحزمة في YAML، مع تحديد الملف القابل للتنفيذ الذي سيتم استخدامه لكل أمر ومن يُسمح له بتنفيذ كل أمر.
يظهر أدناه ملف حزمة بسيط للغاية.
---
gort_bundle_version : 1
name : echo
version : 0.0.1
image : ubuntu:20.04
author : Matt Titmus
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
يعرض هذا حزمة تسمى echo
، والتي تحدد أمرًا (يسمى أيضًا echo
) وإذنًا يسمى can_echo
. بمجرد التثبيت، يمكن لأي مستخدم لديه إذن echo:can_echo
تنفيذه في Slack.
يمكن العثور على مزيد من المعلومات حول الحزم في دليل Gort:
في Gort، يمكن تعيين المستخدمين بشكل فريد للمستخدمين في واحد أو أكثر من موفري الدردشة. يمكن لمستخدمي Gort أن يكونوا أعضاء في مجموعة واحدة أو أكثر، والتي بدورها يمكن أن يكون لها أي عدد من الأدوار التي يمكن اعتبارها مجموعات من الأذونات الممنوحة. على سبيل المثال، قد يكون المستخدم dave
في مجموعة تسمى developers
. قد يكون لهذه المجموعة دور مرفق باسم deployers
والذي يحتوي على عدد من الأذونات، بما في ذلك الأذونات التي تسمى production_deploy
.
يمكن العثور على مزيد من المعلومات حول الأذونات والقواعد في دليل Gort:
يمكن تطبيق نظام قواعد متطور لكل أمر يحدد من يمكنه استخدامه. يمكن أن تكون هذه التفاصيل دقيقة جدًا، بل إنها قادرة على اتخاذ قرارات الأذونات بناءً على قيم علامات أو معلمات محددة.
يتم تعيين القواعد على مستوى الحزمة، ويمكن أن تكون معقدة للغاية. أدناه لدينا مجموعة فرعية من حزمة تسمى 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
كما ترون، يتضمن المثال أعلاه أمرًا واحدًا، يُسمى أيضًا deploy
. تؤكد قاعدتها الوحيدة أن أي مستخدم يقوم بتمرير "الإنتاج" كمعلمة يجب أن يكون لديه إذن production_deploy
(من حزمة deploy
).
يمكن العثور على مزيد من المعلومات حول الأذونات والقواعد في دليل Gort:
يوفر Gort نظام قوالب متطورًا يسمح لك بالتحكم في عرض أي معلومات يتم إرسالها إلى المستخدمين، بما في ذلك رسائل النظام، بالإضافة إلى مخرجات الأوامر ورسائل الخطأ.
علاوة على ذلك، يمكن تعريف القوالب على مستوى التطبيق في التكوين، أو على مستوى الحزمة أو حتى الأمر في تكوينات الحزمة الفردية.
تستخدم قوالب Gort صيغة قالب Go لتنسيق الإخراج بطريقة لا تعتمد على الدردشة. على سبيل المثال، قد يبدو قالب الأمر البسيط جدًا كما يلي:
{{ text | monospace true }}{{ .Response.Out }}{{ endtext }}
يُصدر هذا القالب استجابة الأمر ( .Response.Out
) كنص أحادي المسافة، والذي قد يبدو كما يلي:
يظهر أدناه قالب أكثر تعقيدًا بعض الشيء، وهو قالب خطأ أمر (في الواقع الافتراضي).
{{ 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 }}
يتضمن هذا رأسًا بلون وعنوان، بالإضافة إلى بعض النصوص أحادية المسافة والنص القياسي. في هذه الحالة، سيؤدي هذا إلى تنسيق خطأ في الأمر على النحو التالي:
ستلاحظ بعض الإشارات إلى .Response
: هذه إشارات إلى مغلف الاستجابة ، وهي بنية بيانات يمكن الوصول إليها من أي قالب يوفر جميع البيانات وبيانات التعريف حول طلب أمر واحد وتنفيذه واستجابة واحدة.
يمكن العثور على مزيد من المعلومات حول تسجيل التدقيق في دليل Gort:
يدعم Gort كلاً من Slack وDiscord كموفري دردشة من الدرجة الأولى.
يحتوي كل موفر دردشة مدعوم على قسم مخصص في التكوين. لاحظ أن كل واحدة منها عبارة عن قائمة، لذا لا يمكنك فقط التفاعل مع كل من Slack وDiscord من نفس وحدة تحكم Gort، ولكن يمكنك التفاعل مع مثيلات متعددة لكل منهما إذا كنت تريد ذلك!
بمجرد إنشاء مستخدم الروبوت وفقًا للتعليمات المقدمة في Gort Quick Start، يحتاج المسؤولون فقط إلى إنشاء مستخدم Gort (إذا لم تكن قد قمت بذلك بالفعل)، وتعيين مستخدم Gort هذا إلى معرف مستخدم موفر الدردشة، كما هو موضح أقل:
$ 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
منذ ذلك الحين، ترتبط أي أوامر يدخلها مستخدم الدردشة المعين بمستخدم Gort هذا!
يتم إصدار جميع أنشطة الأوامر كأحداث سجل ذات عدد كبير من العناصر (كما هو موضح أدناه) ويتم تسجيلها في سجل التدقيق الذي يتم الاحتفاظ به في قاعدة بيانات Gort.
لنأخذ على سبيل المثال مستخدمًا ينفذ أمر !bundle list
من Slack:
سيؤدي هذا إلى إنشاء مخرجات سجل مشابهة لما يلي:
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
وكما ترون فإن هذا الحدث الغني يشمل:
لاحظ أن هذا المثال يستخدم تنسيق "قابل للقراءة البشرية" لسهولة القراءة. في وضع الإنتاج، يقوم Gort بإنشاء أحداث سجل مشفرة بـ JSON.
يمكن العثور على مزيد من المعلومات حول تسجيل التدقيق في دليل Gort:
لمزيد من المعلومات، قم بإلقاء نظرة على دليل البدء السريع في دليل Gort.
يعمل ثنائي gort
أيضًا بمثابة واجهة سطر الأوامر (CLI) لإدارة وحدة التحكم.
يستخدم عميل gort
ملف تكوين بتنسيق YAML، والذي يوجد تقليديًا في ملف profile
في دليل .gort
في الدليل الرئيسي لديك. هذا هو المكان الذي يمكنك فيه تخزين بيانات اعتماد الاتصال للسماح gort
بالتفاعل مع REST API الخاص بوحدة تحكم Gort.
قد يبدو ملف .gort/profile
كمثال كما يلي:
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
تبدأ التعليقات بحرف #
؛ إذا كانت كلمة المرور الخاصة بك تحتوي على #
، فقم بإحاطة كلمة المرور بأكملها بين علامتي اقتباس، كما هو موضح أعلاه.
يمكنك تخزين "ملفات تعريف" متعددة في هذا الملف، باسم مختلف لكل منها (هنا، لدينا gort
و preprod
). سيتم استخدام أيهما يُشار إليه باعتباره الإعداد الافتراضي (في قسم defaults
) بواسطة gort
. ومع ذلك، يمكنك تمرير خيار --profile=$PROFILE
gort
من استخدام مجموعة مختلفة من بيانات الاعتماد.
بينما يمكنك إضافة ملفات تعريف إلى هذا الملف يدويًا، يمكنك أيضًا استخدام أمر gort profile create
للمساعدة.
يحتوي الملف القابل للتنفيذ gort
على عدد من الأوامر والأوامر الفرعية. المساعدة متاحة لهم جميعًا عن طريق تمرير خيار --help
. ابدأ بـ gort --help
، ثم انتقل من هناك.
Gort في حالة من التطور الثقيل النشط. التاريخ الذي تم فيه تحقيق المعالم المختلفة مدرج أدناه. عدد وتركيز المعالم الحالية والمستقبلية عرضة للتغيير.