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

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

関連記事

Dockerコンテナの使い方メモ(初心者向け)

  <目次> Dockerコンテナの使い方メモ(初心者向け)  やりたいこと  背景(Why Container?)  STEP0:前提条件  STEP1:Dockerのインストール&初期設 …

ユーザーストーリーマッピングとは?

  <目次> (1) ユーザーストーリーマッピングとは?  (1-1) 「ユーザーストーリーマッピング」の概要  (1-2) 「ユーザーストーリーマッピング」の利点  (1-3) 「ユーザー …

Postmanの使い方を初めての方向けにご紹介

  <目次> (1) Postmanの使い方を初めての方向けにご紹介  (1-1) Postmanとは?  (1-2) PostmanのConnection画面(≒APIテスト機能)の見かた …

Windows10でWi-Fiが表示されない時の対処方法

  <目次> (1) Windows10でWi-Fiが表示されない時の対処方法  (1-1) 問題の整理  (1-2) 対策①:Wi-Fiサービスを有効化する  (1-3) 対策②:WLAN …

Celonisの研修の概要・受講方法・学習支援コンテンツについて

  <目次> (1) Celonisの研修の概要・受講方法・学習支援コンテンツについて  (1-1) Celonisの研修概要  (1-2) Celonisの研修の分類について  (1-3) …

  • English (United States)
  • 日本語
Top