LoginSignup
2
3

More than 3 years have passed since last update.

今更ながらSlackBotを作ってみた:Slash Commands

Last updated at Posted at 2019-05-06

前回に引き続き、SlackBotをカスタマイズしていきます。
 今更ながらSlackBotを作ってみた

今回は、スラッシュコマンドです。
Slackには、/で始まるコマンドがたくさん用意されていますよね。
そこに、独自のコマンドを付け加えることができ、それをSlackBotが処理できるようになります。

前回の環境をそのまま使います。まだの方はぜひご参照ください。

(参考情報)
slack api:Slash Commands
 https://api.slack.com/slash-commands

SlashCommandsを作成する

Setting-Basic Information のページを表示し、Slash Commandsを選択します。

image.png

それでは、「Create New Command」ボタンを押下しましょう。

image.png

「hi」という呼びかけに対して、あいさつ文と一緒にエコーバックするコマンドを作ってみましょう。例えば、以下のような感じで作成してみました。

・Command:/hi
・Request URL : 立ち上げたサーバのエンドポイントをフルパスで指定します。/testbot-cmdの方です。
・Short Description:やあ
・Usage Hint:呼びかけに応答します。

image.png

「Save」ボタンを押下します。
インストール済みのアプリを更新する必要がありますので、click hereのリンクをクリックします。あるいは、Setting-Install Appを選択して、「Reinstall App」ボタンを押下します。

image.png

すると、以下のような確認ページが表示されるので、「許可する」ボタンを押下します。

image.png

これで、Slack側の準備ができました。

サーバ側の準備

次は、サーバ側を準備します。

すでに実装してあるコードに以下を追記します。

controllers\slack_testbot\index.js
//・・・
app.command(async (body, web) =>{
    if(body.command === '/hi'){
        var hour = new Date().getHours();

        var greeting = 'こんにちは';
        if( 5 <= hour && hour <= 9 )
            greeting = 'おはよう';
        else if( 18 <= hour && hour < 5 )
            greeting = 'こんにちは';

        var message = {
            text: greeting + '' + (body.text ? (' ' + body.text + " です。") : '')
        };
        app.responseMessage(body.response_url, message );
    }
});
//・・・

app.commandに関数を登録しておくと、コマンドが入力されたときにコールバックされてきます。

レスポンスメッセージを返す方法として、以下の3種類があります。

・Confirm your receipt of the payload. : 受信できたことを知らせるのみ
・Do something useful in response right away. : すぐにレスポンスメッセージを返す。
・Do something useful in response later. : 後でレスポンスメッセージを返す。

slack-utils.jsでは、「後でレスポンスを返す」 方法をとっています。
body.response_urlに後で返す先のURLがあります。それを使って、app.responseMessageを呼び出してメッセージを返しています。

レスポンスメッセージの詳細は、前回同様以下を参考にしてください。

slack api:Reference Message payloads
https://api.slack.com/reference/messaging/payload

動作確認

こんな感じでできました。

入力中。

image.png

応答を受信。

image.png

SlackBot用にユーティリティslack-utils.jsを用意しておいたので、わりと簡単に実装できるようになったのではないかと思います。

以上

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3