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
Katsumi Takahashi
June 30, 2022
Technology
0
230
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
140
FileMaker × Vonageの可能性
mobilebiz
0
110
Introduction of Vonage
mobilebiz
0
83
Vonageハッカソン紹介資料
mobilebiz
0
100
VonageHandson in 岡山
mobilebiz
0
88
kintone がビデオ会議システムになる話
mobilebiz
0
110
リアルタイムコミュニケーションのシステムを設計・運用する際のベストプラクティス
mobilebiz
0
91
Vonage概要 Video API
mobilebiz
0
110
Amazon Chime SDK と Vonage Video API の徹底比較
mobilebiz
0
420
Other Decks in Technology
See All in Technology
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
860
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
270
Agile PBL at New Grads Trainings
kawaguti
PRO
1
440
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
Language Update: Java
skrb
2
300
2025年夏 コーディングエージェントを統べる者
nwiizo
0
170
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
180
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
12
4.8k
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
410
いま注目のAIエージェントを作ってみよう
supermarimobros
0
300
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
180
roppongirb_20250911
igaiga
1
240
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Side Projects
sachag
455
43k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
The Language of Interfaces
destraynor
161
25k
Six Lessons from altMBA
skipperchong
28
4k
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