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
210
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
79
FileMaker × Vonageの可能性
mobilebiz
0
64
Introduction of Vonage
mobilebiz
0
44
Vonageハッカソン紹介資料
mobilebiz
0
76
VonageHandson in 岡山
mobilebiz
0
54
kintone がビデオ会議システムになる話
mobilebiz
0
61
リアルタイムコミュニケーションのシステムを設計・運用する際のベストプラクティス
mobilebiz
0
69
Vonage概要 Video API
mobilebiz
0
81
Amazon Chime SDK と Vonage Video API の徹底比較
mobilebiz
0
350
Other Decks in Technology
See All in Technology
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
130
20250307_エンジニアじゃないけどAzureはじめてみた
ponponmikankan
2
200
Охота на косуль у древних
ashapiro
0
130
困難を「一般解」で解く
fujiwara3
8
2.4k
【Snowflake九州ユーザー会#2】BigQueryとSnowflakeを比較してそれぞれの良し悪しを掴む / BigQuery vs Snowflake: Pros & Cons
civitaspo
4
1.4k
遷移の高速化 ヤフートップの試行錯誤
narirou
6
2k
Amazon Aurora のバージョンアップ手法について
smt7174
2
190
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
800
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.9k
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
180
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
1.2k
エンジニアのキャリアパスと、 その中で自分が大切にしていること
noteinc
3
890
Featured
See All Featured
Designing for humans not robots
tammielis
250
25k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Scaling GitHub
holman
459
140k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
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