Loading [MathJax]/extensions/tex2jax.js

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に貼り付けて動かしてみてください。
(サンプルプログラム)
  1. import slack
  2. import os
  3. from pathlib import Path
  4. from dotenv import load_dotenv
  5.  
  6. # 親フォルダパスを取得
  7. file_path = Path(__file__).parent
  8. # 「.env」ファイルのパスを設定
  9. env_path = file_path/'.env'
  10. # 「.env」ファイルのロード
  11. load_dotenv(dotenv_path=env_path)
  12.  
  13. # トークンを指定してWebClientのインスタンスを生成
  14. client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
  15. # chat_postMessageメソッドでメッセージ投稿
  16. 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”を指定してボタンを作っています。

  1. {
  2. "type": "section",
  3. "text": {
  4. "type": "mrkdwn",
  5. "text": "こんばんは! @Rainbow Planet はこの今日の夕食をラーメンにするか牛丼にするか迷っています。どっちがよいと思いますか?"
  6. }
  7. },
  8. {
  9. "type": "actions",
  10. "elements": [
  11. {
  12. "type": "button",
  13. "text": {
  14. "type": "plain_text",
  15. "text": "ラーメン",
  16. "emoji": true
  17. },
  18. "url": "https://tabelog.com/ramen/rank/"
  19. },
  20. {
  21. "type": "button",
  22. "text": {
  23. "type": "plain_text",
  24. "text": "牛丼",
  25. "emoji": true
  26. },
  27. "url": "https://nlab.itmedia.co.jp/research/articles/177964/"
  28. }
  29. ]
  30. }

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

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

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

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

関連記事

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

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

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

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

リトルエンディアンとビッグエンディアンの違いや概要

  <目次> (1) リトルエンディアンとビッグエンディアンの違いや概要  (1-1) 「リトルエンディアン」と「ビッグエンディアン」とは?  (1-2) どのようなシーンで利用される? ( …

LangChainとは?概要やサンプルプログラムをご紹介

  <目次> (1) LangChainとは?概要やサンプルプログラムをご紹介  (1-1) やりたいこと  (1-2) LangChainの概要  (1-3) LangChainのHell …

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

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

  • English (United States)
  • 日本語
S