我有一个端点,我想将其专用于通过传出 Webhook 源自 slack 的请求。
我们是否有 IP 地址或 CIDR 块来提供 IP 白名单?
我正在尝试构建一个用于学习目的的 slack 机器人,但是当我运行脚本时出现此错误 ModuleNotFoundError: No module named 'slackclient'
我尝试安装和卸载,然后重新安装 python -m pip install slackclient
import os
import time
import re
from slackclient import SlackClient
# instantiate Slack client
slack_client = SlackClient(os.environ.get('SLACK_BOT_TOKEN'))
if __name__ == "__main__":
if slack_client.rtm_connect(with_team_state=False):
print("Starter Bot connected and running!")
#Read bot's user ID by calling Web API method 'auth.test'
starterbot_id = slack_client.api_call("auth.test")["user_id"]
while True:
command, channel = parse_bot_commands(slackclient.rtm_read())
if command:
handle_command(command, channel)
time.sleep(RTM_READ_DELAY)
else:
print("Connection failed. Exception traceback printed above.")
(STARTE~1) C:\Users\enest\Desktop\Slack Bot\starterbot>python starterbot.py
Traceback (most recent …Run Code Online (Sandbox Code Playgroud) 我使用传入的webhooks发送消息,但是通过使用类似这样的东西覆盖channelID发送到特定频道(如此处所述:https://api.slack.com/incoming-webhooks )
{
"channel": "#my_channel",
"text": "This message will appear in #other-channel"
}
Run Code Online (Sandbox Code Playgroud)
当我给出我的channelID时能够接收到松弛的消息,但是当我给别人channelID(有效的频道ID)时,我得到了channel_not_found异常.
请告诉我可能出现的问题.
目前是Slack的新功能-我环顾四周,看看是否有Slack命令可以显示Slack频道中的所有在线用户,但没有找到。
定制的slack命令会调用Slack API方法吗?users.getPresence是必经之路,还是还有另一种方法?
我看到了大量有关制作自定义Slack命令的文档,但我正在尝试为现有命令命名。
IE,我们有/bluejeans启动Bluejeans会议的命令,但是由于内部的一个玩笑,我希望给别名起个别名,这样也可以开始/bleujean。
我在GUI中找不到位置,我是否缺少明显的东西?
在Slack中,有没有办法看到属于该频道的所有成员?我创建了一个频道示例#groundzero,但我不知道谁在其中?谢谢
我希望能够为管理员提供从我的网站上从他们的工作区中删除我的Slack应用程序的选项(有点像添加到Slack按钮,但与此相反)。
我有一个删除按钮,该按钮apps.uninstall使用用户令牌(XOXP)调用该方法。但是我得到一个not_allowed_token_type错误响应。
Web方法文档指出,我可以为此方法使用用户令牌(无作用域)。任何想法我在做什么错?
我创建了一个托管在 Heroku 上的 Python Slack 机器人(它在我的个人工作空间上运行良好),但现在希望将其分发到其他工作空间。
在 Slack 的“管理发行版”页面上,它请求至少一个重定向 URL。我不明白这是什么。例如:如果我的机器人的 Heroku 域是https://my-awesome-bot.herokuapp.com/什么,那么它的重定向 URL 是什么?
我正在构建一个 slack FAQ 应用程序,它使用消息反应来收集问题的最佳答案。我的计划是通过使用reaction_added事件获取 TS 属性,然后使用conversations.history获取消息内容的方法来保存任何具有积极反应的 Slack 消息。
这适用于父级或非线程消息,但它不适用于线程内的回复消息。出于某种原因,该conversations.history方法在使用线程回复的 TS 时会返回一条不相关的消息。
我检查了 Slack APIconversations.history方法文档,看看回复是否以任何特殊方式处理。我查看了conversations.replies方法以查看它是否有帮助,但由于reaction_addedevent 只是为消息提供了一个 TS id,而没有可以与该conversations.replies方法一起使用的 thread_ts 值。
我正在使用螺栓框架。这是尝试使用reaction_added事件 withconversations.history方法获取消息内容的代码片段:
app.event('reaction_added', async ({ event, context, say }) => {
try {
const result = await app.client.conversations.history({
token: process.env.SLACK_USER_TOKEN,
channel: event.item.channel,
latest: event.item.ts,
limit: 1,
inclusive: true
});
save(`${result.messages[0].text}`);
}
catch (error) {
console.error(error);
}
});
Run Code Online (Sandbox Code Playgroud)
预期结果:发布反应的线程回复的消息内容
实际结果:slack channel中最新消息的消息内容
对于我的本地测试,我试图从 slack 获取并保存用户的访问令牌。
第一步是获得用户的许可,我试图将用户重定向到以下 URL -
https://slack.com/oauth/v2/authorize?scope=commands,bot&client_id=<MY_CLIENT_ID>&redirect_uri=https://localhost:3000/slack-verify/
Run Code Online (Sandbox Code Playgroud)
然后该请求将用户(当前是我)重定向到
https://<MY-WORKSPACE>.slack.com/oauth?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Flocalhost%3A3000%2Fslack-verify%2F&state=&scope=commands%2Cbot&user_scope=&granular_bot_scope=1&team=&install_redirect=&single_channel=0&tracked=1
Run Code Online (Sandbox Code Playgroud)
理想情况下,它应该返回 GET 参数中的代码,但它在屏幕上显示错误 -
<APP NAME> could not be installed. Error details
Invalid permissions requested
Run Code Online (Sandbox Code Playgroud)
这里有什么问题吗?
编辑:也将 localhost 替换为 ngrok URL,但这也不起作用。
重现步骤
https://slack.com/oauth/v2/authorize?scope=commands,bot&client_id=<MY_CLIENT_ID>&redirect_uri=https://localhost:3000/slack-verify/
Run Code Online (Sandbox Code Playgroud)
只需输入您的客户端 ID 并重定向 uri 本地(如果有)。