Help us understand the problem. What is going on with this article?

Slack Interactive Messageリファレンス

More than 1 year has passed since last update.

未翻訳の箇所は残っていますが、8割くらい出来たので一旦公開します。引き続き翻訳&修正をします。


本記事について

本記事は以下記事を基に、一部自作の図を交えて作成したSlackのInteractive Message機能のリファレンスです。

概要

Interactive Messageとは

Slack上で、ボタン付き又はメニュー付きのメッセージを送信し、ユーザーからのアクションに応答できる機能です。

ボタン

slack_message_buttons.gif

メニュー

slack_message_menus.gif

対話的メッセージフレームワーク

Interactive Messageは、ボタンとメニューを含んだメッセージです。ボタンとメニューは以下で利用できます。

ライフサイクル

Lifecycle of a typical interactive message flowを参考に書き起こしたシーケンス図はこちらです。

lifecycle.png

ボタン

ボタン付きメッセージの作成

アタッチメントとアタッチメントアクションを含むメッセージを作成します。基本的なメッセージ書式設定メッセージアタッチメントが通常どのように動作するか確認すると良いでしょう。

インタラクティブメッセージは、あなたのサーバーのレスポンスにより、インタラクティブな経験を作成するために、合成・修正・削除されたとてもシンプルなブロックにより構成されています。

このボタン付きメッセージは、インタラクティブメッセージを作る際にもっとも重要なフィールドにシンプルな値を含んでいます。あなたのメッセージはこれよりもっと複雑になるかもしれないので、後ほどもっと複雑な例について取り上げます。

image.png

このメッセージには軽い文字列、3つの特定のボタン、また破壊的操作のようなボタンも一つ含みます。

これはこのメッセージを作るために使われたJSONです。

{
    "text": "Would you like to play a game?",
    "attachments": [
        {
            "text": "Choose a game to play",
            "fallback": "You are unable to choose a game",
            "callback_id": "wopr_game",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "actions": [
                {
                    "name": "game",
                    "text": "Chess",
                    "type": "button",
                    "value": "chess"
                },
                {
                    "name": "game",
                    "text": "Falken's Maze",
                    "type": "button",
                    "value": "maze"
                },
                {
                    "name": "game",
                    "text": "Thermonuclear War",
                    "style": "danger",
                    "type": "button",
                    "value": "war",
                    "confirm": {
                        "title": "Are you sure?",
                        "text": "Wouldn't you prefer a good game of chess?",
                        "ok_text": "Yes",
                        "dismiss_text": "No"
                    }
                }
            ]
        }
    ]
}

このメッセージがチャンネル内やダイレクトメッセージで表示され、ユーザーがチェスをクリックすると、あなたの登録したアクションURLは、特定のメッセージボタンのセットで指定されたJSONペイロードを受信します:

  • メッセージを作成した際に設定したcallback_id
  • クリックしたボタンの特定のname
  • 同じくクリックされた特定のボタンに該当するvalue

メッセージアクションへの応答

あなたのアプリケーションがメッセージアクションに応答するときが来ました。

あなたのアクションURLは、ボディパラメーターにpayloadを含んだPOSTリクエストを受信し、それ自身はapplication/x-www-form-urlencodedのJSON文字列です。

これはお勧めのコミックブックの例のために、あなたが上記で受信する呼び出しの例です:

