Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

Slackで入力フォームを作る方法についてご紹介

投稿日:

 

<目次>

(1) Slackで入力フォームを作る方法についてご紹介
 (1-1) STEP0:前提条件
 (1-2) STEP0:前提条件
 (1-3) STEP1:Slackでボット用のアプリを作成
 (1-4) STEP2:Python環境の準備#1【任意】
 (1-5) STEP4:Pythonプログラムの作成#1:環境変数
 (1-6) STEP5:Pythonプログラムの作成#2:ロジック
 (1-7) STEP6:疎通テスト

(1) Slackで入力フォームを作る方法についてご紹介

(1-1) 概要・ポイント

(ポイント①)
SlackのBlock Builderを用いて簡単にGUI部品のJSONを作成する事ができます。
 
(ポイント②)
このBlock Builderで作った内容を、chat_postMessageといったメソッドのパラメータ「blocks」に指定する事で、簡単にGUI部品をメッセージに組み込んで投稿ができます。

(1-2) STEP0:前提条件

・①Slackの初期セットアップ(FreeでもOK)が済んでいる
→アカウント登録、ワークスペースの作成が済んでいる

 

(1-3) STEP1:Slackでボット用のアプリを作成

→こちらの記事(SlackのAPIでメッセージを投稿する方法)のSTEP1に同じ。
 

(1-4) STEP2:Python環境の準備#1【任意】

→こちらの記事(SlackのAPIでメッセージを投稿する方法)のSTEP2に同じ。
 

(1-3) STEP3:Python環境の準備#2

→こちらの記事(SlackのAPIでメッセージを投稿する方法)のSTEP3に同じ。
 

(1-5) STEP4:Pythonプログラムの作成#1:環境変数

→こちらの記事(SlackのAPIでメッセージを投稿する方法)のSTEP4に同じ。
 

(1-6) STEP5:Pythonプログラムの作成#2:ロジック

ここが今回の一番のポイントです。以下にPythonのサンプルプログラムを紹介します。Visual Studio Codeに貼り付けて動かしてみてください。
(サンプルプログラム)
import slack
import os
from pathlib import Path
from dotenv import load_dotenv

# 親フォルダパスを取得
file_path = Path(__file__).parent
# 「.env」ファイルのパスを設定
env_path = file_path/'.env'
# 「.env」ファイルのロード
load_dotenv(dotenv_path=env_path)

# トークンを指定してWebClientのインスタンスを生成
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
# chat_postMessageメソッドでメッセージ投稿
client.chat_postMessage(channel='#it-blog2', blocks='[{"type": "section","text": {"type": "mrkdwn","text": "こんばんは! @Rainbow Planet はこの今日の夕食をラーメンにするか牛丼にするか迷っています。どっちがよいと思いますか?"}},{"type": "actions","elements": [{"type": "button","text": {"type": "plain_text","text": "","emoji": true}},{"type": "button","text": {"type": "plain_text","text": "","emoji": true}}]}]')

●ポイント

JSON部分を綺麗に整形すると次のようになっています。
最初のブロックは”type”: “section”でメッセージの枠組みを作り、メインのメッセージを設定しています。次のブロックは”type”: “actions”で「対話的要素」(ボタン、入力ボックス、カレンダなど)を定義していきます。今回は”elements”で”type”: “button”を指定してボタンを作っています。

{
  "type": "section",
  "text": {
    "type": "mrkdwn",
    "text": "こんばんは! @Rainbow Planet はこの今日の夕食をラーメンにするか牛丼にするか迷っています。どっちがよいと思いますか?"
  }
},
{
  "type": "actions",
  "elements": [
    {
      "type": "button",
      "text": {
        "type": "plain_text",
        "text": "ラーメン",
        "emoji": true
      },
      "url": "https://tabelog.com/ramen/rank/"
    },
    {
      "type": "button",
      "text": {
        "type": "plain_text",
        "text": "牛丼",
        "emoji": true
      },
      "url": "https://nlab.itmedia.co.jp/research/articles/177964/"
    }
    ]
}

(1-7) STEP6:疎通テスト

プログラムを実行すると次のように、ボタン付きのメッセージが投稿されます。
(図100)
更にボタンをクリックすると、それぞれラーメンのランキングページと、牛丼のランキングページに飛びます。

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

  <目次> (1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)  (1-0) やりたいこと  (1-1) STEP1:Slackボットの開発(所要時間:60分)  ( …

エピック/ユーザーストーリー/フィーチャーの違いや特徴について

  <目次> (1) エピック/ユーザーストーリー/フィーチャーの違いや特徴について  (1-1) エピック(Epic)とは?  (1-2) フィーチャー(Feature)とは?  (1-3 …

非機能要件とは?を極力分かりやすくご紹介

  <目次> (1) 非機能要件とは?を極力分かりやすくご紹介  (1-1) 機能要件とは?(Functional Requirement)  (1-2) 非機能要件とは?(Non-Func …

公開鍵基盤(PKI)の仕組みと証明書の役割について

  <目次> (1) 公開鍵基盤(PKI)の仕組みと証明書の役割について  記事の「目的」と「前提」  (1-0) STEP0:全体像  (1-1) STEP1:証明書の正当性チェック  ( …

Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法について

  <目次> (1) Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法につ …

  • English (United States)
  • 日本語
Top