How do you invoke the /poll command using the Slack API?

ぐ巨炮叔叔 提交于 2019-11-27 18:34:53

问题


My slack channel supports the /poll command from the Simple Poll app. How do you invoke this command using the Slack API?

Using the 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')

The message just shows up in the #test channel as plain text, not converted to a poll.

I tried using <!poll> instead of /poll in the message, as sort of implied in the message formatting documenation, but same result.

Note: This question is a bit old now, and upon revisiting I have found out that my code is using what's now called a legacy token, which doesn't allow specifying any OAuth permission scopes. The legacy token already has the permissions it needs for this case.


回答1:


You have to use the "undocumented" chat.command API function instead of chat.postMessage. This function is a little less friendly with the channel parameter -- you have to provide the channel ID and not the human-friendly channel name.

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"'
)

Thanks to V13Axel in this Wee-Slack bug tracker for providing some debugging info for the chat.command that clued me in.

According to @Erik_Kalkoken's unofficial documentation, chat.command

requires the scope post. Since this scope does not seem to be available in the app config window you need to provide a legacy token for this to work.




回答2:


I was stumbling across the exact same problem, so I did a bit of coding and a working example is here:

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

You can trigger with your api-token any channel with a command.



来源:https://stackoverflow.com/questions/40919745/how-do-you-invoke-the-poll-command-using-the-slack-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!