{"id":16696975,"url":"https://github.com/seratch/slack_learning_app_ja","last_synced_at":"2025-04-10T02:52:37.629Z","repository":{"id":56588977,"uuid":"307039220","full_name":"seratch/slack_learning_app_ja","owner":"seratch","description":"Slack プラットフォームの機能を学習するためのチュートリアルアプリ","archived":false,"fork":false,"pushed_at":"2021-12-12T01:48:27.000Z","size":284,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T04:22:33.877Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://j.mp/slack-dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seratch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-25T06:36:47.000Z","updated_at":"2023-06-13T05:57:31.000Z","dependencies_parsed_at":"2022-08-15T21:31:06.899Z","dependency_job_id":null,"html_url":"https://github.com/seratch/slack_learning_app_ja","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Fslack_learning_app_ja","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Fslack_learning_app_ja/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Fslack_learning_app_ja/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seratch%2Fslack_learning_app_ja/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seratch","download_url":"https://codeload.github.com/seratch/slack_learning_app_ja/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248147141,"owners_count":21055482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T17:45:34.637Z","updated_at":"2025-04-10T02:52:37.611Z","avatar_url":"https://github.com/seratch.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Slack アプリ開発体験アプリ\n\n### すぐに試すことができます\n\nhttps://j.mp/slack-dev からインストールできます。開発用のワークスペースなどにインストールして試してみてください。\n\n\u003cimg width=\"600\" src=\"https://user-images.githubusercontent.com/19658/97100273-33edce00-16d5-11eb-87d0-11eb0e205417.png\"\u003e\n\n\u003cimg width=\"600\" src=\"https://user-images.githubusercontent.com/19658/97100270-2fc1b080-16d5-11eb-8b17-bcc5ae86a7db.png\"\u003e\n\n### Slack アプリの設定方法\n\n全ての機能を動作させるためには Slack アプリの設定は以下の通り行う必要があります。https://api.slack.com/apps からアプリを作成、以下の設定を行ってください。末尾にある AWS API Gateway + Lambda へのデプロイ手順を使った場合は Request URL は `https://{xxx}.execute-api.ap-northeast-1.amazonaws.com/default/slack_learning_app_ja` のようになるはずです。\n\n#### Features \u003e App Home\n\n* Show Tabs \u003e Home Tab が有効になっている\n* Show Tabs \u003e Messages Tab が有効になっている\n\n#### Features \u003e Interactivity \u0026 Shortcuts\n\n* Interactivity が有効になっている\n* Request URL が正しく設定されている\n* Shortcuts に以下の二つ追加されている\n  * グローバルショートカット（Callback ID `global-shortcut-example`）\n  * メッセージショートカット（Callback ID `message-shortcut-example`）\n* Select Menus に Request URL と同じ URL が設定されている\n\n#### Features \u003e OAuth \u0026 Permissions\n\n* Redirect URLs に Request URL と同じ URL を設定している\n* Scopes の Bot Token Scopes に以下が設定されている\n  * channels:join\n  * channels:manage\n  * channels:read\n  * chat:write\n  * chat:write.public\n  * commands\n  * im:write\n  * users:read\n\n#### Features \u003e Event Subscriptions\n\nここでの Request URL の設定時には、その URL が応答を返せる状態になっている必要があります。\n\n* Enable Events が有効になっている\n* Request URL が正しく設定されている\n* Subscribe to bot events で以下のイベントが設定されている\n  * app_home_opened\n  * channel_created\n\n### デプロイ\n\n### Heroku などにデプロイする\n\n連携するデータストアなどを適切に設定した後、[対応している Web フレームワーク](https://github.com/slackapi/bolt-python/tree/main/examples)で動かすことができます。\n\n### AWS API Gateway + Lambda にデプロイする方法（一例）\n\n以下は python-lambda というツールを使った設定の手順例です。別のツールを使えば、このような手順でやる必要はありません。\n\n```bash\ncp _env .env\n\n#\n# .env を適切に設定する\n#\n\n# .env の内容を読み込む\nsource .env\n\n#\n# lambda_config.yaml で指定されている IAM Role を作る\n#\nexport policy_name=slack_dev_learning_app_policy\naws iam create-policy \\\n  --policy-name ${policy_name} \\\n  --policy-document '{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\"lambda:InvokeFunction\"],\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"s3:ListBucket\",\n        \"s3:GetObject\",\n        \"s3:GetObjectAcl\",\n        \"s3:PutObject\",\n        \"s3:PutObjectAcl\",\n        \"s3:ReplicateObject\",\n        \"s3:DeleteObject\"\n      ],\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"logs:CreateLogGroup\",\n        \"logs:CreateLogStream\",\n        \"logs:PutLogEvents\"\n      ],\n      \"Resource\": \"arn:aws:logs:*:*:*\"\n    }\n  ]\n}'\nexport account_id=`aws sts get-caller-identity | jq .Account | awk -F\\\" '{print $2}'`\nexport policy_arn=arn:aws:iam::${account_id}:policy/slack_dev_learning_app_policy\n\nexport role_name=slack_dev_learning_app_role\naws iam create-role \\\n  --role-name ${role_name} \\\n  --assume-role-policy-document '{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": { \"Service\": [\"lambda.amazonaws.com\"] },\n      \"Action\": [\"sts:AssumeRole\"]\n    }\n  ]\n}\n'\naws iam attach-role-policy \\\n  --role-name ${role_name} \\\n  --policy-arn ${policy_arn}\n\n#\n# Lambda 関数を作成してデプロイする\n#\npip install python-lambda\nlambda deploy --config-file lambda_config.yaml --requirements requirements.txt\n\n#\n# API Gateway は管理コンソールから設定してください\n#\n# なお、Event Subscriptions の Request URL 設定は\n# URL が正しく動作しているかを検証するため、ここまで完了してからでないと設定できません\n#\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseratch%2Fslack_learning_app_ja","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseratch%2Fslack_learning_app_ja","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseratch%2Fslack_learning_app_ja/lists"}