SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Slack Web API を使用して
Webページにサクッとお問合せ機能を
実装する
2018/10/25 Arcana Meetup #43 Kashiwagi Ryota
自己紹介
• 株式会社スタジオ・アルカナのブログ(2016年、サーバーサイドエンジニアがゼロから
React/Reduxを学習したときの方法を振り返る)に感銘を受け2017年入社をする
• フロントエンジニアになろうとしているが、なんでもする
• 最近ジムに通い始めた
裏テーマ
Smallchatをパ○ってみた
Smallchatとは?
• WebサイトにSlackと連携したチャット機能を持たせることができるもの
• Smallchat https://small.chat/
Smallchat
デモ
構成
Webサイト
構成
Webサイト
Slack Web API
Slack Web API とは?
• Slackのワークスペースの情報を照会するインターフェースです
• こんな感じで呼び出せます
呼び出す前にtokenを取得する必要あり
使用する Slack Web API
メッセージを送信する
{
"ok": true,
"channel": "C1H9RESGL",
"ts": "1503435956.000247",
"message": {
"text": "Here's a message for you",
"username": "ecto1",
"bot_id": "B19LU7CSY",
"attachments": [
{
"text": "This is an attachment",
"id": 1,
"fallback": "This is an attachment's fallback"
}
],
"type": "message",
"subtype": "bot_message",
"ts": "1503435956.000247"
}
}
chat.postMessage
Method URL: https://slack.com/api/chat.postMessage
Preferred HTTP
method:
POST
Argument Example Required
token xxxx-xxxxxxxxx-xxxx Required
channel C1234567890 Required
text Hello world Required
thread_ts 1234567890.123456 Optional
メッセージを受信する
{
"messages": [
{
"type": "message",
"user": "U061F7AUR",
"text": "island",
"thread_ts": "1482960137.003543",
"reply_count": 3,
"replies": [
{
"user": "U061F7AUR",
"ts": "1483037603.017503"
},
{
"user": "U061F7AUR",
"ts": "1483051909.018632"
},
{
"user": "U061F7AUR",
"ts": "1483125339.020269"
}
],
"subscribed": true,
"last_read": "1484678597.521003",
"unread_count": 0,
"ts": "1482960137.003543"
},
{
"type": "message",
"user": "U061F7AUR",
"text": "three for the land",
"thread_ts": "1482960137.003543",
"parent_user_id": "U061F7AUR",
"ts": "1483125339.020269"
}
],
"has_more": true,
"ok": true,
"response_metadata": {
"next_cursor": "bmV4dF90czoxNDg0Njc4MjkwNTE3MDkx"
}
}
conversations.replies
Method URL: https://slack.com/api/conversations.replies
Preferred HTTP
method:
GET
Argument Example Required
token xxxx-xxxxxxxxx-xxxx Required
channel C1234567890 Required
Ts 1234567890.123456 Required
構成
Webサイト
こうなる
ブラウザ
❷ポーリング
https://aws/メッセージ受信 https://slack.com/api/conversations.replies
https://aws/メッセージ送信
受信メッセージ
https://slack.com/api/chat.postMessage
受信メッセージ
❶送信
token
channel
text
thread_ts(ts)
ts
送信メッセージ(res)送信メッセージ(res)
デモ
まとめ
• 今回メッセージ受信をポーリングしていたので、機会があればSlackの
Real Time Messaging API を使ったWebSocket での通信も試してみたい
• サクッと作成するつもりだったが思いの外時間がかかった
• サーバーレス(Node.js)、コンテンツのウィジェット化の知識があれば、
時間はかからなかった
• コードが冗長になっている箇所を放置しているのでキレイにする
おわり

Weitere ähnliche Inhalte

Was ist angesagt?

Microsoft Build 2021 Recap Day
Microsoft Build 2021 Recap DayMicrosoft Build 2021 Recap Day
Microsoft Build 2021 Recap Dayryosuke matsumura
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでNaoyuki Yamada
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Matthew Romaine
 
Google アナリティクスで SharePointの利用状況を確認する
Google アナリティクスでSharePointの利用状況を確認するGoogle アナリティクスでSharePointの利用状況を確認する
Google アナリティクスで SharePointの利用状況を確認するAkihiro Ehara
 
Habakiri advent calendar 2015 総まとめ!
Habakiri advent calendar 2015 総まとめ!Habakiri advent calendar 2015 総まとめ!
Habakiri advent calendar 2015 総まとめ!タカシ キタジマ
 
AWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介しますAWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介しますKeisuke Nishitani
 

Was ist angesagt? (10)

Serverless for VUI
Serverless for VUIServerless for VUI
Serverless for VUI
 
Lt 001
Lt 001Lt 001
Lt 001
 
Microsoft Build 2021 Recap Day
Microsoft Build 2021 Recap DayMicrosoft Build 2021 Recap Day
Microsoft Build 2021 Recap Day
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議
 