{
  "actions": [
    {
      "name": "recommend",
      "value": "yes",
      "type": "button"
    }
  ],
  "callback_id": "comic_1234_xyz",
  "team": {
    "id": "T47563693",
    "domain": "watermelonsugar"
  },
  "channel": {
    "id": "C065W1189",
    "name": "forgotten-works"
  },
  "user": {
    "id": "U045VRZFT",
    "name": "brautigan"
  },
  "action_ts": "1458170917.164398",
  "message_ts": "1458170866.000004",
  "attachment_id": "1",
  "token": "xAB3yVzGS4BQ3O9FACTa8Ho4",
  "original_message": {"text":"New comic book alert!","attachments":[{"title":"The Further Adventures of Slackbot","fields":[{"title":"Volume","value":"1","short":true},{"title":"Issue","value":"3","short":true}],"author_name":"Stanford S. Strickland","author_icon":"https://api.slack.comhttps://a.slack-edge.com/bfaba/img/api/homepage_custom_integrations-2x.png","image_url":"http://i.imgur.com/OJkaVOI.jpg?1"},{"title":"Synopsis","text":"After @episod pushed exciting changes to a devious new branch back in Issue 1, Slackbot notifies @don about an unexpected deploy..."},{"fallback":"Would you recommend it to customers?","title":"Would you recommend it to customers?","callback_id":"comic_1234_xyz","color":"#3AA3E3","attachment_type":"default","actions":[{"name":"recommend","text":"Recommend","type":"button","value":"recommend"},{"name":"no","text":"No","type":"button","value":"bad"}]}]},
  "response_url": "https://hooks.slack.com/actions/T47563693/6204672533/x7ZLaiVMoECAW50Gw1ZYAXEM"
}

一度のこのペイロードを受信したら、次に何をするかはあなたのアプリケーション次第です。

メニュー

メッセージの中にオプションのメニューを表示することで、ユーザーに明確かつ簡潔な決定を助けます。

メッセージメニューは私達のインタラクティブメッセージフレームワークの上に構築され、Slackアプリケーションにこれまで以上に拡張し、進化した選択肢を提供できます。

slack_message_menus.gif

メッセージボタンはSlack上の会話の中で、限られたシンプルかつ正確なワークフローを可能にします。みんながそのボタンをクリックしたいでしょう。

より微妙な意思決定を促進する新しい方法です。

シンプルなメニューの作成

メッセージメニューの中で最もシンプルな種類は、あなたのアプリが静的なオプションのセットを提供することです。

image.png

もし3つほど既に決まったオプションがある場合は、対話的メッセージへの最適なアプローチです。

例えば、このメッセージは何のゲームをして遊ぶかのメニューをユーザーに提供しています:

{
    "text": "Would you like to play a game?",
    "response_type": "in_channel",
    "attachments": [
        {
            "text": "Choose a game to play",
            "fallback": "If you could read this message, you'd be choosing something fun to do right now.",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "callback_id": "game_selection",
            "actions": [
                {
                    "name": "games_list",
                    "text": "Pick a game...",
                    "type": "select",
                    "options": [
                        {
                            "text": "Hearts",
                            "value": "hearts"
                        },
                        {
                            "text": "Bridge",
                            "value": "bridge"
                        },
                        {
                            "text": "Checkers",
                            "value": "checkers"
                        },
                        {
                            "text": "Chess",
                            "value": "chess"
                        },
                        {
                            "text": "Poker",
                            "value": "poker"
                        },
                        {
                            "text": "Falken's Maze",
                            "value": "maze"
                        },
                        {
                            "text": "Global Thermonuclear War",
                            "value": "war"
                        }
                    ]
                }
            ]
        }
    ]
}

このメッセージの構造は、メッセージボタンととても似ています。

主な違いは、各ボタンが別個のアクションではなく、複数のオプションを持つ単一のアクションとしてメッセージメニューを表示しています。

アクションURLレスポンス

ユーザーがドロップダウンから提供されたオプションを選択すると、アクションURLはメッセージボタンのときと同じような呼び出しを受信します。payloadパラメーターを含み、エンコードされたJSONオブジェクトをPOSTで受信します。あなたのプログラミング言語のハッシュ/オブジェクト構造でアクションを評価するため、JSONをデコードしてください。

上記の例に続けて、もしユーザーがメニューの中から Falken's Maze を選択した場合、Slackはあなたが設定したアクションURLに対して、game_listの選択ダイアログがmazeオプションを選ぶのに使用されたことを要求するリクエストを出します。

これがこのシナリオにより送信されたJSONの例です。payloadパラメーターはデコード済みです:

