แพลตฟอร์ม Slack เสนอ APIs หลายตัวเพื่อสร้างแอพ Slack API แต่ละตัวมอบความสามารถเป็นส่วนหนึ่งจากแพลตฟอร์มเพื่อให้คุณสามารถเลือกได้เพียงแค่ความต้องการของคุณ SDK นี้มีแพ็คเกจที่สอดคล้องกันสำหรับ API ของ Slack แต่ละตัว พวกเขามีขนาดเล็กและทรงพลังเมื่อใช้อย่างอิสระและทำงานได้อย่างราบรื่นเมื่อใช้ร่วมกันเช่นกัน
เอกสารที่ครอบคลุมเกี่ยวกับการใช้ Slack Python สามารถดูได้ที่ https://tools.slack.dev/python-slack-sdk/
ไม่ว่าคุณจะสร้างแอพที่กำหนดเองสำหรับทีมของคุณหรือรวมบริการของบุคคลที่สามเข้ากับเวิร์กโฟลว์ Slack ของคุณชุดนักพัฒนา Slack สำหรับ Python ช่วยให้คุณสามารถใช้ประโยชน์จากความยืดหยุ่นของ Python เพื่อให้โครงการของคุณทำงานได้โดยเร็วที่สุด
Python Slack SDK อนุญาตให้มีปฏิสัมพันธ์กับ:
slack_sdk.web
: สำหรับการเรียกวิธีการเว็บ APIslack_sdk.webhook
: สำหรับการใช้ webhooks ที่เข้ามาและ response_url
s ใน payloadsslack_sdk.signature
: สำหรับการตรวจสอบคำขอที่เข้ามาจากเซิร์ฟเวอร์ Slack APIslack_sdk.socket_mode
: สำหรับการรับและส่งข้อความผ่านการเชื่อมต่อโหมดซ็อกเก็ตslack_sdk.audit_logs
: สำหรับการใช้บันทึกการตรวจสอบ APIsslack_sdk.scim
: สำหรับการใช้ APIs SCIMslack_sdk.oauth
: สำหรับการใช้งาน Slack Oauth Flowslack_sdk.models
: สำหรับการสร้างส่วนประกอบบล็อก UI โดยใช้ผู้สร้างที่ใช้งานง่ายslack_sdk.rtm
: สำหรับการใช้ RTM APIหากคุณต้องการใช้กิจกรรม API และคุณสมบัติการโต้ตอบของเราโปรดตรวจสอบ Bolt for Python Library รายละเอียดเกี่ยวกับโทเค็นและการรับรองความถูกต้องสามารถพบได้ในคู่มือรับรองความถูกต้องของเรา
คุณกำลังมองหา SlackClient หรือไม่? เว็บไซต์อยู่ที่นี่เหมือนก่อน อย่างไรก็ตามโครงการ SlackClient อยู่ในโหมดการบำรุงรักษาในขณะนี้และ slack_sdk
นี้เป็นผู้สืบทอด หากคุณมีเวลาในการโยกย้ายไปยัง Slack_SDK v3 โปรดติดตามคู่มือการย้ายถิ่นของเราเพื่อให้แน่ใจว่าแอปของคุณทำงานต่อไปหลังจากอัปเดต
ห้องสมุดนี้ต้องใช้ Python 3.6 ขึ้นไป หากคุณต้องการ Python 2 โปรดใช้ SlackClient ของเรา - v1.x หากคุณไม่แน่ใจว่าจะตรวจสอบว่าคุณกำลังทำ Python เวอร์ชันใดคุณสามารถตรวจสอบได้โดยใช้สิ่งต่อไปนี้:
หมายเหตุ: คุณอาจต้องใช้
python3
ก่อนคำสั่งของคุณเพื่อให้แน่ใจว่าคุณใช้เส้นทาง Python ที่ถูกต้อง เช่นpython3 --version
python --version
-- or --
python3 --version
เราขอแนะนำให้ใช้ PYPI เพื่อติดตั้งชุดนักพัฒนา Slack สำหรับ Python
$ pip install slack_sdk
เราได้สร้างบทช่วยสอนนี้เพื่อสร้างแอพ Slack ขั้นพื้นฐานในเวลาน้อยกว่า 10 นาที มันต้องใช้ความรู้การเขียนโปรแกรมทั่วไปและพื้นฐานของ Python มันมุ่งเน้นไปที่การโต้ตอบกับ Slack Web API และ RTM API ใช้เพื่อให้คุณทราบวิธีการใช้ SDK นี้
อ่านบทช่วยสอนเพื่อเริ่มต้น!
Slack ให้บริการเว็บ API ที่ให้ความสามารถในการสร้างแอปพลิเคชันที่โต้ตอบกับ Slack ได้หลายวิธี ชุดพัฒนานี้เป็น wrapper ที่ใช้โมดูลที่ทำให้การโต้ตอบกับ API นั้นง่ายขึ้น เรามีตัวอย่างพื้นฐานที่นี่พร้อมการใช้งานทั่วไปบางอย่าง แต่มีรายการทั้งหมดของวิธีการที่มีอยู่ที่นี่ ตัวอย่างรายละเอียดเพิ่มเติมสามารถพบได้ในคู่มือของเรา
หนึ่งในกรณีการใช้งานที่พบบ่อยที่สุดคือการส่งข้อความไปยัง Slack หากคุณต้องการส่งข้อความเป็นแอปของคุณหรือเป็นผู้ใช้วิธีนี้สามารถทำได้ทั้งสองอย่าง ในตัวอย่างของเราเราระบุชื่อช่องอย่างไรก็ตามขอแนะนำให้ใช้ channel_id
หากเป็นไปได้ นอกจากนี้หากผู้ใช้บอทแอปของคุณยังไม่ได้อยู่ในช่องให้เชิญผู้ใช้บอทก่อนที่จะเรียกใช้ตัวอย่างโค้ด (หรือเพิ่ม chat:write.public
ไปยังขอบเขตโทเค็นบอทสำหรับโพสต์ในช่องสาธารณะใด ๆ )
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
response = client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
# Also receive a corresponding status_code
assert isinstance ( e . response . status_code , int )
print ( f"Received a response status_code: { e . response . status_code } " )
ที่นี่เราตรวจสอบให้แน่ใจว่าการตอบกลับจาก Slack เป็นสิ่งที่ประสบความสำเร็จและข้อความนั้นเป็นข้อความที่เราส่งโดยใช้คำสั่ง assert
เราได้เปลี่ยนกระบวนการสำหรับการอัปโหลดไฟล์เป็น Slack ให้ง่ายขึ้นและตรงไปตรงมามาก ตอนนี้คุณสามารถรวมเส้นทางไปยังไฟล์โดยตรงในการเรียก API และอัปโหลดด้วยวิธีนี้
import os
from slack_sdk import WebClient
from slack_sdk . errors import SlackApiError
client = WebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
try :
filepath = "./tmp.txt"
response = client . files_upload_v2 ( channel = 'C0123456789' , file = filepath )
assert response [ "file" ] # the uploaded file
except SlackApiError as e :
# You will get a SlackApiError if "ok" is False
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
รายละเอียดเพิ่มเติมเกี่ยวกับวิธี files_upload_v2
สามารถดูได้ที่นี่
AsyncWebClient
ใน SDK นี้ต้องการ AIOHTTP ภายใต้ประทุนสำหรับคำขอแบบอะซิงโครนัส
import asyncio
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
async def post_message ():
try :
response = await client . chat_postMessage ( channel = '#random' , text = "Hello world!" )
assert response [ "message" ][ "text" ] == "Hello world!"
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
print ( f"Got an error: { e . response [ 'error' ] } " )
asyncio . run ( post_message ())
หากคุณใช้เฟรมเวิร์กเรียกใช้ลูปเหตุการณ์ Asyncio เช่น: Sanic/Jupyter Notebook/ฯลฯ
import os
from slack_sdk . web . async_client import AsyncWebClient
from slack_sdk . errors import SlackApiError
client = AsyncWebClient ( token = os . environ [ 'SLACK_BOT_TOKEN' ])
# Define this as an async function
async def send_to_slack ( channel , text ):
try :
# Don't forget to have await as the client returns asyncio.Future
response = await client . chat_postMessage ( channel = channel , text = text )
assert response [ "message" ][ "text" ] == text
except SlackApiError as e :
assert e . response [ "ok" ] is False
assert e . response [ "error" ] # str like 'invalid_auth', 'channel_not_found'
raise e
from aiohttp import web
async def handle_requests ( request : web . Request ) -> web . Response :
text = 'Hello World!'
if 'text' in request . query :
text = " t " . join ( request . query . getall ( "text" ))
try :
await send_to_slack ( channel = "#random" , text = text )
return web . json_response ( data = { 'message' : 'Done!' })
except SlackApiError as e :
return web . json_response ( data = { 'message' : f"Failed due to { e . response [ 'error' ] } " })
if __name__ == "__main__" :
app = web . Application ()
app . add_routes ([ web . get ( "/" , handle_requests )])
# e.g., http://localhost:3000/?text=foo&text=bar
web . run_app ( app , host = "0.0.0.0" , port = 3000 )
คุณสามารถจัดเตรียมบริบท SSL ที่กำหนดเองหรือปิดใช้งานการตรวจสอบโดยผ่านตัวเลือก ssl
ซึ่งรองรับทั้ง RTM และเว็บไคลเอนต์
สำหรับคำขอ ASYNC ให้ดูเอกสาร AIOHTTP SSL
สำหรับคำขอซิงค์ดูเอกสาร Urllib SSL
พร็อกซีได้รับการสนับสนุนเมื่อทำการร้องขอ Async ส่งตัวเลือก proxy
ซึ่งรองรับทั้ง RTM และเว็บไคลเอนต์
สำหรับคำขอ ASYNC ดูเอกสารพร็อกซี AIOHTTP
สำหรับคำขอซิงค์การตั้งค่าตัวแปร HTTPS_PROXY
Env หรือตัวเลือก proxy
ทำงานได้
ใช้ไคลเอนต์ Async และกำลังมองหาการเพิ่มประสิทธิภาพ? การติดตั้งการพึ่งพาตัวเลือก (AIODNS) อาจช่วยเพิ่มความเร็วในการแก้ไข DNS โดยไคลเอนต์ เราได้รวมไว้เป็นพิเศษที่เรียกว่า "ตัวเลือก":
$ pip install slack_sdk[optional]
import os
from slack_sdk import WebClient
from ssl import SSLContext
sslcert = SSLContext ()
# pip3 install proxy.py
# proxy --port 9000 --log-level d
proxyinfo = "http://localhost:9000"
client = WebClient (
token = os . environ [ 'SLACK_BOT_TOKEN' ],
ssl = sslcert ,
proxy = proxyinfo
)
response = client . chat_postMessage ( channel = "#random" , text = "Hello World!" )
print ( response )
หากคุณย้ายจาก SlackClient v2.x ของ Slack_sdk เป็น v3.x โปรดทำตามคู่มือการย้ายถิ่นของเราเพื่อให้แน่ใจว่าแอปของคุณทำงานต่อไปหลังจากอัปเดต
ตรวจสอบคู่มือการย้ายถิ่นที่นี่!
หากคุณย้ายจาก v1.x ของ SlackClient เป็น v2.x โปรดทำตามคู่มือการย้ายถิ่นของเราเพื่อให้แน่ใจว่าแอปของคุณทำงานต่อไปหลังจากอัปเดต
ตรวจสอบคู่มือการย้ายถิ่นที่นี่!
หากคุณติดอยู่เรามาที่นี่เพื่อช่วย ต่อไปนี้เป็นวิธีที่ดีที่สุดในการรับความช่วยเหลือในการทำงานผ่านปัญหาของคุณ:
ใช้ตัวติดตามปัญหา GitHub ของเราสำหรับการรายงานข้อบกพร่องหรือการร้องขอคุณสมบัติ เยี่ยมชมชุมชน Slack เพื่อรับความช่วยเหลือโดยใช้ชุดนักพัฒนา Slack สำหรับ Python หรือโดยทั่วไปจะผูกพันกับนักพัฒนา Slack เพื่อนของคุณ
เรายินดีต้อนรับการมีส่วนร่วมจากทุกคน! โปรดตรวจสอบคู่มือผู้สนับสนุนของเราสำหรับวิธีการมีส่วนร่วมในวิธีที่เป็นประโยชน์และทำงานร่วมกัน