כיצד לבנות סלוקבוט בסיסי: מדריך למתחילים

עדכון: קוד והדרכה עודכנו ב- 28 ביוני כדי לשקף שינויים ב- API של Slack .

Slackbots: מדוע להשתמש בהם?

לפני שנכנס לחלק הדרכה של פוסט זה, בואו נסתכל מדוע זה יכול להיות פרויקט וכלי ראוי.

רפיון הוא כלי הפופולרי יותר ויותר לתקשורת ברחבי הצוות. זה גדל לכלול תוספים לכלי ניהול פרויקטים אחרים שנמצאים בשימוש נרחב, כמו JIRA, Google Drive וכדומה. כל משתמש רפוי יודע - ככל שתוכל לעשות יותר מתוך השיחה, כן ייטב.

השימושים הנפוצים בטווח slackbot נעים ממודיע פשוט כאשר משימה הושלמה (כמו בניית מבחן, או כאשר ארוחת הצהריים שלך מוכנה) וכלה בבוטים אינטראקטיביים המבוססים על כפתורים המבצעים פקודות על פי רצון המשתמש. אתה יכול לבנות מנגנוני סקרים, בוטים לשיחה ועוד.

הגדרת סביבת תכנות פיתון

אם אתה משתמש ב- Windows ולא השתמשת בעבר בפייתון, יהיה עליך להתקין אותו. משתמשי לינוקס / מק: יוניקס מגיעה עם פיתון!

לאחר ההתקנה, הפעל את המסוף שלך והקלד pythonאו python3(אם יש לך מספר התקנות) כדי לוודא שהוא עובד ונמצא שם.

בדוק גם אם יש לך עורך טקסט טוב לקוד: נשגב ואטום הם אפשרויות נהדרות.

אופציונלי: יכול להיות גם שימושי לעבוד בסביבה וירטואלית - זה נוהג טוב כשיש לך הרבה תלות.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

עליך גם למזג את ההדרכה של GitHub ולהשכפל למכונה המקומית שלך, מכיוון שנשתמש בקוד זה כמסגרת להדרכה זו.

לשם כך, עבור אל ה- repo ולחץ Forkעל שמאל למעלה. ריפו המזלג צריך להיות / slackbot-tutorial . Clone or downloadלחץ על הכפתור הירוק בצד ימין מתחת לסרגל הסטטיסטיקה והעתק את כתובת האתר. חזור למסוף כדי לשכפל את המאגר:

cd Desktop/ git clone //github.com/yourusername/slackbot-tutorial.git cd slackbot-tutorial/ sublime . (or open your text editor and open this directory)

יישומים רפויים

ישנן שתי דרכים ליצור את slackbot שלך: בוטים עצמאיים או יישומי Slack. אפליקציות מאפשרות מגוון רחב יותר של פונקציונליות בהמשך, והיא המסלול המומלץ של Slack ליצירת משתמש בוט.

עבור אל //api.slack.com/apps והקש Create New Appבצד ימין למעלה. תן לו שם ובחר סביבת עבודה שבה תוכל ליצור ערוץ לבדיקת הבוט שלך. תמיד תוכל להגדיר מחדש את הבוט שלך לסביבת עבודה אחרת מאוחר יותר, או אפילו לפרסם אותו בספריית האפליקציות Slack.

אני ממליץ ליצור ערוץ #test בסביבת עבודה שאתה יוצר רק למטרות פיתוח, או כזה שיש בו מעט יחסית משתמשים שלא אכפת להם שתבדוק משהו שם.

הדבר הראשון שתרצה לעשות הוא להשיג את אסימון הבוט. כשתגיע לדף שלמעלה, לחץ על בוטים. הוסף כמה טווחים; אלה קובעים אילו הרשאות יהיה למשתמש הבוטים של האפליקציה שלך. כדי להתחיל, צ'אט: כתובוim: לכתובהם כנראה מספיק.

עכשיו, כדי להשיג את האסימונים שלך, תרצה לעבור OAuth & Permissionsלסרגל הצד השמאלי.

כאן תוכל Install the App to the Workspaceליצור את האסימונים הדרושים. ככלל אצבע, אסימוני בוט מתחילים עםxoxb-.

תרצה גם את סוד ההפעלה , שנמצא תחת מידע בסיסי> אישורי אפליקציה.

מתנהג בתור הבוט שלך

כעת יש לך את האישורים הדרושים לביצוע שיחות API ולפעול כבוט שלך. כדי לבדוק זאת, הפעל מסוף והפעל אותו (עם האסימון ושם הערוץ הנכונים):