{
    "actions": [
        {
            "name": "games_list",
            "selected_options": [
                {
                    "value": "maze"
                }
            ]
        }
    ],
    "callback_id": "game_selection",
    "team": {
        "id": "T012AB0A1",
        "domain": "pocket-calculator"
    },
    "channel": {
        "id": "C012AB3CD",
        "name": "general"
    },
    "user": {
        "id": "U012A1BCD",
        "name": "muzik"
    },
    "action_ts": "1481579588.685999",
    "message_ts": "1481579582.000003",
    "attachment_id": "1",
    "token": "verification_token_string",
    "original_message": {
        "text": "Pick a game...",
        "bot_id": "B08BCU62D",
        "attachments": [
            {
                "callback_id": "game_selection",
                "fallback": "Upgrade your Slack client to use messages like these.",
                "id": 1,
                "color": "3AA3E3",
                "actions": [
                    {
                        "name": "games_list",
                        "text": "Pick a game...",
                        "type": "select",
                        "options": [
                            {
                                "text": "Chess",
                                "value": "chess"
                            },
                            {
                                "text": "Falken's Maze",
                                "value": "maze"
                            },
                            {
                                "text": "Global Thermonuclear War",
                                "value": "war"
                            }
                        ]
                    }
                ]
            }
        ],
        "type": "message",
        "subtype": "bot_message",
        "ts": "1481579582.000003"
    },
    "response_url": "https://hooks.slack.com/actions/T012AB0A1/1234567890/JpmK0yzoZ5eRiqfeduTBYXWQ"
}

私達は網羅的で詳細なフィールドガイドがありますが、ここではいくつかに注目します:

メッセージ本文を再利用したいと思うあなたの為に、添付された original_message を見つけるでしょう、そしてこれらは記録に残さないでください。 original_messageは、一時的なメッセージを参照している時は含まれません。展開式のインタラクティブメッセージを利用している時のみに添付データを含みます。

特定の対話のインスタンスを特定するのに役立つ callback_idもあります。これはチーム周りのコンテキストやこれが発生したチャンネルとユーザーがこのアクションを呼び出すのに役立ちます。もちろん、Slack内から来るtoken値はリクエストをバリデートするのに利用することはもちろん知っているでしょう。

では、actions配列のトップレベルについて新しく関連することを注目しましょう。

呼び出されたメッセージメニューアクション

  • name - 上記でgames_listと使用されたように、このメッセージメニューで指定した名前の文字列です。
  • selected_options - このメッセージメニューでユーザーに選択されたハッシュオプション値の配列です。上記の例ではオプションを一つ選択し、mazeという値が設定されているのを示しています。 しかし、warchessが選択されていたかもしれません。現時点では、 ユーザーが選択できるオプションは一つだけで、アプリに配信することができます。

アクションURL呼び出しを受信した後も、レスポンスパターンはメッセージボタンと同じです:メッセージを追加したり、オリジナルメッセージを置き換えたり、一時的なメッセージを配信したりすることができます。また、response_urlchat.updateを使用することで、 さらなるインタラクションを配信できます。

チームメンバーを一覧から選択

image.png

チームメンターを選択する一覧をメッセージメニューに入力することは簡単です。Slackはクライアント側のユーザーリストにもデータを埋め込むため、関連するOAuthスコープにアクセスする必要はありません。

ユーザーがメニューを選択すると、あなたのAction URLは選択したユーザーのUser IDを受け取ります。

あなたのアクションのdata_sourceusersを指定することで魔法がかかります:

こちらが簡単がデモの例です:

{
    "text": "I hope the tour went well, Mr. Wonka.",
    "response_type": "in_channel",
    "attachments": [
        {
            "text": "Who wins the lifetime supply of chocolate?",
            "fallback": "You could be telling the computer exactly what it can do with a lifetime supply of chocolate.",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "callback_id": "select_simple_1234",
            "actions": [
                {
                    "name": "winners_list",
                    "text": "Who should win?",
                    "type": "select",
                    "data_source": "users"
                }
            ]
        }
    ]
}

ユーザーにチームのチャンネルを選択させよう

image.png

チャンネルのメッセージメニューを提供することも簡単です。これのために関連したスコープは必要としません。Action URLは選択されたチャンネルのIDだけを受け取ります。

ユーザーはチーム内のパブリックチャンネルのみから選択することができます。

アクションのdata_sourceで以下のようにchannelsを指定してください:

