やりたいこと
日報を集計するアプリをslack内で作りたいのですが、ダイアログを表示段階で手こずってます。
- Slackで、
/日報
と入力 - 編集用のボタンが表示
3. 「書く」ボタンをクリックするとdialogが表示
4. 送信をクリックしたらデータを受け取る
5. 受け取ったデータをもとにデータを加工してslackに投稿、スプレットシートに入力
やったこと
- slackで新規アプリを作りました
- Slash Commandsを登録しました
- コマンドで実行するコードをgasで作りました
- GASをWEB公開して、Slash CommandsのリクエストURLに反映
- ボタンの表示を確認した
- ダイアログのコードをgasで作りました
- GASをWEB公開して、Interactive ComponentsのリクエストURLに上記のURLを反映
- slackで実行したが、ボタン押しても反応がない。
Slash Commandsに登録したGASのJS
javascript
1function doPost(e) { 2 3 var btn = { 4 "text": "日報を書きますか?", 5 "attachments": [ 6 { 7 "fallback": "Sorry, no support for buttons.", 8 "callback_id": "sendBtn", 9 "color": "#3AA3E3", 10 "attachment_type": "default", 11 "actions": [ 12 { 13 "name": "edit", 14 "text": "書く", 15 "type": "button", 16 "value": "true" 17 }, 18 { 19 "name": "edit", 20 "text": "キャンセル", 21 "type": "button", 22 "value": "false" 23 } 24 ] 25 } 26 ] 27 } 28 29 return ContentService.createTextOutput(JSON.stringify(btn)).setMimeType(ContentService.MimeType.JSON); 30}
Interactive Componentsに登録したGASのJS
javascript
1 2function doPost(e) { 3 var trigger_id = e.parameter.trigger_id; 4 var slackUrl = "https://slack.com/api/dialog.open"; 5 var SLACK_OAUTH_ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty("SLACK_OAUTH_ACCESS_TOKEN"); 6 7 var dialog = { 8 "token": SLACK_OAUTH_ACCESS_TOKEN, // OAuth_token 9 "trigger_id": trigger_id, 10 "dialog": JSON.stringify({ 11 "callback_id": "dialog", 12 "title": "日報を書いてください", 13 "submit_label": "送信する", 14 "elements": [ 15 { 16 "type": "text", 17 "label": "テスト", 18 "name": "test" 19 }, 20 ] 21 }) 22 }; 23 24 var options = { 25 'method' : 'post', 26 'payload' : dialog 27 }; 28 29 UrlFetchApp.fetch(slackUrl, options); 30 return ContentService.createTextOutput(); 31 32}
お聞きしたいこと
現コードの間違いがあれば、お聞きしたいです。
また、どのようにすればダイアログを表示できるのか、アドバイスいただけないでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。