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
95
外部サービス連携で学んだこと 〜メール編〜
otsuka
November 29, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
1.8k
DB 醬,嗨!哪泥嘎斯基?
line_developers_tw
PRO
0
160
Tensix Core アーキテクチャ解説
tenstorrent_japan
0
360
新卒3年目の後悔〜機械学習モデルジョブの運用を頑張った話〜
kameitomohiro
0
230
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
150
評価の納得感を2段階高める「構造化フィードバック」
aloerina
1
160
Kotlinで学ぶ 代数的データ型
ysknsid25
5
1.1k
Autonomous Database サービス・アップデート (FY25)
oracle4engineer
PRO
2
770
堅牢な認証基盤の実現 TypeScriptで代数的データ型を活用する
kakehashi
PRO
2
220
Agentic DevOps時代の生存戦略
kkamegawa
0
220
今からでも間に合う! 生成AI「RAG」再入門 / Re-introduction to RAG in Generative AI
hideakiaoyagi
1
170
Model Mondays S2E01: Advanced Reasoning
nitya
0
350
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
Thoughts on Productivity
jonyablonski
69
4.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
How STYLIGHT went responsive
nonsquared
100
5.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
KATA
mclloyd
29
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Faster Mobile Websites
deanohume
307
31k
Documentation Writing (for coders)
carmenintech
71
4.9k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Writing Fast Ruby
sferik
628
61k
Code Reviewing Like a Champion
maltzj
524
40k
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