Skip to content

Releases: slackapi/python-slack-sdk

version 3.19.2

27 Oct 09:17
Compare
Choose a tag to compare

Changes

  • #1282 Add request_file_info arg to files_upload_v2 method - Thanks @seratch @eddyg
  • #1278 Improve clarity of 'content' error message for files_upload_v2 - Thanks @eddyg
  • #1283 Improve typing when using 'get' on an API response - Thanks @eddyg
  • #1284 Add Python 3.11 support - Thanks @seratch
  • #1281 Fix selected_option type hint - Thanks @taekop

version 3.19.1

06 Oct 04:27
Compare
Choose a tag to compare

Changes

  • Improve WebClient#files_upload_v2() to use given filename as the default title value - Thanks @seratch @mattpr

version 3.19.0

05 Oct 05:00
Compare
Choose a tag to compare

New Features

files.upload v2 in WebClient / AsyncWebClient

We've received many reports on the performance issue of the existing files.upload API (refer to #1191 #1165 for details). So, to cope with the problem, our platform team decided to unlock a new way to upload files to Slack via public APIs. To utilize the new approach, developers need to implement the following steps on their code side:

  1. Call WebClient#files_getUploadURLExternal() method to receive a URL to use for each file
  2. Perform an HTTP POST request to the URL you received in step 1 for each file
  3. Call WebClient#files_completeUploadExternal() method with the pairs of file ID and title to complete the whole process, plus share the files in a channel
  4. If you need the full metadata of the files, call WebClient#files_info() method for each file UPDATE: Since v3.23.0, this API call is no longer required

We do understand that writing the above code requires many lines of code. Also, the existing WebClient#files_upload() users have to take a certain amount of time for migration. To mitigate the pain, we've added a wrapper method named WebClient#files_upload_v2() on the SDK side.

Also, in addition to the performance improvements, another good news is that 3rd party apps can now upload multiple files at a time!

See the following code examples demonstrating how the wrapper method works:

import os
from slack_sdk import WebClient
client = WebClient(token=os.environ["SLACK_BOT_TOKEN"])

# Legacy way
response = client.files_upload(
    file="./logo.png",
    title="New company logo",
    channels=["C12345"],
    initial_comment="Here is the latest version of our new company logo :wave:",
)
response.get("file")  # returns the full metadata of the uploaded file

# New way - the same parameters works in most cases
response = client.files_upload_v2(
    file="./logo.png",
    title="New company logo",
    # Note that channels still works but going with channel="C12345" is recommended
    # channels=["C111", "C222"] is no longer supported. In this case, an exception can be thrown 
    channels=["C12345"],
    initial_comment="Here is the latest version of our new company logo :wave:",
)
response.get("file")  # returns the full metadata of the uploaded file

# New way with multiple files!
response = client.files_upload_v2(
    file_uploads=[
        {
            "file": "./logo.png",
            "title": "New company logo",
        },
        {
            "content": "Minutes ....",
            "filename": "team-meeting-minutes-2022-03-01.md",
            "title": "Team meeting minutes (2022-03-01)",
        },
    ],
    channel="C12345",
    initial_comment="Here is the latest version of our new company logo :wave:",
)
response.get("files")  # returns the full metadata of all the uploaded files

When migrating to the v2 method, please note that the new method requires both files:write and files:read scopes. If your existing apps have only files:write scope for uploading files, you need to add files:read to the scopes plus re-install the app to issue an updated token. UPDATE: Since v3.23.0, files:read scope is no longer required.

Changes


version 3.18.5

04 Oct 04:54
Compare
Choose a tag to compare

version 3.18.4

30 Sep 01:18
Compare
Choose a tag to compare

Changes


version 3.18.3

06 Sep 06:45
Compare
Choose a tag to compare

Changes

  • #1262 Fix #1261 blocks/attachments as str for chat.* API calls should be clearly supported - Thanks @seratch

version 3.18.2

01 Sep 03:11
Compare
Choose a tag to compare

Changes


version 3.18.1

25 Jul 04:55
Compare
Choose a tag to compare

Changes

Document Changes


version 3.18.0

19 Jul 01:58
Compare
Choose a tag to compare

Changes


version 3.17.2

22 Jun 04:31
Compare
Choose a tag to compare

Changes