Skip to content

Releases: slackapi/python-slack-sdk

version 3.2.0

12 Jan 22:07
Compare
Choose a tag to compare

New Features

Socket Mode

This version includes support for Socket Mode, which enables developers to receive interactivy payalods and events through WebSocket connections.

https://api.slack.com/socket-mode

For WebSocket connection handling, there are four implementations including major 3rd party open-source libraries.

PyPI Project SocketModeClient
skack_sdk slack_sdk.socket_mode.SocketModeClient
websocket_client slack_sdk.socket_mode.websocket_client.SocketModeClient
aiohttp (asyncio-based) slack_sdk.socket_mode.aiohttp.SocketModeClient
websockets (asyncio-based) slack_sdk.socket_mode.websockets.SocketModeClient

Here is a minimal working example with the built-in WebSocket client. You can switch to other implementation by changing the imports and adding the extra dependencies (websocket_client, aiohttp, websockets).

import os
from slack_sdk.web import WebClient
from slack_sdk.socket_mode import SocketModeClient

# Initialize SocketModeClient with an app-level token + WebClient
client = SocketModeClient(
    # This app-level token will be used only for establishing a connection
    app_token=os.environ.get("SLACK_APP_TOKEN"),  # xapp-A111-222-xyz
    # You will be using this WebClient for performing Web API calls in listeners
    web_client=WebClient(token=os.environ.get("SLACK_BOT_TOKEN"))  # xoxb-111-222-xyz
)

from slack_sdk.socket_mode.response import SocketModeResponse
from slack_sdk.socket_mode.request import SocketModeRequest

def process(client: SocketModeClient, req: SocketModeRequest):
    if req.type == "events_api":
        # Acknowledge the request anyway
        response = SocketModeResponse(envelope_id=req.envelope_id)
        client.send_socket_mode_response(response)
        # Add a reaction to the message if it's a new message
        if req.payload["event"]["type"] == "message" \
            and req.payload["event"].get("subtype") is None:
            client.web_client.reactions_add(
                name="eyes",
                channel=req.payload["event"]["channel"],
                timestamp=req.payload["event"]["ts"],
            )

# Add a new listener to receive messages from Slack
# You can add more listeners like this
client.socket_mode_request_listeners.append(process)

# Establish a WebSocket connection to the Socket Mode servers
client.connect()

# Just not to stop this process
from threading import Event
Event().wait()

Changes


version 3.1.1

07 Jan 02:37
Compare
Choose a tag to compare

Changes

The following changes are related to documents and tutorial contents:

  • #897 Improve code in the PythOnBoardingBot tutorial - Thanks @stephenfrench9
  • #890 Fix #889 by correcting the team_join event handler in the PythOnBoardingBot tutorial - Thanks @spectreConstantine @seratch

version 3.1.0

02 Dec 02:52
Compare
Choose a tag to compare

New Features

Org-Wide App Installation support

This version includes the changes related to Org-Wide App feature, which is for Enterprise Grid organizations.

https://api.slack.com/enterprise/apps

  • Add a few fields in installation data models (see the following migration guide for details)
  • Switch to use InstallationStore#find_installation from InstallationStore#find_bot in authorize functions
  • Enable Bolt apps to handle new events - team_access_granted / team_access_removed
  • Add is_enterprise_install: bool in context object

Data Model Migration guide

If you're already using a built-in InstallationStore implementation, the following fields in the data row will be expected since v3.1. If your app uses relational database tables, please add the corresponding columns to the tables.

  • is_enterprise_install: bool (true if it is an org-level installation)
  • enterprise_url: Optional[str] (URL; this is available only for org-level installation)
  • enterprise_name: Optional[str] (the name of the installed org; this value is just a snapshot data at the timing of installations. So, it can be changed afterwards)
  • team_name: Optional[str] (the name of the installed workspace)
  • incoming_webhook_channel: Optional[str] (channel name)
  • token_type: Optional[str]

Also, since this version, the built-in InstallationStore based authorize functions try to fetch Installation. The Installation object contains Bot data too. So, you will be able to utilize more fields like user_token, thanks to this change.

If your application does not maintain the data when handling Slack app installations, upgrading to this version may result in errors due to this incompatibility. If you need to continue using Bot over Installation data rows, please consider implementing and using your own Authorize classes.

Changes


version 3.1.0 RC1

01 Dec 11:08
Compare
Choose a tag to compare
version 3.1.0 RC1 Pre-release
Pre-release

Check v3.1.0 release note.

version 3.1.0 beta 1

27 Nov 04:55
Compare
Choose a tag to compare
version 3.1.0 beta 1 Pre-release
Pre-release

v3.1.0 includes org-level installation support (for Enterprise Grid users). The detailed release note will be available soon.

version 3.0.0

09 Nov 17:28
Compare
Choose a tag to compare

This is the first stable version of slack_sdk v3. The remarkable updates in this major version are:

  • Newly added OAuth flow support
  • Better Async/sync separation for WebClient and WebhookClient
  • Renamed packages (from slack to slack_sdk) with deprecation warnings

Refer to the documents for details. The migration guide for slackclient v2.x users is available at https://slack.dev/python-slack-sdk/v3-migration/

version 3.0.0 RC3

07 Nov 14:29
Compare
Choose a tag to compare

This is the third release candidate version of slack_sdk v3.0.0. The remarkable updates in this major version are:

  • Newly added OAuth flow support
  • Better Async/sync separation for WebClient and WebhookClient
  • Renamed packages (from slack to slack_sdk) with deprecation warnings

Refer to the documents for details.

The migration guide for slackclient v2.x users is available at https://slack.dev/python-slack-sdk/v3-migration/

version 3.0.0 RC2

06 Nov 22:59
Compare
Choose a tag to compare

see v3.0.0rc3

version 3.0.0 RC1

27 Oct 06:35
Compare
Choose a tag to compare

This is the first release candidate version of slack_sdk v3.0.0. The remarkable updates in this major version are:

  • Newly added OAuth flow support
  • Better Async/sync separation for WebClient and WebhookClient
  • Renamed packages (from slack to slack_sdk) with deprecation warnings

Refer to the documents for details.

The migration guide for slackclient v2.x users is available at https://slack.dev/python-slack-sdk/v3-migration/

version 3.0.0 beta1

22 Oct 05:47
Compare
Choose a tag to compare
version 3.0.0 beta1 Pre-release
Pre-release

see 3.0.0rc1