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

Twilio Flexで通話録音を実装した話

Twilio Flexで通話録音を実装した話

2020/6/30に開催された Twilio UG JPイベントで使用した資料となります。

Katsumi Takahashi

June 30, 2022
Tweet

More Decks by Katsumi Takahashi

Other Decks in Technology

Transcript

  1.  גࣜձࣾ,%%*΢Σϒίϛϡχέʔγϣϯζ 5XJMJPΤόϯδΣϦετߴڮࠀݾ 5XJMJP'MFYͰ௨࿩࿥ԻΛ࣮૷ͨ͠࿩ ൃ৴࣌ͷ௨࿥͸ҙ֎ͱϋʔυϧߴ͠

  2. גࣜձࣾ,%%*΢Σϒίϛϡχέʔγϣϯζ ϚʔέςΟϯάຊ෦ ΤόϯδΣϦετ Katsumi Takahashi facebook: katsumi.takahashi Twitter: _katsumi github:

    mobilebiz qiita: mobilebiz #赤い芸人 ⾃⼰紹介 6(ΠϕϯτͰͷొஃ͸ͻ͞͠ͿΓʔὑ
  3. 5XJMJP'MFYͱ͸

  4. 5XJMJP'MFY ϑϧΧελϚΠζ͕ՄೳͳίϯλΫτηϯλʔιϦϡʔγϣϯ 5XJMJPͷ֤छαʔϏεΛ૊Έ߹Θͤͨίϯ λΫτηϯλʔͷ౷߹ιϦϡʔγϣϯɻ طଘͷ֤छ"1*ʹՃ͑ͯɺ'MFY6*͕όϯ υϧ͞Εɺ͙͢ʹ࢖͍࢝ΊΔ͜ͱ͕Ͱ͖ Δ͚ͩͰͳ͘ɺϑϧΧελϚΠζ͕Մೳ Ͱ͢ɻ ֤छσʔλΛ෼ੳ͢ΔͨΊͷ'MFY*OTJHIU ΋แؚ͞Ε͍ͯ·͢ɻ

    5XJMJP'MFYͱ͸ Ϋϥ΢υ
  5. 5XJMJP'MFYͷར఺ ϑϧΧελϚΠζՄೳͳΫϥ΢υίϯλΫτηϯλʔιϦϡʔγϣϯ • 1席から5万席まで対応できるスケーラビリティ • ビデオだけでなく、電話やチャット、SMS、メールなどにも対応 • 電話やSMSを使わなければ、ほぼFlexの利⽤料⾦だけで運⽤可能 • ACDの設定変更やUIの改良など、常に進化させていくことができる

    • 業務をシステムに合わせるのではなく、システムを業務に合わせよう 5XJMJP'MFYͱ͸
  6. 'MFYͷར༻ྉ ੮਺PS࣌ؒʹΑΔ՝ۚϞσϧ τϥΠΞϧΞΧ΢ϯτͰ͸ɺԁ෼ͷϙΠϯτ͕෇༩͞Ε·͢ɻ ΞΧ΢ϯτΛΞοϓάϨʔυ͢Δ͜ͱͰɺ ࣌ؒ෼ͷ'MFYར༻࿮Λར༻Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ ༗ྉϓϥϯʢԼهࢀরʣʹ੾Γସ͑Δͱɺ'MFY*OTJHIU͕ར༻Ͱ͖·͢ɻ·ͨɺ੾Γସ͑ޙ͸ ࣌ؒ෼͸Ҿ͖ܧ͕ Ε·ͤΜɻ 'MFYͷྉۚʹ͸ɺి࿩൪߸ར༻ྉɺൃண৴ྉɺ4.4ૹड৴ྉҎ֎ͷඅ༻ؚ͕·Ε·͢ʢҰ෦ؚ·Εͳ͍΋ͷ΋͍͟͝ ·͢ʣɻి࿩൪߸ར༻ྉͳͲ͸ҎԼͷͱ͓ΓͰ͢ɻ

    5XJMJP'MFYͱ͸ ೥݄೔ʙ
  7. %&.0 
 4BMFTGPSDF 5XJMJP'MFY 5XJMJP'MFYͱ͸

  8. 5XJMJP'MFYʹ͓͚Δ௨࿩࿥Ի

  9. ண৴ʹର͢Δ௨࿩࿥Ի 4JOHMFνϟωϧͰͷ࿥Ի w ؅ཧίϯιʔϧ্Ͱઃఆ͢Δ ͜ͱ͕Մೳɻ w 'MFY*OTJHIUTͰͷ࿥Ի֬ೝ΋ Ͱ͖·͢ɻ w ࿥Ի͸4JOHMFνϟωϧʢϞϊ

    ϥϧʣʹͳΓ·͢ɻ ண৴࣌ͷ௨࿥
  10. ண৴ʹର͢Δ௨࿩࿥Ի %VBMνϟωϧͰͷ࿥Ի w 4UVEJPϑϩʔͰ$BMM3FDPSEJOH %VBM Λ։࢝ w 4FOE$BMM5P"HFOUͰ"UUSJCVUFTʹ஋Λઃఆ ͢Δ͜ͱͰ'MFY*OTJHIUTʹ΋දࣔՄೳ ৄ͘͠͸ɺIUUQTXXXUXJMJPDPNEPDT

    fl FYEFWFMPQFSJOTJHIUTFOBCMFEVBMDIBOOFMSFDPSEJOHT ண৴࣌ͷ௨࿥
  11. ൃ৴ͷ௨࿥͸Ͳ͏͢Δʁ μΠϠϧύουͰൃ৴࣌͸ɺ4UVEJPϑϩʔ͸ܦ༝͠ͳ͍ ؅ཧίϯιʔϧ͔Β'MFY%JBMQBEΛ༗ޮԽ͢Δ͜ͱ͕Ͱ͖·͢ %JBMQBE͕༗ޮʹͳ͍ͬͯΔͱɺը໘্෦ʹΞΠίϯ͕දࣔ͞Ε·͢ ൃ৴࣌ͷ௨࿥

  12. 1MVHJOͰରԠͰ͖ͦ͏ʂ 5XJMJPͷαϙʔτϖʔδʹͦΕΒ͖͠هࡌ w "DUJPO'SBNFXPSLͰɺ "DDFQU5BTLΠϕϯτΛ)PPL w QBZMPBEҾ਺಺ʹ͋Δ DPOGFSFODF0QUJPOTSFDPSE ΛUSVFʹ͢Δͱ࿥ԻͰ͖Δ w

    $POGFSFODFͷ࿥ԻػೳΛ࢖ͬ ͯ࿥Ի͢Δख๏ͳͷͰɺ%VBM ʹରԠͰ͖ͳ͍͠ɺ*OTJHIUTʹ ΋ग़ͯ͜ͳ͍ʢٽʣ IUUQTTVQQPSUUXJMJPDPNIDFOVTBSUJDMFT$BMM3FDPSEJOHXJUI5XJMJP'MFY ൃ৴࣌ͷ௨࿥
  13. ਺࣌ؒΛඅ΍͠ɺ 
 ৺͕ંΕͦ͏ʹͳΔ ൃ৴࣌ͷ௨࿥

  14. ͦ͏ͩʂ3FDPSEJOH"1*Λ࢖͓͏ 3FDPSEJOH"1*Ͱɺ௨࿩தͷίʔϧʹରͯ͠%VBM࿥Ի͕Ͱ͖Δʂ ඞཁͳͷ͸$BMM4JE ͖͞΄Ͳͷϔϧϓهࣄʹ͋ͬͨɺ"DUJPO'SBNFXPSLΛ࢖͑͹5BTLͷ৘ใ͕ͱΕΔ͔ Βɺ͔ͦ͜ΒDPOGFSFODF͕औΕͯɺඞવతʹ$BMM4JE΋औΕΜ͡ΌͶʁ ൃ৴࣌ͷ௨࿥

  15. "DUJPO'SBNFXPSLͱ͸ 'MFY6*Λߏ੒͢ΔҰͭͷ෦඼ ൃ৴࣌ͷ௨࿥

  16. "DUJPO'SBNFXPSL 'MFY্ͷಈ࡞Λఆ͍ٛͯ͠ΔϑϨʔϜϫʔΫ 'MFY6*͸ৗʹΠϕϯτσʔλΛൃ৴͠ɺϢʔβ ʔ͕'MFY6*ͱͲͷΑ͏ʹ૬ޓ࡞༻͍ͯ͠Δ͔Λ هड़͍ͯ͠·͢ɻϓϥάΠϯΛ࡞੒͢Δࡍɺ "DUJPOT'SBNFXPSLΛ࢖༻͢Δͱɺ͜ΕΒͷ ΠϕϯτΛར༻͠ɺ'MFY6*΍$3.σʔλɺ· ͨ͸ͦͷଞͷσʔλΛͲͷΑ͏ʹมߋ͍͔ͨ͠ Λهड़͢ΔಠࣗͷϩδοΫΛఆٛ͢Δ͜ͱ͕Ͱ ͖·͢ɻΞΫγϣϯ͕ىಈ͢Δલ΍ޙʹΠϕϯ

    τΛొ࿥ͨ͠ΓɺΞΫγϣϯͷಈ࡞Λஔ͖׵͑ ͨΓ͢Δ͜ͱ΋ՄೳͰ͢ɻ ൃ৴࣌ͷ௨࿥ ͦ͏͔ʂ"DUJPOT'SBNFXPSLΛ࢖͏ͱΠϕϯτΛ)PPLͰ͖ΔΜͩ
  17. ͲΜͳ"DUJPO͕͋Δͷʁ υΩϡϝϯτ͕༏͘͠ڭ͑ͯ͘ΕΔ IUUQTBTTFUT fl FYUXJMJPDPNEPDTSFMFBTFT fl FYVJ"DUJPOTIUNM ͜ͷϖʔδʹɺ"DUJPO'SBNFXPSLͷ .FNCFS͕هࡌ͞Ε͍ͯΔɻ͜ΕΛΠ ϕϯτͱͯ͠ϑοΫ͢Δʹ͸ɺ

    fl FY"DUJPOTBEE-JTUFOFS 
 lCFGPSF"DDFQU5BTLz  QBZMPBE \ 
 ॲཧΛهࡌ^  .FNCFSͷ಄ʹBGUFSͱ͔CFGPSFΛͭ ͚ͯϦεφʔΛొ࿥͢ΔͷͶɾɾ ൃ৴࣌ͷ௨࿥
  18. ͳΜͯΘ͔Γʹ͍͘Μͩʂ ൃ৴࣌ͷ௨࿥

  19. 'MFY&WFOUͬͯͷ΋͋Δ ͬͪ͜ͷ΄͏͕௚ײతͩΑͶ ൃ৴࣌ͷ௨࿥ w 'MFY&WFOU͸ɺ'MFY.BOBHFSΛ࢖ͬ ͯΠϕϯτΛ)PPL͢Δ͜ͱ͕Ͱ͖Δ ࢓૊ΈΒ͍͠ w ͔͠͠ɺ5BTLʹؔ͢ΔΠϕϯτ͸ఆ ٛ͞Ε͍ͯͳ͍

    w ݁ہ"DUJPOT'SBNFXPSLΛ࢖͏͠ ͔ͳ͍
  20. 'MFY6*7FS̎͸͍͍ͧʔ 'MFY&WFOUT͕֦ு͞Εͯɺ5BTLपΓͷΠϕϯτ΋औΕΔʂ IUUQTBTTFUT fl FYUXJMJPDPNEPDTSFMFBTFT fl FYVJCFUB ൃ৴࣌ͷ௨࿥

  21. ؾΛऔΓ௚ͯ͠ɺ"DDFQU5BTL ͦ΋ͦ΋ΠϕϯτϦεφʔ͸Ͳ͜ʹॻ͘ʁ ൃ৴࣌ͷ௨࿥ ϓϥάΠϯͷҰ൪࠷ॳʹ࣮ߦ͞ΕΔ 
 JOJUϝιουͰఆٛͪ͠Ό͓͏

  22. QBZMPBEͷத਎͸ʁ υΩϡϝϯτʹ͸͜͏ॻ͔Ε͍ͯΔ w DPOGFSFODF0QUJPOT͸ɺલड़ͷ௨Γ%VBMͰͷ ௨࿥ʹ͸͔ͭ͑ͳͦ͞͏ɻ w ٯʹUBTL͕औಘͰ͖Ε͹ɺண৴࣌ͷॲཧͱಉ༷ ʹɺ࿥Ի༻ͷ"UUSJCVUFT΋௥ՃͰ͖Δ͠ɺ৭ʑ ͱͰ͖ͦ͏ɻ w

    ͦ΋ͦ΋UBTLʹ͸Կ͕ೖ͍ͬͯΔͷ͔ௐ΂Δඞ ཁ͕͋Δɻ ൃ৴࣌ͷ௨࿥
  23. QBZMPBEUBTLDPOGFSFODFΛऔಘ DPOGFSFODF͕Ͱ͖ΔλΠϛϯά͸গ͠஗͍ͷͰ஫ҙ ൃ৴͔Ͳ͏͔͸ɺBUUSJCVUFTEJSFDUJPOΛ൑ఆ DPOGFSFODF͕Ͱ͖Δ·Ͱ΢ΣΠςΟϯά ൃ৴࣌ͷ௨࿥

  24. DPOGFSFODFͷϝϯόʔΛऔಘ ૬ख͕Ԡ౴͔ͯ͠Βϝϯόʔ͕֬ఆ͢ΔͷͰɺ͜͜Ͱ΋ΠϕϯτϑοΫ JUFN"EEFEΠϕϯτΛϑοΫ JUFNEFTDSJQUPSLFZ͕DBMM4JE 'VODUJPOTΛݺͼग़ͯ͠௨࿥։࢝ ൃ৴࣌ͷ௨࿥ !TTU@C͞Μͷ2JJUBͷهࣄΛࢀߟʹ͠·ͨ͠ʂ 
 IUUQTRJJUBDPNTTU@CJUFNTFFGBCE

  25. ͳͥ'VODUJPOTʁ 'MFY6*͔Β௚઀3FDPSEJOH"1*Λݺ͹ͳ͍ཧ༝ • Flex Plugins のコードはブラウザ上で実⾏される • Flex Plugins で

    Twilio API を呼ぼうとすると、認証情報をソースに書かなく てはならない • ソースを解析されると、API Keyなどが漏洩してしまう(これはマズい) • 認証情報を含む API アクセスは Functions に任せて、Plugins からは Functions を呼ぶようにする IUUQTXXXUXJMJPDPNEPDT fl FYEFWFMPQFSQMVHJOTDBMMGVODUJPOT ൃ৴࣌ͷ௨࿥
  26. 'MFY*OTJHIUTͰ΋֬ೝ͍ͨ͠ ண৴࣌ͱಉ༷ʹɺUBTLBUUSJCVUFTʹ஋Λઃఆ͢Δ ͜ͷล΋௥Ճ͠ͳ͍ͱग़ͯ͘Εͳ͍ ൃ৴࣌ͷ௨࿥

  27. Ͱ͖ͨʂ ൃ৴࣌ͷ௨࿥ Ͱ΋4BMFTGPSDF*OUFHSBUJPOͰ͸ಈ͔ͳ͍ɾɾɾ

  28. $MJDLUP%JBMΛΞοϓάϨʔυ 'MFYͷ*OUFHSBUJPOϖʔδ಺ʹϚΠάϨʔγϣϯϘλϯ͕͋Δ ͜ΕͰ4BMFTGPSDF*OUFHSBUJPOͰ΋ 
 ൃ৴௨࿥͕Ͱ͖ΔΑ͏ʹͳΓ·ͨ͠ʂ ൃ৴࣌ͷ௨࿥

  29. (JU)VCʹ͋͛ͯ͋Γ·͢ IUUQTHJUIVCDPNNPCJMFCJ[QMVHJOPVUCPVOESFDPSEJOH ൃ৴࣌ͷ௨࿥

  30. %&.0 
 4BMFTGPSDF 5XJMJP'MFY ൃ৴࣌ͷ௨࿥

  31. I can’t wait to see what you build a flex

    plugin! 5IBOLZPV