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

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

関連記事

Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)

  <目次> (1) Pythonで行列の計算方法をご紹介(Numpyを使用した四則演算や内積計算)  (1-1) 概要  (1-2) STEP1:Numpyのインストール  (1-3) S …

GitHubの使い方を開発者向けにご紹介

  <目次> (1) GitHubの使い方を開発者向けにご紹介  (1-1) 目的と概要  (1-2) 開発者の操作手順 (1) GitHubの使い方を開発者向けにご紹介 (1-1) 目的と …

ストーリーポイント(SP)とは?定義やポイントについて

  <目次> (1) ストーリーポイント(SP)とは?定義やポイントについて  (1-1) ストーリーポイント(SP)とは?  (1-2) ストーリーポイント(SP)の注意点  (1-3) …

Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介

  <目次> (1) Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介  (1-1) Anaplanとは?  (1-2) Anaplanで実現する「コネクテッドプラン …

Zoomでライセンスユーザーの追加手順など(管理オペレーション全般の手順紹介)

  <目次> (1) Zoomでライセンスユーザーの追加手順など(管理オペレーション全般の手順紹介)  (1-1) Zoomの主な管理オペレーション  (1-2) ライセンス追加(購入数の追 …

  • English (United States)
  • 日本語
Top