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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With