2017-11-29 12 views
0

私はOptions Load URLからスラックグループのチャンネルにドロップダウンメニューを動的に表示しているnode.jsに実装されているスラックアプリを持っています。スラックチャンネルの値をSlack Appの `Options Load URL`に渡す方法

ドロップがダウンして、私は外部のURLフォーム戻っていたオプションのJSONに基づいて正しく表示

が、今の問題は、私は何に基づいて、ドロップダウンメニューで別のアイテムを持っている必要があるということですなっていますユーザーはスラックチャンネルに入力しました。例えば

ユーザーが言う場合:give me choices for option 1:その値1Options Load URLに渡すべきであると私はそのURLで実装したコードが入力された値に基づいて、適切なJSONで応答する1

ユーザーがgive me choices for option 2言い次に、:その値2Options Load URLに渡される必要があり、コードはそれが受け取る値2に基づいてオプションが返信されます実装。

Options Load URLのコードは既に実装されています。ユーザーメッセージから数字1または2を抽出するコードも実装されています。

1または2 ...などは一定でも固定でもありません。これらはランダムにすることができ、Options Load URLのAPIはこれらの値を正しく処理できます。

どういうわけか、これらの値をOptions Load URLに送信する方法を理解するだけです。

これは何とかSlackで行うことはできますか?

答えて

1

リクエストでnameプロパティを使用すると、スラックからのオプションリクエストを処理するアプリケーションの部分にカスタム値を渡すことができます( "オプションの読み込みURL")。通常、返される定義済みのオプションリストを選択するのに使用しますが、値に基づいて新しいオプションリストを動的に作成するために使用することもできます。

ここでは、動作中の名前プロパティを表示できる動的メニュー(offical documentation)を作成するためのスラック要求の例を示します。この例では、値"bugs_list"があります

{ 
    "text": "What's bugging you?", 
    "response_type": "in_channel", 
    "attachments": [ 
     { 
      "fallback": "Upgrade your Slack client to use messages like these.", 
      "color": "3AA3E3", 
      "attachment_type": "default", 
      "callback_id": "select_remote_1234", 
      "actions": [ 
       { 
        "name": "bugs_list", 
        "text": "Which random bug do you want to resolve?", 
        "type": "select", 
        "data_source": "external", 
        "min_query_length": 3, 
       } 
      ] 
     } 
    ] 
} 

そしてここでは、あなたのオプションを読み込みURLが受け取るものです。 nameパラメータに注目してください。あなたがいる限り、彼らは文字列としてエンコードされているように、そこにも、データ構造をほとんどすべてを置くことができるように

{ 
    "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パラメータは、HTTPリクエストに共通のパラメータです。スラックパラメータでデータを渡す限界について話している私のother answerも見てください。

+0

ありがとう、これは私がやったことの一種です。しかし私のケースでは、後でこの名前の値を使用していたので、ユーザーがどのようなアクションを実行したかを判断するためのアクションを返すと、状況は少し複雑になりました。 (私はButton Clicksを持っていましたが、この名前を使ってユーザーがクリックしたボタンを特定しました。)そこで、スペース区切り文字列として名前に値を追加してしまいました。これは洗練されたソリューションのようには見えませんでしたが、現在はうまくいきます。 – sumit

+0

cool。私も同じことをしますが、通常は自分のデータ構造にJSONエンコーディングを使用します。私はそれがエレガントな解決策のようには見えないが、良い選択肢はないと同意する。 –

関連する問題