Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
外部サービス連携で学んだこと 〜メール編〜
Search
otsuka
November 29, 2023
Technology
0
77
外部サービス連携で学んだこと 〜メール編〜
otsuka
November 29, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
マルチモーダルデータ基盤の課題と観点
neonankiti
1
110
AWS パートナー企業でテクニカルサポートに従事して 3年経ったので思うところをまとめてみた
kazzpapa3
1
210
"君は見ているが観察していない"で考えるインシデントマネジメント
grimoh
4
1k
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
28k
家具家電付アパートの冷蔵庫をIoT化してみた!
scbc1167
0
140
SREの前に
nwiizo
11
2.6k
3次元点群データ「VIRTUAL SHIZUOKA』のオープンデータ化による恩恵と協働の未来/FOSS4G Japan 2024
kazz24s
0
120
OCI Data Integration技術情報 / ocidi_technical_jp
oracle4engineer
PRO
1
2.6k
「視座」の上げ方が成人発達理論にわかりやすくまとまってた / think_ perspective_hidden_dimensions
shuzon
2
16k
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
Postmanの日本市場におけるDevRel (的) 活動 / Postman's DevRelish activities in Japan
yokawasa
1
120
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
0
1.1k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
360
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
15
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
Building an army of robots
kneath
302
42k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Transcript
© Magic Moment 2021 外部サービス連携で学んだこと ~メール編~ © Magic Moment 2021
Shohei Otsuka 株式会社 Magic Moment
© Magic Moment 2021 © Magic Moment 2021 自己紹介とサービス概要 2
© Magic Moment 2021 自己紹介とサービス概要 3 大塚 将平 (Shohei Otsuka)
株式会社Magic Momentでプロダクトと外部サービ スとの連携部分を主に担当するバックエンドエンジ ニアです。 趣味は飲み歩き(最近は浅草で飲むのが好き)
© Magic Moment 2021 自己紹介とサービス概要 4 営業組織の出力を最大化する Magic Moment Playbook
営業活動量を圧倒的に増やし、 全ての営業活動から優れた顧客体験を生み出す セールスオペレーションクラウド 最適な営業オペレーションを組織に実装し 大量行動が可能になる仕組みを提供する SaaS を提供
© Magic Moment 2021 外部サービスとの連携 5
© Magic Moment 2021 メール連携機能開発の思い出 6 • 返信メールの紐づけ • エラーハンドリング
© Magic Moment 2021 © Magic Moment 2021 返信メールの紐づけ 7
© Magic Moment 2021 思い出 〜返信〜 8 GET /messages それぞれの関連性を知りたい
© Magic Moment 2021 思い出 〜返信〜 9 Mail_A Mail_B Mail_C
Message-ID: <Mail_A> Message-ID: <Mail_B> In-Reply-To: <Mail_A> References: <Mail_A> Message-ID: <Mail_C> In-Reply-To: <Mail_B> References: <Mail_A><Mail_B> 返信 返信
© Magic Moment 2021 思い出 〜返信〜 10 • メールの件名が同じである •
Referencesヘッダーが、スレッド内 の以前のMail IDを参照している、また は同じMail IDを一貫して参照している Gmail公式によると...
© Magic Moment 2021 思い出 〜返信〜 11 仕様どうしよう.... (ダジャレ)
© Magic Moment 2021 思い出 〜返信〜 12 • メールサーバを開発しているわけではない •
Gmail, Outlookと連携しているだけ • API経由で返信情報を取得できるはず
© Magic Moment 2021 思い出 〜返信〜 13 APIで取得できた。
© Magic Moment 2021 学んだこと 〜返信〜 14 • まずはAPIで取得する方法を調べよう •
公式ドキュメントはちゃんと読もう
© Magic Moment 2021 © Magic Moment 2021 エラーハンドリング 15
© Magic Moment 2021 思い出 〜エラーハンドリング〜 16 エラーハンドリング難しい • 一時的なエラーは再試行したい
◦ 429エラー, 5xx系エラー • 回避可能なエラーは回避したい ◦ 返信対象のメールを削除した → 新規メールとして送信 • 回避不可能なエラーは連携解除したい ◦ ユーザーが削除された HTTP Status Codeだけで単純に判断できない
© Magic Moment 2021 思い出 〜エラーハンドリング〜 17 前回の学びからドキュメントをちゃんと読んだ { "error":
{ "code": "badRequest", "message": "Uploaded fragment overlaps with existing data.", "innerError": { "code": "invalidRange", "request-id": "request-id", "date": "date-time" } } }
© Magic Moment 2021 思い出 〜エラーハンドリング〜 18 知らないエラーコードが返ってきた • MailboxNotEnabledForRESTAPI
• SyncStateNotFound • ErrorInvalidIdMalformed • etc… 一個ずつググるとどんなエラーか調べることはできるが、一覧で見れるページがない!
© Magic Moment 2021 思い出 〜エラーハンドリング〜 19 Error情報を永続化した
© Magic Moment 2021 学んだこと 〜エラーハンドリング〜 20 • 公式ドキュメントも完璧ではない! •
実際にAPIを叩くんだ!
© Magic Moment 2021 学んだこと 21 • 公式ドキュメントをちゃんと読もう! • 実際にAPIを叩いて確かめる!
© Magic Moment 2021 THANK YOU © Magic Moment 2021
22
© Magic Moment 2021 We are hiring! © Magic Moment
2021 23 https://www.magicmoment.jp/recruit