{
    "text": "It's time to nominate the channel of the week",
    "response_type": "in_channel",
    "attachments": [
        {
            "fallback": "Upgrade your Slack client to use messages like these.",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "callback_id": "select_simple_1234",
            "actions": [
                {
                    "name": "channels_list",
                    "text": "Which channel changed your life this week?",
                    "type": "select",
                    "data_source": "channels"
                }
            ]
        }
    ]
}

Let users choose one of their conversations

TODO: よく分からないのでパス

フィールドガイド

トップレベルメッセージフィールド

フィールド 必須 説明
text string No メッセージのテキスト本文。attachmentsが無い場合は必須である。
attachments attachment array No attachmentオブジェクトのJSON配列である。メッセージの追加のコンポーネントを追加する。attachmentsは20個以下である必要がある。
thread_ts string No 親メッセージに返信する場合、この値は親メッセージのスレッドのts値である。
response_type string no 次の2つの値のどちらかが必要である:
* in_channel: メッセージボタンがクリックされたチャンネル内の全てのユーザーに表示される。呼び出されたボタンアクションに応答して送信されるメッセージは、デフォルトではin_channelに設定される。
* ephemeral: メッセージボタンをクリックしたユーザーにだけ表示される。Slash commandsに応答して送信されるメッセージは、デフォルトでephemeralに設定される。
このフィールドは新規メッセージでは指定できない。ボタンアクションやSlash commandsの応答にのみ使用できる。
replace_original Boolean No ボタンアクション呼び出しに応答して、メッセージを作成する場合のみに使用される。trueを設定した場合、オリジナルメッセージはあなたが提供したメッセージに置き換えられる。falseを設定した場合、あなたが提供したメッセージは新規メッセージとして扱われる。
delete_original Boolean No ボタンアクション呼び出しに応答して、メッセージを作成する場合のみに使用される。trueを設定した場合、オリジナルメッセージは削除される。もしメッセージを提供していた場合は、新規メッセージとして投稿される。

Attachment fields

これらのフィールドは、メッセージのattachmentsフィールドで、配列内のハッシュとして与えられる必要がある。

フィールド 必須 説明
title string No ここに短い文字列を指定することで、視覚的なヘッダーを付けることができる
fallback string Yes attachmentsや対話的メッセージをサポートしていないインターフェースを使用している場合に表示される平文メッセージです。 Consider leaving a URL pointing to your service if the potential message actions are representable outside of Slack. Otherwise, let folks know what they are missing.
callback_id string Yes 指定された文字列は、attachment内のボタンコレクションの一意な識別子として扱われる。この識別子は、アクションの応答によってメッセージボタンのAction URLに送り返される。 このフィールドはattachmentにメッセージボタンを含む場合は必須である。これはあなたが作業している対話を識別する鍵である。
color string No 他メッセージから視覚的に区別するために使用される。16進値とドキュメントに記載されたいくつかのカラーコードを指定できる。ベストプラクティスに沿って控えめに使用する。
actions action array Yes attachmentに含むボタン又はメニューのアクションのコレクションです。メッセージボタンやメッセージメニューを使用する時は必須です。attachment毎に最大で5個まで指定できる。
attachment_type string No (分からない)Even for message menus, remains the default value default.

Message action fields

あなたが指定したアクションがメッセージボタン又はメッセージメニューとしてレンダリングされます。

