我的松弛频道支持Simple Poll应用中的/poll
命令。如何使用Slack API调用此命令?
使用python slack(er) API module:
from slacker import Slacker
# Using what's now called a "legacy token"
slack = Slacker('my-token')
slack.chat.post_message(
'#test',
'/poll "Do you prefer cats or dogs?" "Cats" "Dogs"',
as_user=False,
username="Poll Bot",
icon_emoji=':question:',
parse='full')
该消息在#test频道中显示为纯文本,未转换为民意调查。
我尝试在邮件中使用<!poll>
而不是/poll
,message formatting documenation中隐含着这种结果,但结果相同。
注意:这个问题现在有点老了,重新访问后我发现我的代码正在使用现在称为legacy token的代码,它不允许指定OAuth permission scopes https://dan.chak.org/enterprise-rails/chapter-11-view-backed-models/ 3}}。旧版令牌已具有此案例所需的权限。
答案 0 :(得分:12)
您必须使用“未记录的”chat.command
API函数而不是chat.postMessage
。使用channel
参数,此功能不太友好 - 您必须提供频道ID,而不是人性化的频道名称。
channel_id = slack.channels.get_channel_id('test')
slack.chat.command(
channel=channel_id,
command='/poll',
text='"Do you prefer cats or dogs?" "Cats" "Dogs"'
)
感谢V13Axel in this Wee-Slack bug tracker为我提供了chat.command
的调试信息。
根据@ Erik_Kalkoken的unofficial documentation,chat.command
需要范围
post
。由于此范围似乎在应用程序配置窗口中不可用,因此您需要提供legacy token才能生效。
答案 1 :(得分:2)
我遇到了完全相同的问题,所以我做了一些编码,这里有一个工作示例:
https://github.com/dazlious/slack-cmd-trigger
您可以使用命令触发任何通道的api-token。