SBC ๊ตฌ์„ฑ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” SBC๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

์ง€์›๋˜๋Š” ๊ณต๊ธ‰์—…์ฒด ๋ฐ ํŽŒ์›จ์–ด

๊ตฌ์„ฑ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ง€์›๋˜๋Š” SBC ๊ณต๊ธ‰์—…์ฒด ๋˜๋Š” ๋ชจ๋ธ ๋ฐ ํŽŒ์›จ์–ด ๋ฒ„์ „ ํ‘œ๋ฅผ ๊ฒ€ํ† ํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” SBC ์‹ ํ˜ธ ๋ฐ ๋ฏธ๋””์–ด ํ”„๋กœํ† ์ฝœ

์ง€์›๋˜๋Š” ์‹ ํ˜ธ ๋ฐ ๋ฏธ๋””์–ด ํ”„๋กœํ† ์ฝœ์€ SBC ์‹ ํ˜ธ ๋ฐ ๋ฏธ๋””์–ด ํ”„๋กœํ† ์ฝœ ๋ฌธ์„œ์— ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. AES_CM_128_HMAC_SHA1_80๋งŒ ์ง€์›๋˜๋Š” SRTP ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ์ž…๋‹ˆ๋‹ค.

SBC์˜ TLS ๊ตฌ์„ฑ

์Šน์ธ๋œ ์ธ์ฆ ๊ธฐ๊ด€ ๊ณต๊ธ‰์—…์ฒด์—์„œ SBC์šฉ TLS ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ ์นด๋“œ ์ธ์ฆ์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TLS ์ธ์ฆ์„œ ๋‚ด์—์„œ ์ผ๋ฐ˜ ์ด๋ฆ„ (CN) ์†์„ฑ ๋˜๋Š” ์ฃผ์ฒด ๋Œ€์ฒด ์ด๋ฆ„ (SAN) ์†์„ฑ์— SBC์˜ ์ •๊ทœํ™”๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„ (FQDN)์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ SBC์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ TLS ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฆ์„œ์˜ SAN์— ๋ชจ๋“  SBC FQDN์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šน์ธ๋œ ์ธ์ฆ ๊ธฐ๊ด€ ๊ณต๊ธ‰์—…์ฒด

  • DigiCert
  • Entrust DataCard
  • GlobalSign
  • GoDaddy
  • Sectigo (์ด์ „ ๋ช…์นญ: Comodo)

SBC TLS ๊ตฌ์„ฑ

  1. ์š”์ฒญ๋œ TLS ์ธ์ฆ์„œ์™€ ์—ฐ๊ฒฐ๋œ ๋ฃจํŠธ CA ์ธ์ฆ์„œ๋ฅผ SBC์˜ ์‹ ๋ขฐ ์ฒด์ธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. Google์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํŠธ CA๋ฅผ SBC์˜ ์‹ ๋ขฐ ์ฒด์ธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Google ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. Google์˜ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํŠธ CA๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    2. GTS Root R1 (GTSR1)์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
    3. ํ•„์š”ํ•œ ๊ฒฝ์šฐ GlobalSign ๋ฃจํŠธ CA ์ธ์ฆ์„œ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
    4. SBC ํ‚ค ์ €์žฅ์†Œ์— ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    5. SBC์— ๋Œ€ํ•œ ์ƒํ˜ธ ์ธ์ฆ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ง€์›๋˜๋Š” TLS ๋ฒ„์ „ ๋ฐ ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ ๊ตฌ์„ฑ TLS ๋ฒ„์ „ 1.2 ์ด์ƒ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์•”ํ˜ธํ™” ์Šค์œ„ํŠธ:

    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    • HTLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    • TLS_AES_256_GCM_SHA384
    • TLS_CHACHA20_POLY1305_SHA256
    • TLS_AES_128_GCM_SHA256