Google アナリティクスで SharePointの利用状況を確認する
Google アナリティクスでSharePointの利用状況を確認するGoogle アナリティクスでSharePointの利用状況を確認する
Google アナリティクスで SharePointの利用状況を確認する
 
Habakiri advent calendar 2015 総まとめ!
Habakiri advent calendar 2015 総まとめ!Habakiri advent calendar 2015 総まとめ!
Habakiri advent calendar 2015 総まとめ!
 
Spray intro
Spray introSpray intro
Spray intro
 
AWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介しますAWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介します
 
APIKit
APIKitAPIKit
APIKit
 

Ähnlich wie Copy Smallchat Arcana meetup#43

_WEB の作業が楽になるテクニック総まとめ 第7回
_WEB の作業が楽になるテクニック総まとめ 第7回_WEB の作業が楽になるテクニック総まとめ 第7回
_WEB の作業が楽になるテクニック総まとめ 第7回Kelly Holonic
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataNaoki Shibata
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからYusuke Murata
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれからYohei Yamamoto
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへtakezoe
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクションTakahiro Okumura
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Hitoshi Asai
 
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷wpscala
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付SpaTakahiro Tsuchiya
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介株式会社スカイアーチネットワークス
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringRyu Shindo
 
Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Kazuki Nakajima
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方TakaakiNiikawa
 
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97Shinichiro Yoshida
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ寛 吉田
 

Ähnlich wie Copy Smallchat Arcana meetup#43 (20)

SQLを書くだけでAPIが作れる基盤
SQLを書くだけでAPIが作れる基盤SQLを書くだけでAPIが作れる基盤
SQLを書くだけでAPIが作れる基盤
 
_WEB の作業が楽になるテクニック総まとめ 第7回
_WEB の作業が楽になるテクニック総まとめ 第7回_WEB の作業が楽になるテクニック総まとめ 第7回
_WEB の作業が楽になるテクニック総まとめ 第7回
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれから
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
Webプログラマのための Scala 入門勉強会 @ 渋谷 12/7
 
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
2010/11/2 WebプログラマのためのScala入門勉強会@渋谷
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
 
Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方
 
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
 
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれSalesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
 

Mehr von kasikasikasi

キミスカのフロントエンドを Monorepo化しない話
キミスカのフロントエンドを Monorepo化しない話キミスカのフロントエンドを Monorepo化しない話
キミスカのフロントエンドを Monorepo化しない話kasikasikasi
 
Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.kasikasikasi
 
Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.kasikasikasi
 
社内システムのAWSアカウントにIAMのベストプラクティスを導入した
社内システムのAWSアカウントにIAMのベストプラクティスを導入した社内システムのAWSアカウントにIAMのベストプラクティスを導入した
社内システムのAWSアカウントにIAMのベストプラクティスを導入したkasikasikasi
 
Service Worker を知る
Service Worker を知るService Worker を知る
Service Worker を知るkasikasikasi
 
This is toast ui calendar presentation
This is toast ui calendar presentationThis is toast ui calendar presentation
This is toast ui calendar presentationkasikasikasi
 
Favarite appinchina
Favarite appinchinaFavarite appinchina
Favarite appinchinakasikasikasi
 
How to name variables
How to name variablesHow to name variables
How to name variableskasikasikasi
 
Laravel多言語化対応
Laravel多言語化対応Laravel多言語化対応
Laravel多言語化対応kasikasikasi
 

Mehr von kasikasikasi (12)

キミスカのフロントエンドを Monorepo化しない話
キミスカのフロントエンドを Monorepo化しない話キミスカのフロントエンドを Monorepo化しない話
キミスカのフロントエンドを Monorepo化しない話
 
Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.
 
Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.Changing the matching function from two years ago to now.
Changing the matching function from two years ago to now.
 
社内システムのAWSアカウントにIAMのベストプラクティスを導入した
社内システムのAWSアカウントにIAMのベストプラクティスを導入した社内システムのAWSアカウントにIAMのベストプラクティスを導入した
社内システムのAWSアカウントにIAMのベストプラクティスを導入した
 
Let's CI/CD
Let's CI/CDLet's CI/CD
Let's CI/CD
 
Service Worker を知る
Service Worker を知るService Worker を知る
Service Worker を知る
 
This is toast ui calendar presentation
This is toast ui calendar presentationThis is toast ui calendar presentation
This is toast ui calendar presentation
 
About Nuxt.js
About Nuxt.jsAbout Nuxt.js
About Nuxt.js
 
Favarite appinchina
Favarite appinchinaFavarite appinchina
Favarite appinchina
 
How to name variables
How to name variablesHow to name variables
How to name variables
 
Laravel多言語化対応
Laravel多言語化対応Laravel多言語化対応
Laravel多言語化対応
 
転職とLaravel
転職とLaravel転職とLaravel
転職とLaravel
 

Copy Smallchat Arcana meetup#43