🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

1回答

4778閲覧

slackのスラッシュコマンドが反応しない

farinelli

総合スコア61

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2019/11/13 06:45

編集2019/11/13 07:59

Slackbotを起動させたい

「(任意の文字列)++」と打ったら,++を抜いた「(任意の文字列)」のみを返し,「/karma rank」と打ったら「(任意の文字列)」が登場回数順に10位まで表示されるようなSlackのBotをPythonで作ろうと思っています.

Bot自体はどうやらエラーが出ることなく起動するようですが,slack上で「『*/karma*』は有効なコマンドではありません」と出てしまい,実行することができずにいます.

次に,ここに飛んでみたのですがRequest URLに何を設定すれば良いのか分からなかったり,それらを設定するまでの一連の流れが書かれたサイト達のように,交通情報や猫の写真を呼び出したいわけではなく,自分の場合どんなことをすれば良いのか分からず,困っています.
(https://api.slack.com/apps/AQ3BDB3KL/slash-commands?)

もしご存知の方がいらっしゃいましたら解決法と合わせてご教示いただけますと幸いです.
宜しくお願いします.

親ディレクトリ(karma)
・run.py (実行のトリガーとなるスクリプト)
・slackbot_settings.py (botの設定を記述するファイル)

pluginsディレクトリ
・hello.py (botを実行するプロジェクト)←今回の問題はここ
init.py (空ファイル)

コード

run.py

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3from slackbot.bot import Bot 4 5def main(): 6 bot = Bot() 7 bot.run() 8 9if __name__ == "__main__": 10 print('starting slackbot') 11 main()

slackbot_settings.py

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4API_TOKEN = “xxx” 5DEFAULT_REPLY = "I dont't understand you." 6PLUGINS = ['plugins']

hello.py

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3from slackbot.bot import respond_to 4from collections import Counter 5 6@respond_to('(.*)++') 7def reply_id(message, arg): 8 message.reply(arg) 9 #r.zincrby('words', 1.0, w.surface) 10 11@respond_to('/karma rank') 12def reply_rank(message, count): 13 14 count = {} 15 for t in arg: 16 if not t in count: 17 count[t] = 0 18 count[t] += 1 19 20 sc = sorted(counter.items(), key=lambda x: x[1], reverse=True) 21 for i, t in enumerate(sc): 22 if i >= 10: 23 break 24 key, cnt = t 25 print((i + 1), ".", key, "=", cnt)

補足情報(FW/ツールのバージョンなど)

iOS 10.15, Python 3.7.4, Atom

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

slackのスラッシュコマンドが反応しない

と言うことですが、/ で始まるコマンドは、通常の対話型のメッセージとは扱いが異なります。通常のメッセージと同じようには送られてきませんので、対話型メッセージを処理する部分では対応できません。

/ で始まるコマンドは、Slack アプリ 設定画面の Slash Command で、コマンド毎に記載した Request URL に Slack からデータが送信されるので、そのデータを受け取って、コマンドの処理結果を返すようなプログラムを書く必要があります。


質問に Slack App の Create New Command の URL を記載されていますが、この画面で、コマンド1つずつに対して必要な設定をする必要があります。

次に,ここに飛んでみたのですがRequest URLに何を設定すれば良いのか分からなかったり,それらを設定するまでの一連の流れが書かれたサイト達のように,交通情報や猫の写真を呼び出したいわけではなく,自分の場合どんなことをすれば良いのか分からず,困っています.

交通情報や画像の呼び出しはサンプルでしょうが、これらのコマンドと同じように コマンドの実行結果を返すプログラムを「自分でつくる」必要があります。

Slack-Command の設定画面の入力項目に入力する内容は、以下のような感じです。

Command

(入力必須項目)
作成するコマンド名。 
質問にある例だと /karma でしょうか。

Request URL

(入力必須項目)
コマンドが入力された際に Slack からデータを送信して、呼び出される 作成している Slack Bot アプリで、コマンドを処理するための URL を記載します。
質問にある例だと /karma コマンドで処理する内容を記載したプログラムを実行するための URL

Short Description

コマンドの説明

Usage Hint

コマンドの使用例等のヒント

--

詳しくは、Enabling interactivity with Slash Commands を参照

投稿2019/11/15 09:58

編集2019/11/15 09:59
CHERRY

総合スコア25218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

farinelli

2019/11/20 08:31

有難うございます.返信が遅くなり,大変失礼致しました. 素人質問で恐縮ですが,Request URLは何によって決められるものなのでしょうか? 例えばCHERRY様は1からSlack Botを作ることになったらどうやって決めますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問