问题
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