Upgrade to Pro — share decks privately, control downloads, hide ads and more …

外部サービス連携で学んだこと 〜メール編〜

otsuka
November 29, 2023

外部サービス連携で学んだこと 〜メール編〜

otsuka

November 29, 2023
Tweet

Other Decks in Technology

Transcript

  1. © Magic Moment 2021 自己紹介とサービス概要 3 大塚 将平 (Shohei Otsuka)

    株式会社Magic Momentでプロダクトと外部サービ スとの連携部分を主に担当するバックエンドエンジ ニアです。 趣味は飲み歩き(最近は浅草で飲むのが好き)
  2. © Magic Moment 2021 自己紹介とサービス概要 4 営業組織の出力を最大化する Magic Moment Playbook

    営業活動量を圧倒的に増やし、 全ての営業活動から優れた顧客体験を生み出す セールスオペレーションクラウド 最適な営業オペレーションを組織に実装し 大量行動が可能になる仕組みを提供する SaaS を提供
  3. © 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> 返信 返信
  4. © Magic Moment 2021 思い出 〜返信〜 10 • メールの件名が同じである •

    Referencesヘッダーが、スレッド内 の以前のMail IDを参照している、また は同じMail IDを一貫して参照している Gmail公式によると...
  5. © Magic Moment 2021 思い出 〜返信〜 12 • メールサーバを開発しているわけではない •

    Gmail, Outlookと連携しているだけ • API経由で返信情報を取得できるはず
  6. © Magic Moment 2021 思い出 〜エラーハンドリング〜 16 エラーハンドリング難しい • 一時的なエラーは再試行したい

    ◦ 429エラー, 5xx系エラー • 回避可能なエラーは回避したい ◦ 返信対象のメールを削除した → 新規メールとして送信 • 回避不可能なエラーは連携解除したい ◦ ユーザーが削除された HTTP Status Codeだけで単純に判断できない
  7. © Magic Moment 2021 思い出 〜エラーハンドリング〜 17 前回の学びからドキュメントをちゃんと読んだ { "error":

    { "code": "badRequest", "message": "Uploaded fragment overlaps with existing data.", "innerError": { "code": "invalidRange", "request-id": "request-id", "date": "date-time" } } }
  8. © Magic Moment 2021 思い出 〜エラーハンドリング〜 18 知らないエラーコードが返ってきた • MailboxNotEnabledForRESTAPI

    • SyncStateNotFound • ErrorInvalidIdMalformed • etc… 一個ずつググるとどんなエラーか調べることはできるが、一覧で見れるページがない!
  9. © Magic Moment 2021 We are hiring! © Magic Moment

    2021 23 https://www.magicmoment.jp/recruit