フィールド 必須 説明
name string Yes アクションを識別する名前として文字列を指定する。この名前はアクションが呼び出された場合に、メッセージのcallback_idと一緒にAction URLに返される。特定の応答経路を識別する際に使用してください。もし複数のアクションで同じ名前が指定された場合は、そのうち一つだけがトリガー状態となることが出来る
text string Yes このアクションが示すメッセージボタン又はメニューのユーザーが見るラベルです。マークアップは含むことは出来ません。短つかつ簡潔に保ってください。フォーム要素の最善の結果を得るために、30文字以内にしてください。
type string Yes このアクションがメッセージボタンの場合はbuttonを、メッセージメニューの場合はselectを指定してください。
value string No このアクションを識別する特定の文字列を指定する。attachmentcallback_itnameと一緒にAction URLに送信される。 If providing multiple actions with the same name, value can be strategically used to differentiate intent. 値には最大で2000文字使用できる。
confirm confirmation hash No もしconfirmation fieldsのJSONハッシュを指定した場合は、あたなのボタンやメニューで指定された文字列と選択肢のポップアップがダイアログが表示される。そして破壊的操作や望まない結果を拒否する最後のチャンスが与えられる。
style string No メッセージボタンの時のみに使用でき、ボタンを指摘的な重要性や論理的なアクションや破壊的操作をハイライトする際に特に便利です。
* default — デフォルトで有効です。ボタンはシンプルに見える。
* primary — 重要な処理を実行する場合に、控えめに使用する。恐らく特定のグループ内で、primaryボタンは1つだけのはずです。
* danger — これはボタンをクリックした際にサーバー内に保存されたデータを破壊するような結果になる場合に使用してください。これはprimaryよりも控えめに使用してください。
options array No メッセージメニューの時のみに使用する。このメニューを表示するここのオプションであり、option fieldsの配列を指定する。データソースが静的の場合は必須であり、そうでなければ指定しない。各メニューには最大で100オプション指定できる。
option_groups array No メッセージメニューの時のみに使用する。利用可能なオプションを一覧表示する半階層的な方法です。option group definitionsを指定してください。これはoptions配列に取って代わります。
data_source string No static, users, channels, conversations, 又は externalを受け付ける。私達の賢い位デフォルトの振る舞いはデフォルトで、つまりメニューのオプションは投稿されたメッセージの下に直接表示される。デフォルトはstaticです。
selected_options array of option_fields No もし指定された場合、配列の最初の要素がこのメニューの初期選択される。 追加の要素は無視される。
選択されたオプションの値フィールドは、メニューの種類に応じて常に必須です。:

  メニューの種類がstaticの場合、アクションのオプションの一覧に含まれていなければならない。
メニューの種類がusers, channels, conversationsの場合、該当種類の正しいIDでなければならない。
メニューの種類が外部要素の場合は、値は何でもよく何千文字でも構わない。
min_query_length integer No data_sourceexternalを指定された時のみに適用される。もし存在する場合、Slackは指定文字数が入力されるまで待ってから、あなたから提示された外部のAPIエントリポイントにリクエストを送る。デフォルトでは1です。

Confirmation fields

フィールド 必須 説明
title string No ポップアップウィドウのタイトルです。簡潔にしてください。
text string Yes アクション結果を詳細に説明し、ボタンによる選択肢を解釈できるようにしてください。フォームファクター(?)が最善の結果を得るため、最大で30文字を使用してください。
ok_text string No アクションを継続するためのボタンの文字列ラベルです。簡潔に保ってください。デフォルトはOkayです。
dismiss_text string No アクションをキャンセルするためのボタンの文字列ラベルです。簡潔に保ってください。デフォルトはCancelです。

メッセージメニューアクション内に配置されるオプションフィールド

オプションフィールドのコレクションです。メッセージデータタイプで、default又はexternalの場合に使用されます。

この値は特に重要で、selected_optionsが使用されていた場合に、以前提供されていたオプションの一つと一致している必要があります。

例:

{
    "options": [
        {
            "text": "Barren Realms Elite",
            "value": "barren_realms_elite"
        },
        {
            "text": "Legend of the Red Dragon",
            "value": "legend_of_the_red_dragon"
        },
        {
            "text": "Solar Realms Elite",
            "value": "solar_realms_elite"
        },
        {
            "text": "Tradewars 2002",
            "value": "tradewars_2002"
        }
    ]
}
フィールド 必須 説明
text string Yes ユーザーにこのオプションを表示するための短い文字列です。 フォームファクター(?)が最善の結果を得るため、最大で30文字を使用してください。
value string Yes アプリケーションが特定のオプションを識別するための短い文字列です。このオプションが選択されたあ、Action URLに送信されます。Slackアプリ上では制限がありませんが、最大で2000文字まで含めることができる。
description string Yes このオプションをより詳細に説明するための文字列です。最大で30文字まで含めることができる。

メッセージメニューアクション内に配置するオプショングループ

オプショングループは100個のオプションをグループに分けたものです。それらはメッセージメニューのデータタイプで、staticexternalを選んだ場合に使用できます。

