Slack->Notion 서비스를 만들어 보았습니다.
개요
상술한 활동에 관하여 슬라이드에서 말한 일은 상세한 설명이 없다고 생각합니다. 제가 설명해 드리겠습니다.
만든 물건의 데모
Slack Interactive Components 이야기
도대체 무엇을 해야 하는지, 문자에 단축키를 추가하면 바로 조작할 수 있다!
다음과 같이 설정할 수 있습니다:!
Slack에서 자체 제작한 API에서 POST에 대한 내용
샘플은 아래와 같다.
↑ 이쪽 내용을 보내면 ↓ 같은 값을 보낸다.
{
"team": {
"id": "Tから始まるワークスペースのID",
"domain": "domainの設定が入ってくる"
},
"type": "message_action",
"user": {
"id": "UからはじまるユーザーのID",
"name": "ohki_suguru",
"team_id": "Tから始まるワークスペースのID",
"username": "ohki_suguru"
},
"token": "tokenが入ります",
"channel": {
"id": "Cから始まるチャンネルID",
"name": "times-ohki"
},
"message": {
"ts": "1650451183.630089",
"text": "Notion General Managerさん!!!(ガクブルガクブル)",
"type": "message",
"user": "UからはじまるユーザーのID",
"files": [
{
"id": "F03C66ARCP5",
"mode": "hosted",
"name": "スクリーンショット 2022-04-20 19.36.14.png",
"size": 14957,
"user": "Uから始まるユーザーID",
"title": "スクリーンショット 2022-04-20 19.36.14.png",
"created": 1650451165,
"editable": false,
"filetype": "png",
"mimetype": "image/png",
"thumb_64": "https://files.slack.com/files-tmb/T02DLS9291T-F03C66ARCP5-2c0973562a/____________________________2022-04-20_19.36.14_64.png",
"thumb_80": "https://files.slack.com/files-tmb/T02DLS9291T-F03C66ARCP5-2c0973562a/____________________________2022-04-20_19.36.14_80.png",
"username": "",
"is_public": true,
"permalink": "https://[ドメイン].slack.com/files/U02EDFNLYCQ/F03C66ARCP5/____________________________2022-04-20_19.36.14.png",
"thumb_160": "https://files.slack.com/files-tmb/T02DLS9291T-F03C66ARCP5-2c0973562a/____________________________2022-04-20_19.36.14_160.png",
"thumb_360": "https://files.slack.com/files-tmb/T02DLS9291T-F03C66ARCP5-2c0973562a/____________________________2022-04-20_19.36.14_360.png",
"thumb_480": "https://files.slack.com/files-tmb/T02DLS9291T-F03C66ARCP5-2c0973562a/____________________________2022-04-20_19.36.14_480.png",
"timestamp": 1650451165,
"is_starred": false,
"original_h": 92,
"original_w": 572,
"thumb_tiny": "AwAHADChGyg/MqnjHOabtX++PyNNooAdtH98fkaNo/vj8jTaKAFwP71GBj71JRQB/9k=",
"is_external": false,
"pretty_type": "PNG",
"thumb_360_h": 58,
"thumb_360_w": 360,
"thumb_480_h": 77,
"thumb_480_w": 480,
"url_private": "https://files.slack.com/files-pri/T02DLS9291T-F03C66ARCP5/____________________________2022-04-20_19.36.14.png",
"external_type": "",
"display_as_bot": false,
"has_rich_preview": false,
"permalink_public": "https://slack-files.com/T02DLS9291T-F03C66ARCP5-fe91137596",
"public_url_shared": false,
"media_display_type": "unknown",
"url_private_download": "https://files.slack.com/files-pri/T02DLS9291T-F03C66ARCP5/download/____________________________2022-04-20_19.36.14.png"
}
],
"blocks": [
{
"type": "rich_text",
"block_id": "SLEP",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"text": "Notion General Managerさん!!!(ガクブルガクブル)",
"type": "text"
}
]
}
]
}
],
"upload": false,
"client_msg_id": "c4c704cd-6de9-49b9-bab5-a44aa554aaf7",
"display_as_bot": false
},
"action_ts": "1650453439.118171",
"enterprise": null,
"message_ts": "1650451183.630089",
"trigger_id": "3414357278642.2462893077061.a63cf586f5807cd022be2e7be9d238e2",
"callback_id": "add_notion_task",
"response_url": "https://hooks.slack.com/app/[チームのID]/3426975843201/adqZATalle4XYMtVYhHiVkGE",
"is_enterprise_install": false
}
response_url에 POST를 보내면 결과가 잘 나오는지 메시지를 보낼 수 있습니다!↓ 그렇지!
API 공동 작업 정보
POST https://api.notion.com/v1/pages
2 값 보내기따라서 3에 대해서는 공식 문서에 따라 다음과 같이 발송하였다.
대상 열과 일치하는 열 이름 '작업 이름' 의 이름을 지정하거나, 보낼 때 다른 열의 값을 더 지정하려면 지정하십시오!
Notion용 POST
private function savingNotionTask(string $channelId, string $message, string $databaseId)
{
$client = new \GuzzleHttp\Client();
$NOTION_API_KEY = env('NOTION_SECRET'); // NotionのAPIのキーを環境変数で入れています
$body = '{
"parent": { "database_id": "'.$databaseId.'" },
"properties": {
"タスク名": { // ←ここがカラムのタイトルに当たります。
"title": [
{
"text": {
"content": "'.$channelId.'-'.mb_substr(($message), 0, 30).'"
}
}
]
}
},
"children": [ // このchildrenというのがデータベースのテーブルにおけるタイトルのページの中身になります!
{
"object": "block",
"type": "heading_2",
"heading_2": {
"rich_text": [{ "type": "text", "text": { "content": "Slackから追加されたタスク" } }]
}
},
{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [
{
"type": "text",
"text": {
"content": "'.str_replace("\n", "\\n", $message).'"
}
}
]
}
}
]
}';
$response = $client->request(
'POST',
'https://api.notion.com/v1/pages',
[
'body' => $body,
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$NOTION_API_KEY,
'Content-Type' => 'application/json',
'Notion-Version' => '2022-02-22', // ここについては古いバージョンになっているとエラーとなって動作しません。非公式SDKがこの仕様の餌食となっていることがあります
],
]
);
}
목적지를 보내는 페이지는 아래와 같다!그리고 보낸 칠드렌의 내용도 이렇게 저장됩니다!
Reference
이 문제에 관하여(Slack->Notion 서비스를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ohkisuguru/articles/slack2notion텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)