如何使用Slack API调用/ poll命令?

时间:2016-12-01 20:26:13

标签: python slack-api slack

我的松弛频道支持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>而不是/pollmessage formatting documenation中隐含着这种结果,但结果相同。

注意:这个问题现在有点老了,重新访问后我发现我的代码正在使用现在称为legacy token的代码,它不允许指定OAuth permission scopes https://dan.chak.org/enterprise-rails/chapter-11-view-backed-models/ 3}}。旧版令牌已具有此案例所需的权限。

2 个答案:

答案 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 documentationchat.command

  

需要范围post。由于此范围似乎在应用程序配置窗口中不可用,因此您需要提供legacy token才能生效。

答案 1 :(得分:2)

我遇到了完全相同的问题,所以我做了一些编码,这里有一个工作示例:

https://github.com/dazlious/slack-cmd-trigger

您可以使用命令触发任何通道的api-token。