例:

{
    "option_groups": [
        {
            "text": "Doggone bot antics",
            "options": [
                    {
                        "text": "Unexpected sentience",
                        "value": "AI-2323"
                    },
                    {
                        "text": "Bot biased toward other bots",
                        "value": "SUPPORT-42"
                    },
                    {
                        "text": "Bot broke my toaster",
                        "value": "IOT-75"
                    }
            ]
        },
        {
            "text": "Human error",
            "options": [
                {
                    "text": "Not Penny's boat",
                    "value": "LOST-7172"
                },
                {
                    "text": "We built our own CMS",
                    "value": "OOPS-1"
                }
            ]
        }
    ]
}
フィールド 必須 説明
text string Yes ユーザーにこのオプションを表示するための短い文字列です。
options string Yes このメッセージメニューに表示される個々のオプション。オプションフィールドの配列として提供されます。データソースがdefaultのときか未指定の場合に必要です。

アクションURL呼び出しペイロード

対話的メッセージの鍵はもちろん素晴らしいメッセージと添付データです。ボタンを押すか、メニューオプションを選択する度にあなたのAction URLにフィールドが渡されるフィールドは、アプリケーションが次のステップを判断するために必要な情報を生成します。

{
        "actions": [
            {
                "name": "channels_list",
                "selected_options": [
                    {
                    "value": "C012AB3CD"
                    }
                ]
            }
        ],
        "callback_id": "select_simple_1234",
        "team": {
            "id": "T012AB0A1",
            "domain": "pocket-calculator"
        },
        "channel": {
            "id": "C012AB3CD",
            "name": "general"
        },
        "user": {
            "id": "U012A1BCD",
            "name": "musik"
        },
        "action_ts": "1481579588.685999",
        "message_ts": "1481579582.000003",
        "attachment_id": "1",
        "token": "iUeRJkkRC9RMMvSRTd8gdq2m",
        "original_message": {
                "text": "It's time to nominate the channel of the week",
                "bot_id": "B08BCU62D",
                "attachments": [
                    {
                       "callback_id": "select_simple_1234",
                       "fallback": "Upgrade your Slack client to use messages like these.",
                       "id": 1,
                       "color": "3AA3E3",
                       "actions": [
                           {
                               "id": "1",
                               "name": "channels_list",
                               "text": "Which channel changed your life this week?",
                               "type": "select",
                               "data_source": "channels"
                           }
                        ]
                    }
                ],
                "type": "message",
                "subtype": "bot_message",
                "ts": "1481579582.000003"
        },
        "response_url": "https://hooks.slack.com/actions/T012AB0A1/123456789/JpmK0yzoZDeRiqfeduTBYXWQ"
}
フィールド 説明
actions action array クリックされたアクションの配列で、メッセージボタンの作成時に準備した名前や値を含んでいます。配列として表示されていますが、この時点では呼び出し毎に一つのアクションのみを受け取ります。
name — オリジナルアクションの中で設定されたname属性と結びつける文字列です
value — オリジナルアクションの中で設定されたvalue属性と結びつける文字列です
type — オリジナルアクションの中で設定されたtype属性と結びつける文字列です
callback_id string オリジナルのメッセージアタッチメントにcallback_idとして指定した文字列です。これを使用して最初に投稿されたアクション/ボタンを識別します。もしアクションのvalueが答えである場合は、callback_idは質問した特定の質問です。200文字以下でお願いします。
team team hash このアクションが発生したチームに関する文字列属性の小さなセットです。
id — オリジナルのメッセージが発生したSlackチームを示す一意の識別子です。
domain — Slackチームと同じslack.domのサブドメインです。
channel channel hash 全てが起きた場所のことです。 — このアクションを促すユーザーが、チャンネル内でメッセージのボタンをクリックし、このハッシュはそのチャンネルに関することです。
id — 元のメッセージを格納しているチャンネルの文字列識別子です。チャンネルIDは、表示されるチーム固有のものです。
name — メッセージが表示されるチャンネル名で、頭の#はありません。
user user hash クリックし、アクションを呼び出し、ボタンを押した人です!これらの属性はあなたのメッセージとやりとりをすることを決めたユーザーのこと全てを伝えます。
id — アクションを呼び出したユーザーの文字列識別子です。ユーザーIDは、表示されるチーム固有のものです。
name — 同じユーザーの名前です。
action_ts string 文字列で囲まれたアクションが発生した時刻で、タイムスタンプ表記です。文字列になっています。例) "1458170917.164398"
message_ts string 文字列で囲まれたアクションを含むメッセージが投稿された時刻で、タイムスタンプ表記です。文字列になっています。例)"1458170917.164398"
attachment_id string このアクションを含むメッセージ内の特定のアタッチメントの1区切りの識別子です。あなたがたくさんのアタッチメントを含むメッセージボタンの構築や興味がある場合に便利です。
token string これはInteractive Messageの設定時にアプリの詳細ページで表示されたのと同じ文字列です。Slackから来たことを確認するのに利用してください。詳しくはこちら
original_message object このアクションをトリガーした元のメッセージを表すJSONを含むハッシュオブジェクトです。これは状態を保持せずに、chat.updateを使用するためにmessage_tsを知る必要がある際に特に便利です。 この値は一時的なメッセージのために提供していません
response_url string URLを含む文字列。アクションURLのトリガーとは独立して、この呼出に応答するために使用されます。