curl -X POST \ -H 'Authorization: Bearer xoxb-your-token' \ -H 'Content-type: application/json;charset=utf-8' \ --data '{"channel":"#test","text":"Hello, Slack!"}' \ //slack.com/api/chat.postMessage

אם אתה נכנס לערוץ זה בסביבת העבודה הרפויה שלך, אתה אמור לראות כעת הודעה מהבוט שלך! זה עתה הגשת בקשת HTTP POST - ביקשת משרת לפרסם הודעה איפשהו.

תכנות הבוט

אנו רוצים לעשות את האמור לעיל באופן פרוגרמטי. ישנן מספר דרכים שונות בהן אתה יכול להגדיר slackbot. אסקור את הדברים הבאים:

  • מפעילים מעת לעת (על פי לוח זמנים) כדי לומר משהו
  • / פקודות קו נטוי

השני דורש שרת שפועל, ואילו הראשון לא.

הודעות מתוזמנות

נניח שאתה מעוניין לשלוח מעת לעת הודעה לאנשהו - אולי בכל יום שני בבוקר. עבור אל עורך הטקסט שבו פתחת slackbot-tutorial.

אתה אמור לראות קובץ scheduled.py. התבונן: sendMessageהיא פונקציה שמפעילה את קריאת ה- API כדי להרפות ומפרסמת הודעה. בתחתית, תראה את השיטה העיקרית: מה מבצע כאשר אתה מריץ את הסקריפט. כאן תראה כמה דברים שיש לציין:

  • SLACK_BOT_TOKENנשלף os.environ['SLACK_BOT_TOKEN']- איך? הפעל export SLACK_BOT_TOKEN="xoxb-your-token"במסוף שלך כדי להגדיר משתנה זה.
  • מתוזמן משמש כאן, ויש לולאה אינסופית שבודקת אירועים בתזמון. כברירת מחדל כאן, קבעתי את sendMessageהפונקציה להתקשר בכל דקה.

כדי לבדוק זאת, חזור למסוף שבו אתה נמצא slackbot-tutorialבספריה והפעל אותו

export SLACK_BOT_TOKEN="xoxb-your-token" python scheduled.py

אתה אמור לראות את הודעות היומן מודפסות. וודא ששינית channel=#testבקוד לשם ערוץ הבדיקה שלך (אם שונה) והוספת את הבוט שלך (בערוץ הרפוי, הקלד /invite @botname. תן לו לרוץ כמה דקות וצפה בהודעות שמופיעות ב- Slack!

זהו, כמובן, יישום בסיסי במיוחד של שולח הודעות מתוזמן - אתה יכול לעשות זאת רק עם slackbot /remind #test “Hello, Slack!” every Monday at 9am.

הכוח האמיתי כאן הוא שאתה יכול להחליף בכל פונקציה עבור sendMessage, מינוף העוצמה של התממשקות עם שירותים חיצוניים באמצעות ממשקי API, עושה מתמטיקה, וכו ולאחר מכן בניית הודעה לפרסום.

פקודות סלאש

This one requires a little more setup — go back to your app settings > Slash Commands. Create a new slash command: for example, /test. For the request URL, you’ll need to either deploy this web server (I use Heroku), or run a local ngrok instance to test it. The latter will run it locally, and is best for testing. You can brew install ngrok or get it from here.

In the starter code repo, look for slashCommand.py to start understanding this method. To start the server, run python server.py. The Request URL to put in Slack will be given by your ngrok instance and the @app.route in your code — it would be something like //a1234b5cde6f.ngrok.io/slack/test (the bold part comes from the route defined in the code). You should be able to test the slash commands in your Slack workspace. From the tutorial code, try /test.

Moving Forward

Now you have a very basic slackbot that either operates on a command or runs every so often. Be creative with how you use it! Think about what else you can link this skeleton to to make it more useful.

Other ways your bot might respond

  1. Actions/responses could be triggered by mentions or certain phrases. This requires running a server and listening the messages somewhere.
  2. You bot could be conversational, and might contribute to threads. Check out some NLP to get started on having intelligible conversation! Word2Vec + TensorFlow or Keras might be a place to start. DialogFlow is also great.
  3. Link it up with some other APIs. Maybe you want to be able to interact with a Google Sheet and run some calculations. You might want to send other users a message based on some actions. Integrate buttons. Perhaps you want to trigger messages based on something else.