Save 37% off PRO during our Black Friday Sale! »

TwilioとStripeを使った従量課金サービスの裏側

 TwilioとStripeを使った従量課金サービスの裏側

「1分100円からビジネス相談可能な」通話課金機能の開発のお話。

A56bce10a5ba94568770ea0ae5160715?s=128

tetsuco9

May 20, 2019
Tweet

Transcript

  1. TwilioとStripeを使っ た従量課金サービス の裏側

  2. 昨年8月に出したサービスの開 発秘話をお届けします。 2

  3. 村上哲平@tetsuco9 □ 年 株式会社ビザスク ▪ 新卒入社 □ 年 千葉大学 卒業

    □ 年 株式会社ビザスク ▪ インターン 3
  4. 4 □ 通話課金機能の概要 □ Twilio・Stripeを使った実装 □ まとめ アジェンダ

  5. 1. 通話課金機能の概要 5

  6. 6 □ 電話相談の一部が対象で、謝礼金額は1分 あたり100~1,000円で設定 □ 現状の1時間単位から小刻みにし、短時間 の利用や時間を気にせずに相談したい人の 需要に答える 通話課金機能とは プレスリリースより抜粋

    https://service.visasq.co m/issues/new から使えます!
  7. 7 通話課金機能とは 着想 従来のスポットコンサルは、 事前に所要時間と金額を決める必要がある → 柔軟に決められるようにしたい → 従量課金にすればよいのでは?

  8. 8 □ 相談した時間を計測する必要がある ▪ ストップウォッチで測るわけにもいかない。。 □ 事前決済から事後決済になる ▪ ちゃんと払ってもらえなかったらどうしよう。。 従量課金にするためには何

    が必要?
  9. 9 □ 相談した時間を計測する必要がある ▪ ストップウォッチで測るわけにもいかない。。 ▪ => 電話API Twilioを活用 □

    事前決済から事後決済になる ▪ ちゃんと払ってもらえなかったらどうしよう。。 ▪ => 仮売上の仕組みを活用 従量課金にするためには何 が必要?
  10. 10 □ エンジニア主導で企画~実装まで担当 ▪ ディレクターとエンジニアの2名体制 ▪ 企画・技術選定からローンチまで約3ヶ月 このプロジェクトについて

  11. 2. Twilio・Stripeを使った実装 11

  12. 12 □ 050の番号一つで複数の電話転送が可能 □ twimlをかくことで、通話を強制的に切ったり、音声メッセー ジを流したりすることができる Twilio Voiceの仕組み

  13. 13 予約から請求までの流れ 正常系 通話予約 通話完了

  14. 14 キャンセル料分の確保 □ stripe.Charge.creat e(capture=False) で 与信だけ通す ▪ キャンセル 料分を確保

    □ 確保期間が7日
  15. 15 予約から請求までの流れ 通話予約 通話完了

  16. 16 通話開始から終了までの流れ

  17. 17 TwiMLで転送

  18. 18 TwiMl 転送 (Pythonコード)

  19. 19 Callログの保存 リクエストパラメーター CallSid AccountSid From To CallStatus CallDuration ApiVersion

    Direction ForwardedFrom CallerName ParentCallSid queued ringing in-progress completed busy failed no-answer canceled □ ログは基本的に 受け取ったもの をそのままDBに 保存 □ 実際、使ってい るのは赤字のも の
  20. 20 重複請求の回避 □ Cronで5分おきにステータスを確認 □ stripe.Charge.create(idempotency_key={案件 ごとにユニークな文字列}) ▪ ベキ等性の保証 □

    [別件で発見]失敗レスポンスを受け取った場合 に、カードや金額を変えて再度決済しようとすると 「keyは同じだがリクエスト内容が異なる」エラーが 発生する ▪ Stripe側のkey保持期限は24時間
  21. 21 通話を強制終了する □ 1回の通話には2種類(inbound, outbound)のcallオブジェク トが存在する □ 両者に聞こえるように音声メッセージを出そうとすると別機能 (Twilio conference)が必要

    □ リダイレクトして依頼者のみに音声メッセージが流れるように 実装 redirect
  22. 3. まとめ 22

  23. 23 □ Twilio便利! ▪ 電話をWeb技術でハックする感覚が新鮮 □ 録音は別料金がかかる ▪ いずれオプション機能をつくりたい □

    [リリース後のトラブル]skypeで取得した050の番号で かけても転送できない □ 決済まわりは、一見シンプルな要件にみえても考えるこ とがたくさん ▪ 経理チームなど部署間の連携も必要になって くる ポイント まとめ
  24. 24 □ (組織にとって)、新しい技術を触ることは大きな学 び □ 何よりエンジニアにとって楽しい □ 時には、好奇心ドリブンで新しいプロジェクトを始 めてみては? 最後に

    メッセージ
  25. 25 □ Twilio Docs ▪ https://jp.twilio.com/docs/voice/twiml#request-parameters □ 『仮売上の仕組みを使って予約フローを改善した 話』 ▪

    https://blog.spacemarket.com/code/improve-reservation-flow-using-un captured-charge/ 参照
  26. Credits Special thanks to all the people who made and

    released these awesome resources for free: □ Presentation template by SlidesCarnival □ Photographs by Unsplash 26