பாட்களும் இடைவினை சேய்திகளும்
பாட் கணக்கு என்பது ஒரு நிரலுக்காக உருவாக்கப்பட்ட பயனர். அதற்கு தனிப் பெயர், படமும் டோக்கன்களும் உள்ளன, மேலும் அதன் பெயருக்கு அருகில் BOT குறிப்பு காட்டப்படும். இந்தப் பக்கம் சேய்திகளின் இடைவினை பகுதிகளையும் — பொத்தான்கள், மெனுவ்கள், டயலாக்கள் — எந்தவொரு இணைப்பும் பயன்படுத்தக்கூடியவற்றையும் விளக்குகிறது.
ஏன் பாட் கணக்கு
- அதன் சேய்திகள் ஒரு சகாபயனரின் கணக்கிலிருந்து அல்லாமல், பாட் குறிப்புடன் தெளிவான அடையாளத்திலிருந்து வருகின்றன.
- அதை அமைத்தவர் பங்கை மாற்றினாலும் அல்லது வெளியேறினாலும் (சேவையகம் முடக்கப்பட்ட உரிமையாளர்களின் பாட்களை முடக்காவிட்டால், கீழே காண்க) அதன் டோக்கன்கள் செயல்படத் தொடரும்.
- பாட்கள் கடவுச்சொல்லால் உள்நுழைய முடியாது, மேலும் அவை இணையப் பயன்பாட்டை ஒருபோதும் பார்க்காது.
Todo அல்லது Playbooks போன்ற பாட்களைப் போல, பயன்பாடுகள் தங்கள் சொந்த பாட்களை பிளக்-இன் API மூலம் (EnsureBotUser) உருவாக்குகின்றன.
பாட் கணக்குகளை இயக்குதல்
அமைப்பு நிர்வாகி அமைப்பு கன்சோல் › இணைப்புகள் › பாட் கணக்குகள் பகுதியில் பாட் கணக்கு உருவாக்கத்தை இயக்கு (ServiceSettings.EnableBotAccountCreation, AM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION) என்பதை இயக்குகிறார். இது இயல்பாக அணைக்கப்பட்டிருக்கும். அமைப்பு நிர்வாகிகள் மட்டுமே பாட்களை உருவாக்க முடியும்; அல்லது அனுமதி அமைப்புகளில் மற்ற பங்குகளுக்கு அந்த உரிமையை வழங்கினால் மட்டுமே.
அதே பக்கத்தில், உரிமையாளர் முடக்கப்படும்போது பாட் கணக்குகளை முடக்கு (ServiceSettings.DisableBotsWhenOwnerIsDeactivated, இயல்பாக இயக்கப்பட்டது) என்பது, அதன் உரிமையாளரின் கணக்கு முடக்கப்படும்போது பாட்களை முடக்குகிறது.
பாட்களை உருவாக்குதல்
- வலது மேலே உள்ள உங்கள் அவடாரைத் திறந்து, பின்னர் இணைப்புகள் › பாட் கணக்குகள், பின்னர் பாட் கணக்கை சேர் என்பதைத் தேர்ந்தெடுக்கவும்.
- ஒரு பயனர் பெயர் (குறைந்த எழுத்துகள், எண்கள், புள்ளிகள், கோடுகள் மற்றும் அடிக்குறிகள்) மற்றும் தேவைப்பட்டால் பாட் ஐகன், காட்சிப் பெயர் மற்றும் விளக்கம் ஆகியவற்றை உள்ளிடவும்.
- பங்கு ஐத் தேர்ந்தெடுக்கவும்: உறுப்பினர், அல்லது சேவையகத்தை நிர்வகிக்கும் பாட்களுக்கு அமைப்பு நிர்வாகி. பாட்களுக்கு அவைக்குத் தேவையான குறைந்த அளவு உரிமைகளை மட்டுமே வழங்கவும்.
- அது எல்லா பொது சேனல்களிலும் பதிவு செய்ய அனுமதிக்க post:channels ஐ தேர்ந்தெடுக்கவும், அல்லது உறுப்பினராக இல்லாமல் தனியார் சேனல்கள் மற்றும் நேரடி செய்திகளை உள்ளடக்கிய எல்லா சேனல்களிலும் பதிவு செய்ய post:all ஐ தேர்ந்தெடுக்கவும்.
- இதன் இயல்பு டோக்கன் காலாவதியாகும்போது அமைக்கவும், பின் பாட் கணக்கை உருவாக்கு ஐத் தேர்ந்தெடுக்கவும்.
- காண்பிக்கப்ட அக்செஸ் டோகனை நகலெடுங்க. இது மீண்டும் காண்பிக்கப்டா.
பின்னாள், பாட்டின் வரிசையில் புதிய டோக்கனை உருவாக்கு சொல்லி டோக்கனை உருவாக்கலாம்; ஒவ்வொரு டோக்கனையும் முடக்கவோ அழிக்கவோ முடியும். தனிப்பட்ட அணுகல் டோக்கன்கள் மக்களுக்கு முடக்கப்பட்டிருந்தாலும் பாட்ட் டோக்கன்கள் வேலை செய்யும்.
API மூலம்:
# create the bot (you become its owner)
curl -X POST https://chat.example.com/api/v4/bots \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"username": "deploy-bot", "display_name": "Deploy", "description": "Posts deployments"}'
# give it a token
curl -X POST https://chat.example.com/api/v4/users/$BOT_USER_ID/tokens \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"description": "deploy pipeline"}'
கட்டளை வரிசையிலிருந்து, நிர்வாகியாக உள்நுழைந்து (உள்ளூர் முறையில் இல்லாமல்): amctl bot create deploy-bot --display-name Deploy --with-token --expires-in 90d. மற்ற முனைகள் (endpoints): GET /api/v4/bots, PUT /api/v4/bots/{bot_user_id}, POST /api/v4/bots/{bot_user_id}/disable மற்றும் /enable, அதன் உரிமையாளரை மாற்ற POST /api/v4/bots/{bot_user_id}/assign/{user_id}.
பாட்டை (bot) சமூகங்களிலும் சேனல்களிலும் சேர்க்கவும்
புதிய பாட் எந்த சமூகத்திலும் இல்லை. அதை ஒரு நபரைச் சேர்க்கும் போல, சமூகத்தின் உறுப்பினர் மேலாண்மையிலிருந்து அல்லது API மூலம் சேர்க்கவும்:
curl -X POST https://chat.example.com/api/v4/teams/$TEAM_ID/members \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"team_id": "'$TEAM_ID'", "user_id": "'$BOT_USER_ID'"}'
curl -X POST https://chat.example.com/api/v4/channels/$CHANNEL_ID/members \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"user_id": "'$BOT_USER_ID'"}'
post:channels அல்லது post:all உரிமையுள்ள பாட் உறுப்பினராக இல்லாமலும் பதிவிட முடியும், ஆனால் அது சேர்ந்துள்ள சேனல்களுக்கான WebSocket நிகழ்வுகளை மட்டுமே பெறும்.
பாட்டாக (bot) பதிவிடுதல்
எந்தவொரு API அழைப்பிலும் பாட்டின் டோக்கனைப் (token) பயன்படுத்தவும்; POST /api/v4/posts அதிகம் பயன்படுத்தப்படுகிறது (மேலும் பார்க்க முதன்மை வளங்கள்). ஒருவருக்கு நேரடியாக எழுத, முதலில் நேரடிக் கடிதச் சேனலை (direct message channel) திறக்கவும்:
# returns the channel; use its "id" as channel_id
curl -X POST https://chat.example.com/api/v4/channels/direct \
-H "Authorization: Bearer $BOT_TOKEN" -H 'Content-Type: application/json' \
-d '["'$BOT_USER_ID'", "'$USER_ID'"]'
மக்கள் சொல்வதற்கு பதிலளிக்க, பாட்டின் டோக்கனைப் பயன்படுத்தி WebSocket-ஐ பின்தொடர்ந்து, உங்களுக்கு முக்கியமான posted நிகழ்வுகளுக்கு பதிலளிக்கவும். சுழற்சிகளை (loops) தவிர்க்க, பாட்டின் சொந்த செய்திகளை புறக்கணிக்கவும்.
ஒரே ஒரு நபருக்கு மட்டும் தெரியும் செய்தி (தற்காலிக செய்தி) POST /api/v4/posts/ephemeral மற்றும் {"user_id", "post": {"channel_id", "message"}} மூலம் அனுப்பப்படுகிறது. இது create_post_ephemeral உரிமையைத் தேவைப்படுகிறது, இது இயல்பாக அமைப்பு நிர்வாகிகளுக்கு மட்டுமே உண்டு. ஒருங்கிணைப்புகள் (integrations) பொதுவாக ஸ்லாஷ் கட்டளைகளுக்கு (slash commands) மற்றும் பொத்தான்களுக்கு பதிலளிக்கும் போது தற்காலிக செய்திகளை அனுப்புகின்றன.
செயல்பாட்டு செய்திகள்: பொத்தான்கள் மற்றும் மென்கள்
இணைப்புகளுடன் (attachments) கூடிய எந்த செய்தியும் செயல்களைக் கொண்டிருக்க முடியும்: பொத்தான்கள், தேர்ந்தெடுக்க மென்கள். இவை API மூலம், வெப்கூக்குகள் (webhooks) மற்றும் ஸ்லாஷ் கட்டளை பதில்களில் பதிவிடப்பட்ட செய்திகளில் செயல்படுகின்றன. யாராவது ஒன்றைப் பயன்படுத்தும்போது, Antimatter உங்கள் ஒருங்கிணைப்பின் URL-ஐ அழைக்கிறது.
{
"channel_id": "…",
"message": "Deploy **api 2.4.0** to production?",
"props": {
"attachments": [{
"actions": [
{
"id": "approve",
"type": "button",
"name": "Approve",
"style": "primary",
"integration": {"url": "https://deploy.example.com/actions", "context": {"release": "2.4.0", "action": "approve"}}
},
{
"id": "env",
"type": "select",
"name": "Pick an environment",
"options": [{"text": "Staging", "value": "staging"}, {"text": "Production", "value": "production"}],
"integration": {"url": "https://deploy.example.com/actions", "context": {"release": "2.4.0", "action": "env"}}
}
]
}]
}
}
type:buttonஅல்லதுselect.id: எழுத்துக்கள், எண்கள், கோடுகள் (dashes) மற்றும் அடிக்கோடுகள் (underscores), செய்தியின் ஒவ்வொரு செயலுக்கும் வேறுபட்டதாக இருக்க வேண்டும். இதை விட்டுவிட்டால், அது உருவாக்கப்படும்.style(பொத்தான்கள்):default,primary,success,good,warning,danger, அல்லது ஒரு hex நிறம்.options(மென்கள்), அல்லதுdata_source: நபரை அல்லது சேனலைத் தேர்ந்தெடுக்கusersஅல்லதுchannels.default_optionஒரு மதிப்பை முன்னரே தேர்ந்தெடுக்கிறது.integration.url: கிளிக் அனுப்பப்படுவது. ஒரு செயலி (பிளகின்) தனது சொந்த வழியை, எடுத்துக்காட்டாக/plugins/com.example.deploy/actionsபோன்றதைப் பயன்படுத்தலாம்.integration.contextஉங்களுடையது: அது கிளிக்குடன் திரும்பி வருகிறது, மற்றும் கிளையண்டுகள் அதைக் காணாது.
உங்கள் இணைப்பால் பெறப்படும் கோரிக்கை
{
"user_id": "…",
"user_name": "priya",
"channel_id": "…",
"channel_name": "releases",
"team_id": "…",
"team_domain": "lumen-labs",
"post_id": "…",
"trigger_id": "…",
"type": "button",
"context": {"release": "2.4.0", "action": "approve"}
}
ஒரு மெனுவிற்கு, type என்பது select ஆகவும், context.selected_option என்பது தேர்ந்தெடுக்கப்பட்ட மதிப்பைக் கொண்டுள்ளது.
உங்கள் பதில்
{
"update": {"message": "Deploy of **api 2.4.0** approved by @priya", "props": {}},
"ephemeral_text": "Done. The deploy starts in a minute."
}
update: பயன்படுத்தப்பட்ட பின்னர் பொத்தான்களை அகற்றுவதற்கு (வெற்றுprops) போன்றவற்றிற்காக, செய்தியின் உரை மற்றும் பண்புகளை மாற்றுகிறது.ephemeral_text: கிளிக் செய்த நபர் மட்டுமே காணும் செய்தி.goto_location: திறக்க வேண்டிய URL.- வெற்று உடல் எதுவும் மாற்றாது.
சர்வர், இணைப்பு கோரிக்கை நேரம் முடிவு அனுமதிக்கும் வரை (இயல்பாக 30 வினாடிகள்) காத்திருக்கும். தனியார் நெட்வொர்க் முகவரிகளில் உள்ள இணைப்பு URL-கள், வெப்க்குக்கள்கள்க்கு போல, அமைப்பு நிர்வாகியால் அனுமதிக்கப்பட வேண்டும்.
உரையாடல்கள்
ஒரு உரையாடல் என்பது சாட்டின் மீது திறக்கப்படும் ஒரு படிவம். அது சமீபத்தில் நபர் செய்த ஏதாவது (ஒரு ஸ்லாஷ் கட்டளையாக அல்லது ஒரு பொத்தானாக) பதிலாக மட்டுமே திறக்கப்படலாம், ஏனெனில் அது கோரிக்கையின் trigger_id ஐத் தேவைப்படுகிறது. trigger_id என்பது இணைப்பு கோரிக்கை நேரம் முடிவதற்குள் செல்லுபடியாகும்.
curl -X POST https://chat.example.com/api/v4/actions/dialogs/open \
-H 'Content-Type: application/json' \
-d '{
"trigger_id": "'$TRIGGER_ID'",
"url": "https://deploy.example.com/dialog",
"dialog": {
"callback_id": "new-release",
"title": "New release",
"introduction_text": "Fill in the release details.",
"submit_label": "Create",
"notify_on_cancel": false,
"state": "anything you want back",
"elements": [
{"display_name": "Version", "name": "version", "type": "text", "placeholder": "2.4.0"},
{"display_name": "Notes", "name": "notes", "type": "textarea", "optional": true},
{"display_name": "Environment", "name": "env", "type": "select",
"options": [{"text": "Staging", "value": "staging"}, {"text": "Production", "value": "production"}]},
{"display_name": "Owner", "name": "owner", "type": "select", "data_source": "users"},
{"display_name": "Notify the channel", "name": "notify", "type": "bool", "default": "true"}
]
}
}'
| உருவக வகை | அது காட்டும் விஷயம் |
|---|---|
text | ஒரு வரிப்புலம். subtype: text, email, number, password, tel அல்லது url. min_length மற்றும் max_length அதைக் கட்டுப்படுத்துகின்றன. |
textarea | பல வரிப்புலம். |
select | ஒரு பட்டியல்: options, அல்லது data_source users, channels, அல்லது data_source_url உடன் dynamic. multiselect பல மதிப்புகளை அனுமதிக்கிறது. |
bool | ஒரு சரிபார்ப்புப் பெட்டி. |
radio | options இல் இருந்து ஒரு தேர்வு. |
date, datetime | ஒரு தேதி, அல்லது தேதி மற்றும் நேரம். |
ஒவ்வொரு உருவகமும் display_name, name, help_text, placeholder, default மற்றும் optional ஐ ஏற்கிறது.
நபர் சமர்ப்பிக்கும்போது, Antimatter உரையாடலின் url க்கு POST செய்கிறது:
{
"type": "dialog_submission",
"callback_id": "new-release",
"state": "anything you want back",
"user_id": "…",
"channel_id": "…",
"team_id": "…",
"submission": {"version": "2.4.0", "notes": "", "env": "staging", "owner": "…", "notify": true},
"cancelled": false
}
உரையாடலை மூட ஒரு வெற்று உடலுடன் பதிலளிக்கவும், அல்லது அதை திறந்த நிலையில் வைத்து என்ன தவறு என்று காட்டவும்:
{"errors": {"version": "This version already exists."}}
{"error": "…"} முழு படிவத்திற்கும் ஒரு செய்தியைக் காட்டுகிறது. notify_on_cancel உடன், உரையாடலை மூடுவது "cancelled": true ஐ அனுப்புகிறது. செயலிகளில் உரையாடல்கள் அதே முறையில் செயல்படுகின்றன: பிளகின் API இன் OpenInteractiveDialog அதே கோரிக்கையை ஏற்கிறது.