GTP์—์„œ SIP ํŠธ๋ ํฌ ๋งŒ๋“ค๊ธฐ

  1. ํ†ตํ•ฉ ์ฝ˜์†”๋กœ ์ด๋™ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. SIP ํŠธ๋ ํฌ ํƒญ์œผ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ SIP ํŠธ๋ ํฌ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ชจ๋“  ํ•„์ˆ˜ ์ž…๋ ฅ๋ž€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ „ํ™” ํ†ต์‹  ์—ฐ๊ฒฐ ๋„คํŠธ์›Œํฌ ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€ํ† 

๋„คํŠธ์›Œํฌ ๋ฐ ์—ฐ๊ฒฐ ์š”๊ตฌ์‚ฌํ•ญ ํ‘œ๋Š” ๊ฐœ๋… ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

GTP์— ๋Œ€ํ•œ SIP ์—ฐ๊ฒฐ์„ ์œ„ํ•ด SBC ๊ตฌ์„ฑ

์ง€์›๋˜๊ณ  ์ธ์ฆ๋œ SBC ๊ณต๊ธ‰์—…์ฒด ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SBC๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ณต๊ธ‰์—…์ฒด์— ๊ด€ํ•œ ์ž์„ธํ•œ ์•ˆ๋‚ด๋Š” SBC ์‹ ํ˜ธ ๋ฐ ๋ฏธ๋””์–ด ํ”„๋กœํ† ์ฝœ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

SIP ํ”„๋กœํ•„์ด ํŠน์ • ์ง€์—ญํ™”๋œ GTP์˜ SIP ์„œ๋ฒ„ (์˜ˆ: us.telephony.goog)๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” TCP ํฌํŠธ 5672๋ฅผ ํ†ตํ•ด TLS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. SIP ๋ฐ SIPREC ํ†ตํ•ฉ ๊ตฌ์„ฑ:

  • Dialogflow ๊ฐ€์ƒ ์—์ด์ „ํŠธ์— ์—ฐ๊ฒฐํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ SBC์—์„œ SIP ํ†ตํ•ฉ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€ํ™”ํ˜• AI Agent Assist ๋˜๋Š” Insights ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ์‚ฌ๋ณธ์ด GTP๋กœ ํฌํฌ๋˜๋„๋ก SBC์—์„œ SIPREC ํ†ตํ•ฉ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • SBC ๊ณต๊ธ‰์—…์ฒด์™€ ํ•จ๊ป˜ SIPREC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ณ„๋„์˜ ๋ผ์ด์„ ์Šค ๊ธฐ๋Šฅ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๊ตฌ๋งคํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SIP OPTIONS ํ•‘์„ ์‚ฌ์šฉํ•œ SIP ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

๊ณ ๊ฐ SBC์—์„œ GTP๋กœ SIP OPTIONS ํ•‘ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ SBC๊ฐ€ GTP์—์„œ SIP 200 OK๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. SIP 200 OK๊ฐ€ ์ˆ˜์‹ ๋˜์ง€ ์•Š์œผ๋ฉด SIP ๋ฌธ์ œ ํ•ด๊ฒฐ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜์„ธ์š”.

๋Œ€ํ™”ํ˜• AI ๋Œ€ํ™”์˜ SIP ํ—ค๋” ๊ตฌ์„ฑ

  1. SIP INVITE ์ค‘์— SIP ํ—ค๋” (Call-Info ๋˜๋Š” UUI)๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋Œ€ํ™”ํ˜• AI์˜ ๋Œ€ํ™” ID๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. Call-Info SIP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ User-to-User-Info (UUI) SIP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SIP ํ—ค๋”๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  3. (์„ ํƒ์‚ฌํ•ญ) ์ฐธ์—ฌ์ž ์—ญํ•  (END_USER ๋ฐ HUMAN_AGENT)๊ณผ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ์ˆœ์„œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฐธ์—ฌ์ž ์—ญํ•  ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  4. (์„ ํƒ์‚ฌํ•ญ) ํŠน์ • ๋Œ€ํ™”์˜ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด MatchIntentRequest API๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

ํ…Œ์ŠคํŠธ ํ†ตํ™” ์ˆ˜ํ–‰

