前提・実現したいこと
WebHook interactiv messageを使って
SlackでGASを使ってボタンからdialogを立ち上げてdialogに入力した値を取得したいです。
発生している問題・エラーメッセージ
SlackでGASを使ってJSONで送信したボタンからdialogを立ち上げてdialogに入力した値を取得したいです。
dialogが開かれるところまではできたのですが"決定"ボタンを押すとスラックへの接続が失敗と出てきて内容がうまく送れません。
どうかよろしくお願いいたします。
<送られてきたボタンからダイアログを立ち上げる処理>
function doPost(e) { var payload = JSON.parse(e["parameter"]["payload"]); var trigger_id = payload["trigger_id"]; var callback_id = payload["callback_id"]; //callback_idで処理を分ける // ボタン処理 if (callback_id == "botton"){ var value = payload["actions"][0]["value"]; var link = "<https://www.google.co.jp/search?q=" + value + "|" + value; if (value == "ok") { var text = link + ">が選択されました。OKの応答文" new dialog(trigger_id,callback_id); // dialog呼び出し // とりあえずここで押したボタンから立ち上げたダイアログに入力した値を取得したい } else { var text = link + ">が選択されました。OK以外の応答文" } var reply = { "replace_original": false, "response_type": "in_channel", "text": text }; var output = ContentService.createTextOutput(JSON.stringify(reply)); output.setMimeType(ContentService.MimeType.JSON); return output; } // dialog処理 // 試せていないのであっているのかまだわからない if (callback_id == "dialog"){ var json = JSON.parse(decodeURIComponent(payload)); var submission = parameter.submission; var submission = json.submission; // 確認用 var sheet1 = SpreadsheetApp.getActive().getSheetByName('シート名'); sheet1.appendRow([submission]); } } function dialog(trigger_id,callback_id) { var slackUrl = "https://hogehoge.slack.com/api/dialog.open"; var SLACK_ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN'); var dialog = { "token": SLACK_ACCESS_TOKEN,//OAuth token "trigger_id": trigger_id, "dialog": JSON.stringify({ "callback_id": "dialog", "title": "ここに題名。", "submit_label": "決定", "elements": [ { "type": "text", "label": "Pickup Location", "name": "loc_origin" }, { "type": "textarea", "label": "Dropoff Location", "name": "loc_destination" } ] }) }; var options = { 'method' : 'post', 'payload' : dialog, }; UrlFetchApp.fetch(slackUrl, options); return ContentService.createTextOutput(); // Important }
<ボタンを送る処理>
function doPost(e) { var INCOMING_WEBHOOK_URL = PropertiesService.getScriptProperties().getProperty('INCOMING_WEB_HOOK'); var SLACK_ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN'); var trigger_id = e.parameter.trigger_id; var data = { "text": "ボタン", "attachments": [{ "trigger_id" : trigger_id, "token": SLACK_ACCESS_TOKEN,//OAuth token "text": "how are you?", "fallback": "fallback message", "callback_id": "botton", "color": "#3AA3E3", "attachment_type": "default", "actions": [{ "name": "feeling", "text": "Good", "type": "button", "value": "ok" }, { "name": "feeling", "text": "so so", "type": "button", "value": "so so" } ] }] } var params = { 'method': 'post', 'payload': JSON.stringify(data) }; UrlFetchApp.fetch(INCOMING_WEBHOOK_URL, params); return ContentService.createTextOutput(); }
試したこと
公式サイトなどの参考サイトを見ましたが私には解決できませんでした。
補足情報(FW/ツールのバージョンなど)
Google Apps Script
参考にしたサイト
https://stackoverflow.com/questions/51092613/cant-open-slack-dialog-through-google-apps-scripts
https://teratail.com/questions/142295
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 13:27 編集
退会済みユーザー
2018/10/08 02:43 編集