オプションロードURLペイロード

例:

{
    "name": "bugs_list",
    "value": "bot",
    "callback_id": "select_remote_1234",
    "team": {
        "id": "T012AB0A1",
        "domain": "pocket-calculator"
    },
    "channel": {
        "id": "C012AB3CD",
        "name": "general"
    },
    "user": {
        "id": "U012A1BCJ",
        "name": "bugcatcher"
    },
    "action_ts": "1481670445.010908",
    "message_ts": "1481670439.000007",
    "attachment_id": "1",
    "token": "verification_token_string"
}
フィールド 説明
name string 呼び出されたメッセージメニューの名前です。何か理由があってこれを名付けたんでしょ?
value string When users utilize typeahead, their query will be presented here. Use min_query_length to customize the minimum amount of typing needed before dispatching an options loading request.
callback_id string オリジナルのメッセージアタッチメントにcallback_idとして指定した文字列です。これを使用して最初に投稿されたアクション/ボタンを識別します。もしアクションのvalueが答えである場合は、callback_idは質問した特定の質問です。200文字以下でお願いします。
team team hash このアクションが発生したチームに関する文字列属性の小さなセットです。
id — オリジナルのメッセージが発生したSlackチームを示す一意の識別子です。
domain — Slackチームと同じslack.domのサブドメインです。
channel channel hash 全てが起きた場所のことです。 — このアクションを促すユーザーが、チャンネル内でメッセージのボタンをクリックし、このハッシュはそのチャンネルに関することです。
id — 元のメッセージを格納しているチャンネルの文字列識別子です。チャンネルIDは、表示されるチーム固有のものです。
name — メッセージが表示されるチャンネル名で、頭の#はありません。
user user hash クリックし、アクションを呼び出し、ボタンを押した人です!これらの属性はあなたのメッセージとやりとりをすることを決めたユーザーのこと全てを伝えます。
id — アクションを呼び出したユーザーの文字列識別子です。ユーザーIDは、表示されるチーム固有のものです。
name — 同じユーザーの名前です。
action_ts string 文字列で囲まれたアクションが発生した時刻で、タイムスタンプ表記です。文字列になっています。例) "1458170917.164398"
message_ts string 文字列で囲まれたアクションを含むメッセージが投稿された時刻で、タイムスタンプ表記です。文字列になっています。例)"1458170917.164398"
attachment_id string このアクションを含むメッセージ内の特定のアタッチメントの1区切りの識別子です。あなたがたくさんのアタッチメントを含むメッセージボタンの構築や興味がある場合に便利です。
token string これはInteractive Messageの設定時にアプリの詳細ページで表示されたのと同じ文字列です。Slackから来たことを確認するのに利用してください。詳しくはこちら

備考

Slack本家のTwitterにて、翻訳記事の公開の許可をもらった上で公開しています。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away