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
Twilio Flexで通話録音を実装した話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Katsumi Takahashi
June 30, 2022
Technology
0
250
Twilio Flexで通話録音を実装した話
2020/6/30に開催された Twilio UG JPイベントで使用した資料となります。
Katsumi Takahashi
June 30, 2022
Tweet
Share
More Decks by Katsumi Takahashi
See All by Katsumi Takahashi
kintoneでコミュニケーションDXを実現しよう
mobilebiz
0
170
FileMaker × Vonageの可能性
mobilebiz
0
130
Introduction of Vonage
mobilebiz
0
100
Vonageハッカソン紹介資料
mobilebiz
0
120
VonageHandson in 岡山
mobilebiz
0
110
kintone がビデオ会議システムになる話
mobilebiz
0
130
リアルタイムコミュニケーションのシステムを設計・運用する際のベストプラクティス
mobilebiz
0
110
Vonage概要 Video API
mobilebiz
0
130
Amazon Chime SDK と Vonage Video API の徹底比較
mobilebiz
0
450
Other Decks in Technology
See All in Technology
Greatest Disaster Hits in Web Performance
guaca
0
300
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.6k
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
Claude Code for NOT Programming
kawaguti
PRO
1
110
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
850
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
190
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
350
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Automating Front-end Workflow
addyosmani
1371
200k
Docker and Python
trallard
47
3.7k
Building Applications with DynamoDB
mza
96
6.9k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
150
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
230
Building the Perfect Custom Keyboard
takai
2
690
The untapped power of vector embeddings
frankvandijk
1
1.6k
Speed Design
sergeychernyshev
33
1.5k
Transcript
גࣜձࣾ,%%*Σϒίϛϡχέʔγϣϯζ 5XJMJPΤόϯδΣϦετߴڮࠀݾ 5XJMJP'MFYͰ௨ԻΛ࣮ͨ͠ ൃ৴࣌ͷ௨ҙ֎ͱϋʔυϧߴ͠
גࣜձࣾ,%%*Σϒίϛϡχέʔγϣϯζ ϚʔέςΟϯάຊ෦ ΤόϯδΣϦετ Katsumi Takahashi facebook: katsumi.takahashi Twitter: _katsumi github:
mobilebiz qiita: mobilebiz #赤い芸人 ⾃⼰紹介 6(ΠϕϯτͰͷొஃͻ͞͠ͿΓʔὑ
5XJMJP'MFYͱ
5XJMJP'MFY ϑϧΧελϚΠζ͕ՄೳͳίϯλΫτηϯλʔιϦϡʔγϣϯ 5XJMJPͷ֤छαʔϏεΛΈ߹Θͤͨίϯ λΫτηϯλʔͷ౷߹ιϦϡʔγϣϯɻ طଘͷ֤छ"1*ʹՃ͑ͯɺ'MFY6*͕όϯ υϧ͞Εɺ͙͢ʹ͍࢝ΊΔ͜ͱ͕Ͱ͖ Δ͚ͩͰͳ͘ɺϑϧΧελϚΠζ͕Մೳ Ͱ͢ɻ ֤छσʔλΛੳ͢ΔͨΊͷ'MFY*OTJHIU แؚ͞Ε͍ͯ·͢ɻ
5XJMJP'MFYͱ Ϋϥυ
5XJMJP'MFYͷར ϑϧΧελϚΠζՄೳͳΫϥυίϯλΫτηϯλʔιϦϡʔγϣϯ • 1席から5万席まで対応できるスケーラビリティ • ビデオだけでなく、電話やチャット、SMS、メールなどにも対応 • 電話やSMSを使わなければ、ほぼFlexの利⽤料⾦だけで運⽤可能 • ACDの設定変更やUIの改良など、常に進化させていくことができる
• 業務をシステムに合わせるのではなく、システムを業務に合わせよう 5XJMJP'MFYͱ
'MFYͷར༻ྉ ੮PS࣌ؒʹΑΔ՝ۚϞσϧ τϥΠΞϧΞΧϯτͰɺԁͷϙΠϯτ͕༩͞Ε·͢ɻ ΞΧϯτΛΞοϓάϨʔυ͢Δ͜ͱͰɺ ࣌ؒͷ'MFYར༻Λར༻Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ ༗ྉϓϥϯʢԼهࢀরʣʹΓସ͑Δͱɺ'MFY*OTJHIU͕ར༻Ͱ͖·͢ɻ·ͨɺΓସ͑ޙ ࣌ؒҾ͖ܧ͕ Ε·ͤΜɻ 'MFYͷྉۚʹɺి൪߸ར༻ྉɺൃண৴ྉɺ4.4ૹड৴ྉҎ֎ͷඅ༻ؚ͕·Ε·͢ʢҰ෦ؚ·Εͳ͍ͷ͍͟͝ ·͢ʣɻి൪߸ར༻ྉͳͲҎԼͷͱ͓ΓͰ͢ɻ
5XJMJP'MFYͱ ݄ʙ
%&.0 4BMFTGPSDF 5XJMJP'MFY 5XJMJP'MFYͱ
5XJMJP'MFYʹ͓͚Δ௨Ի
ண৴ʹର͢Δ௨Ի 4JOHMFνϟωϧͰͷԻ w ཧίϯιʔϧ্Ͱઃఆ͢Δ ͜ͱ͕Մೳɻ w 'MFY*OTJHIUTͰͷԻ֬ೝ Ͱ͖·͢ɻ w Ի4JOHMFνϟωϧʢϞϊ
ϥϧʣʹͳΓ·͢ɻ ண৴࣌ͷ௨
ண৴ʹର͢Δ௨Ի %VBMνϟωϧͰͷԻ w 4UVEJPϑϩʔͰ$BMM3FDPSEJOH %VBM Λ։࢝ w 4FOE$BMM5P"HFOUͰ"UUSJCVUFTʹΛઃఆ ͢Δ͜ͱͰ'MFY*OTJHIUTʹදࣔՄೳ ৄ͘͠ɺIUUQTXXXUXJMJPDPNEPDT
fl FYEFWFMPQFSJOTJHIUTFOBCMFEVBMDIBOOFMSFDPSEJOHT ண৴࣌ͷ௨
ൃ৴ͷ௨Ͳ͏͢Δʁ μΠϠϧύουͰൃ৴࣌ɺ4UVEJPϑϩʔܦ༝͠ͳ͍ ཧίϯιʔϧ͔Β'MFY%JBMQBEΛ༗ޮԽ͢Δ͜ͱ͕Ͱ͖·͢ %JBMQBE͕༗ޮʹͳ͍ͬͯΔͱɺը໘্෦ʹΞΠίϯ͕දࣔ͞Ε·͢ ൃ৴࣌ͷ௨
1MVHJOͰରԠͰ͖ͦ͏ʂ 5XJMJPͷαϙʔτϖʔδʹͦΕΒ͖͠هࡌ w "DUJPO'SBNFXPSLͰɺ "DDFQU5BTLΠϕϯτΛ)PPL w QBZMPBEҾʹ͋Δ DPOGFSFODF0QUJPOTSFDPSE ΛUSVFʹ͢ΔͱԻͰ͖Δ w
$POGFSFODFͷԻػೳΛͬ ͯԻ͢Δख๏ͳͷͰɺ%VBM ʹରԠͰ͖ͳ͍͠ɺ*OTJHIUTʹ ग़ͯ͜ͳ͍ʢٽʣ IUUQTTVQQPSUUXJMJPDPNIDFOVTBSUJDMFT$BMM3FDPSEJOHXJUI5XJMJP'MFY ൃ৴࣌ͷ௨
࣌ؒΛඅ͠ɺ ৺͕ંΕͦ͏ʹͳΔ ൃ৴࣌ͷ௨
ͦ͏ͩʂ3FDPSEJOH"1*Λ͓͏ 3FDPSEJOH"1*Ͱɺ௨தͷίʔϧʹରͯ͠%VBMԻ͕Ͱ͖Δʂ ඞཁͳͷ$BMM4JE ͖͞΄Ͳͷϔϧϓهࣄʹ͋ͬͨɺ"DUJPO'SBNFXPSLΛ͑5BTLͷใ͕ͱΕΔ͔ Βɺ͔ͦ͜ΒDPOGFSFODF͕औΕͯɺඞવతʹ$BMM4JEऔΕΜ͡ΌͶʁ ൃ৴࣌ͷ௨
"DUJPO'SBNFXPSLͱ 'MFY6*Λߏ͢ΔҰͭͷ෦ ൃ৴࣌ͷ௨
"DUJPO'SBNFXPSL 'MFY্ͷಈ࡞Λఆ͍ٛͯ͠ΔϑϨʔϜϫʔΫ 'MFY6*ৗʹΠϕϯτσʔλΛൃ৴͠ɺϢʔβ ʔ͕'MFY6*ͱͲͷΑ͏ʹ૬ޓ࡞༻͍ͯ͠Δ͔Λ هड़͍ͯ͠·͢ɻϓϥάΠϯΛ࡞͢Δࡍɺ "DUJPOT'SBNFXPSLΛ༻͢Δͱɺ͜ΕΒͷ ΠϕϯτΛར༻͠ɺ'MFY6*$3.σʔλɺ· ͨͦͷଞͷσʔλΛͲͷΑ͏ʹมߋ͍͔ͨ͠ Λهड़͢ΔಠࣗͷϩδοΫΛఆٛ͢Δ͜ͱ͕Ͱ ͖·͢ɻΞΫγϣϯ͕ىಈ͢ΔલޙʹΠϕϯ
τΛొͨ͠ΓɺΞΫγϣϯͷಈ࡞Λஔ͖͑ ͨΓ͢Δ͜ͱՄೳͰ͢ɻ ൃ৴࣌ͷ௨ ͦ͏͔ʂ"DUJPOT'SBNFXPSLΛ͏ͱΠϕϯτΛ)PPLͰ͖ΔΜͩ
ͲΜͳ"DUJPO͕͋Δͷʁ υΩϡϝϯτ͕༏͘͠ڭ͑ͯ͘ΕΔ IUUQTBTTFUT fl FYUXJMJPDPNEPDTSFMFBTFT fl FYVJ"DUJPOTIUNM ͜ͷϖʔδʹɺ"DUJPO'SBNFXPSLͷ .FNCFS͕هࡌ͞Ε͍ͯΔɻ͜ΕΛΠ ϕϯτͱͯ͠ϑοΫ͢Δʹɺ
fl FY"DUJPOTBEE-JTUFOFS lCFGPSF"DDFQU5BTLz QBZMPBE \ ॲཧΛهࡌ^ .FNCFSͷ಄ʹBGUFSͱ͔CFGPSFΛͭ ͚ͯϦεφʔΛొ͢ΔͷͶɾɾ ൃ৴࣌ͷ௨
ͳΜͯΘ͔Γʹ͍͘Μͩʂ ൃ৴࣌ͷ௨
'MFY&WFOUͬͯͷ͋Δ ͬͪ͜ͷ΄͏͕ײతͩΑͶ ൃ৴࣌ͷ௨ w 'MFY&WFOUɺ'MFY.BOBHFSΛͬ ͯΠϕϯτΛ)PPL͢Δ͜ͱ͕Ͱ͖Δ ΈΒ͍͠ w ͔͠͠ɺ5BTLʹؔ͢ΔΠϕϯτఆ ٛ͞Ε͍ͯͳ͍
w ݁ہ"DUJPOT'SBNFXPSLΛ͏͠ ͔ͳ͍
'MFY6*7FS͍͍̎ͧʔ 'MFY&WFOUT͕֦ு͞Εͯɺ5BTLपΓͷΠϕϯτऔΕΔʂ IUUQTBTTFUT fl FYUXJMJPDPNEPDTSFMFBTFT fl FYVJCFUB ൃ৴࣌ͷ௨
ؾΛऔΓͯ͠ɺ"DDFQU5BTL ͦͦΠϕϯτϦεφʔͲ͜ʹॻ͘ʁ ൃ৴࣌ͷ௨ ϓϥάΠϯͷҰ൪࠷ॳʹ࣮ߦ͞ΕΔ JOJUϝιουͰఆٛͪ͠Ό͓͏
QBZMPBEͷதʁ υΩϡϝϯτʹ͜͏ॻ͔Ε͍ͯΔ w DPOGFSFODF0QUJPOTɺલड़ͷ௨Γ%VBMͰͷ ௨ʹ͔ͭ͑ͳͦ͞͏ɻ w ٯʹUBTL͕औಘͰ͖Εɺண৴࣌ͷॲཧͱಉ༷ ʹɺԻ༻ͷ"UUSJCVUFTՃͰ͖Δ͠ɺ৭ʑ ͱͰ͖ͦ͏ɻ w
ͦͦUBTLʹԿ͕ೖ͍ͬͯΔͷ͔ௐΔඞ ཁ͕͋Δɻ ൃ৴࣌ͷ௨
QBZMPBEUBTLDPOGFSFODFΛऔಘ DPOGFSFODF͕Ͱ͖ΔλΠϛϯάগ͍͠ͷͰҙ ൃ৴͔Ͳ͏͔ɺBUUSJCVUFTEJSFDUJPOΛఆ DPOGFSFODF͕Ͱ͖Δ·ͰΣΠςΟϯά ൃ৴࣌ͷ௨
DPOGFSFODFͷϝϯόʔΛऔಘ ૬ख͕Ԡ͔ͯ͠Βϝϯόʔ͕֬ఆ͢ΔͷͰɺ͜͜ͰΠϕϯτϑοΫ JUFN"EEFEΠϕϯτΛϑοΫ JUFNEFTDSJQUPSLFZ͕DBMM4JE 'VODUJPOTΛݺͼग़ͯ͠௨։࢝ ൃ৴࣌ͷ௨ !TTU@C͞Μͷ2JJUBͷهࣄΛࢀߟʹ͠·ͨ͠ʂ IUUQTRJJUBDPNTTU@CJUFNTFFGBCE
ͳͥ'VODUJPOTʁ 'MFY6*͔Β3FDPSEJOH"1*Λݺͳ͍ཧ༝ • Flex Plugins のコードはブラウザ上で実⾏される • Flex Plugins で
Twilio API を呼ぼうとすると、認証情報をソースに書かなく てはならない • ソースを解析されると、API Keyなどが漏洩してしまう(これはマズい) • 認証情報を含む API アクセスは Functions に任せて、Plugins からは Functions を呼ぶようにする IUUQTXXXUXJMJPDPNEPDT fl FYEFWFMPQFSQMVHJOTDBMMGVODUJPOT ൃ৴࣌ͷ௨
'MFY*OTJHIUTͰ֬ೝ͍ͨ͠ ண৴࣌ͱಉ༷ʹɺUBTLBUUSJCVUFTʹΛઃఆ͢Δ ͜ͷลՃ͠ͳ͍ͱग़ͯ͘Εͳ͍ ൃ৴࣌ͷ௨
Ͱ͖ͨʂ ൃ৴࣌ͷ௨ Ͱ4BMFTGPSDF*OUFHSBUJPOͰಈ͔ͳ͍ɾɾɾ
$MJDLUP%JBMΛΞοϓάϨʔυ 'MFYͷ*OUFHSBUJPOϖʔδʹϚΠάϨʔγϣϯϘλϯ͕͋Δ ͜ΕͰ4BMFTGPSDF*OUFHSBUJPOͰ ൃ৴௨͕Ͱ͖ΔΑ͏ʹͳΓ·ͨ͠ʂ ൃ৴࣌ͷ௨
(JU)VCʹ͋͛ͯ͋Γ·͢ IUUQTHJUIVCDPNNPCJMFCJ[QMVHJOPVUCPVOESFDPSEJOH ൃ৴࣌ͷ௨
%&.0 4BMFTGPSDF 5XJMJP'MFY ൃ৴࣌ͷ௨
I can’t wait to see what you build a flex
plugin! 5IBOLZPV