Slack API: ошибка channel_not_found при использовании chat.postMessage - PullRequest
0 голосов
/ 19 октября 2018

Я написал код для публикации на канале в рабочей области на слабом месте для любого данного канала (при условии, что он существует), но я продолжаю получать ошибку channel_not_found на каналах, которые

1.) Я могу проверитьчто они действительно существуют

2.) Каналы не являются частными, так как перед ними находится символ #, а не блокировка.

Я трижды проверил панель управления своего слабого приложения иустанавливается в рабочую область (проверено также администраторами рабочей области).Я сохранил как токен доступа OAuth (начинается с xoxp), так и токен доступа пользователя OAuth бота (начинается с xoxb) в качестве переменной среды на моем компьютере.Я пытался использовать оба приложения и получал один и тот же результат со следующими разрешениями / областями действия: chat: write: bot, chat: write: user и bot.Я могу отправлять сообщения через веб-хуки, но понимаю, что мне нужно создать веб-хук для каждого канала, на который может публиковать приложение.Это приложение должно быть универсальным и способным направлять сообщения пользователям в зависимости от того, как они хотят обновляться.Любая помощь в поиске, почему каналы не могут быть найдены, будет принята с благодарностью.В следующем фрагменте кода функция post_channel () - это используемая мной тестовая функция, простая смена названий каналов и т. Д.

from slackclient import SlackClient
import os

webhook_url = "a webhook url"


def post_message_channel(text, token, channel, is_name):

    """
    Creates an api call to post to a message to specific channel (private or
    public)and returns the JSON object that is returned by the slack api call.

    :param text: The message to post the slack channel.
    :param token: The slack app token to identify the sender.
    :param title: The title of the message being sent.
    :param channel: The channel to post the message to.
    :param is_name: If true, then the channel param holds a name, else it holds a channel id
    :return: The JSON object that the slack api responds with.
    """
    if is_name:
        formatted_channel = "#" + channel
    else:
        formatted_channel = channel
    slack_client = SlackClient(token)
    output_json = slack_client.api_call(
        "chat.postMessage",
        channels = formatted_channel,
        text = text,
        as_user = 1
    )
    return output_json


def post_channel():
    message = "This is a test for posting to a channel"
    my_token = os.environ["SLACK_BOT_USER_TOKEN"]
    print(post_message_channel(message, my_token, 'file_tracker_test', True))
...