ํ…Œ์ŠคํŠธ ํ†ตํ™”๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  SIP์™€ ๋ฏธ๋””์–ด๊ฐ€ GTP SIP ์„œ๋ฒ„ (74.125.88.128/25) ๋ฐ RTP ๋ฏธ๋””์–ด ์„œ๋ฒ„ (74.125.39.0/24)๋กœ ์ด๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. SIP 200 OK ์‘๋‹ต ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SIP 400's ์˜ค๋ฅ˜ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ์ˆ˜์‹ ๋˜๋ฉด GTP๊ฐ€ SIP ํ—ค๋” ๋˜๋Š” SIP ๋ฏธ๋””์–ด SDP ๊ตฌ์„ฑ์„ ๊ฑฐ๋ถ€ํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌธ์ œ ํ•ด๊ฒฐ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. SIP 600's ์˜ค๋ฅ˜ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํ• ๋‹น๋Ÿ‰ ๊ด€๋ จ ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

Dialogflow ๋Œ€ํ™” ๊ธฐ๋ก ๊ฒ€ํ† 

์ด ์„น์…˜์€ Dialogflow ๊ฐ€์ƒ ์—์ด์ „ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด์ „ ํ…Œ์ŠคํŠธ ํ˜ธ์ถœ์—์„œ SIP 200 OK ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋œ ๊ฒฝ์šฐ Conversational AI Google Cloud ํ”„๋กœ์ ํŠธ์˜ Dialogflow ๋Œ€ํ™” ๊ธฐ๋ก์„ ํ™•์ธํ•˜์—ฌ ์ƒˆ ๋Œ€ํ™”๊ฐ€ ๋กœ๊น…๋˜๊ณ  ํ˜ธ์ถœ ์ •๋ณด ํ—ค๋”์— ์ง€์ •๋œ ๋Œ€ํ™” ID๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

(์„ ํƒ์‚ฌํ•ญ) Google Cloud ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ๊ฒ€ํ† 

๋Œ€ํ™”ํ˜• AI Google Cloud ํ”„๋กœ์ ํŠธ์˜ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ 'incoming_call' ๋กœ๊ทธ์—์„œ Dialogflow ํ™œ๋™์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Dialogflow์˜ ์ˆ˜์‹  ์ „ํ™” ํ™œ๋™์„ ๊ฒ€ํ† ํ•œ ๋‹ค์Œ '์ฟผ๋ฆฌ ์‹คํ–‰'์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    logName="projects/$PROJECT_ID/logs/dialogflow.googleapis.com%2Fincoming_call

    $PROJECT_ID = ์ „ํ™” ํ†ต์‹  ํ†ตํ•ฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ Google Cloud ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.

  2. ๋˜๋Š” ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์˜ ๋ชจ๋“  ๋กœ๊ทธ ์ด๋ฆ„ ๋“œ๋กญ๋‹ค์šด ์ƒ์ž๋กœ ์ด๋™ํ•˜์—ฌ ๋กœ๊ทธ ์ด๋ฆ„ incoming_call๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  ์ ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Dialogflow๊ฐ€Google Cloud ํ”„๋กœ์ ํŠธ์˜ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ์—์„œ ๋Œ€ํ™”๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค (์ด ๋‹จ๊ณ„๋Š” ๊ฐ์‚ฌ ๋กœ๊น…์ด Dialogflow API์— ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋จ). ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • Google Cloud ํ”„๋กœ์ ํŠธ ๋ฐ ๋Œ€ํ™” ํ”„๋กœํ•„์˜ Dialogflow ๋Œ€ํ™” ์ƒ์„ฑ ์ด๋ฒคํŠธ๋ฅผ ๊ฒ€ํ† ํ•œ ํ›„ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    protoPayload.serviceName=~"dialogflow"
    protoPayload.methodName=~"google.cloud.dialogflow.*.Conversations.CreateConversation"
    protoPayload.request.conversation.conversationProfile="projects/$PROJECT_ID/locations/global/conversationProfiles/$CONVERSATION_PROFILE_ID"