์ด ๊ฐ์ด๋์์๋ ํ๋ก์ ์๋ฒ๋ฅผ ์ค์ ํ๋ ๋ฐ ํ์ํ ๋จ๊ณ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค. ํ๋ก์ ์๋ฒ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ํจ๊ป ์ฌ์ฉํ์ฌ Dialogflow API์์ ์ธ์ฆ์ ๊ฐ์ํํฉ๋๋ค. ์๋ด์ฌ ์ํฌ์คํ์ด์ค์์ UI ๋ชจ๋์ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ LivePerson ๊ธฐ๋ณธ ํํ ๋ฆฌ์ผ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์. LivePerson์์ ๋ชจ๋์ ๋ ๋๋งํ๋ ค๋ฉด ๋์ผํ ๋๋ ํฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ํ๋ก์ ์๋ฒ๊ฐ ๋ชจ๋ ์์ด์ผ ํฉ๋๋ค.
์ด๋ค ํธ์คํ ํ๋ซํผ์์๋ ์ด ํตํฉ ๋ฐฐํฌ๋ฅผ ์ค์ ํ ์ ์์ง๋ง ์ด ์๋ด์์๋ Google์ Cloud Run์ ์ฌ์ฉํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
์ด ํํ ๋ฆฌ์ผ์ ์์ํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋์ง ํ์ธํ์ธ์.
๊ตฌ์ฑ
์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ ๋ค์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
์ฒ์์ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ฅผ ๋ง๋ค ๋ LP_CLIENT_ID
๋ฐ LP_CLIENT_SECRET
๋ณ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๋จ๊ฒจ์ผ ํฉ๋๋ค. LivePerson์ Conversational Cloud ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ๋ ์ด๋ฌํ ๋ณ์๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ ๋ณ์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ๋ํ ์ฒ์์๋ APPLICATION_SERVER_URL
์ DF_PROXY_SERVER_URL
๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํ๋ก์ ์๋ฒ๊ฐ ๋ฐฐํฌ๋๊ณ ํ์ํ ๊ฐ์ ๋ฐํํ ํ์ ๋ ๋ค ์ค์ ํฉ๋๋ค.
LP_ACCOUNT_ID
: LivePerson ๊ณ์ ID์ ๋๋ค.LP_CLIENT_ID
: LivePerson ํด๋ผ์ด์ธํธ ID์ ๋๋ค. ์ด๋ Conversational Cloud ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์น๋๋ฉด LivePerson์์ ์ ๊ณตํฉ๋๋ค. (์ ๋ณด๊ฐ ์ ๊ณต๋๋ฉด ์ ๋ฐ์ดํธํ ๊ฒ์ด๋ฏ๋ก ์ง๊ธ์ ์ด ๋ณ์๋ฅผ ๊ฑด๋๋ฐ์ธ์.)LP_CLIENT_SECRET
: LivePerson ํด๋ผ์ด์ธํธ ๋ณด์ ๋น๋ฐ๋ฒํธ์ ๋๋ค. ์ด๋ Conversational Cloud ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์น๋๋ฉด LivePerson์์ ์ ๊ณตํฉ๋๋ค. (์ ๋ณด๊ฐ ์ ๊ณต๋๋ฉด ์ด ๋ณ์๋ฅผ ์ ๋ฐ์ดํธํ๋ฏ๋ก ์ง๊ธ์ ๊ฑด๋๋ฐ์ธ์.)LP_SENTINEL_DOMAIN
: https://developers.liveperson.com/domain-api.html๋ก ์ด๋ํฉ๋๋ค. ๊ณ์ ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ 'sentinel' ๋๋ฉ์ธ์ ์กฐํํฉ๋๋ค.LP_ACCOUNT_CONFIG_READONLY_DOMAIN
: https://developers.liveperson.com/domain-api.html๋ก ์ด๋ํฉ๋๋ค. ๊ณ์ ๋ฒํธ๋ฅผ ์ ๋ ฅํ๊ณ 'accountConfigReadOnly
' ๋๋ฉ์ธ์ ์กฐํํฉ๋๋ค.APPLICATION_SERVER_URL
: UI ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ URL์ ๋๋ค.JWT_SECRET
: ์ธ์ฆ ํ ํฐ์ ์๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋๋ '๋ณด์' ๋ฌธ๊ตฌ์ ๋๋ค. ๊ธด ์์์ ๋ณด์ ๋น๋ฐ์ด ๊ฐ์ฅ ์์ ํ์ง๋ง ์ด๋ค ๋ฌธ๊ตฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://fusionauth.io/learn/expert-advice/tokens/building-a-secure-jwt/#keys์ ๊ถ์ฅ์ฌํญ์ ์ฐธ๊ณ ํ์ธ์.
์ํ .env
ํ์ผ:
LP_ACCOUNT_ID = 12345678
LP_CLIENT_ID = abc-123-f0f0
LP_CLIENT_SECRET = abc123abc123abc123abc123
LP_SENTINEL_DOMAIN = va.sentinel.liveperson.net
LP_ACCOUNT_CONFIG_READONLY_DOMAIN = z1.acr.liveperson.net
APPLICATION_SERVER_URL = https://my-project.wm.r.appspot.com
JWT_SECRET = an_example_JWT_secret_phrase_please_use_something_better
๋ฐฐํฌ
UI ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ Google Cloud ํธ์คํ ์๋น์ค์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. Google App Engine ๋๋ Cloud Run์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ ๋จ๊ณ์์๋ Cloud Run์ ์๋ก ์ฌ์ฉํฉ๋๋ค.
CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ
๋ก์ปฌ ํฐ๋ฏธ๋์์ ํ์ฑ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ์ฅ์์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ ์ฅ์์ ์ํ๋ฅผ Google Cloud Platform Container Registry์ ์ ์ฅํฉ๋๋ค. PROJECT-ID
๋ฅผ Google Cloud Platform ํ๋ก์ ํธ ID๋ก ๋ฐ๊ฟ๋๋ค.
gcloud builds submit --tag gcr.io/PROJECT-ID/agent-assist-modules-proxy-server
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํตํฉ์ ๋ผ์ด๋ธ๋ก ๋ฐฐํฌํฉ๋๋ค. PROJECT-ID
๋ฅผ ์์ด์ ํธ์ Google Cloud Platform ํ๋ก์ ํธ ID๋ก ๋ฐ๊พธ๊ณ SERVICE-ACCOUNT-EMAIL
๋ฅผ ์๋น์ค ๊ณ์ ํด๋ผ์ด์ธํธ ์ด๋ฉ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
gcloud run deploy --image gcr.io/PROJECT-ID/agent-assist-modules-proxy-server --service-account=SERVICE-ACCOUNT-EMAIL --memory 1Gi --platform managed
- ๋ฆฌ์ ์ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋ฆฌ์ (์:
us-central1
)์ ์ ํํฉ๋๋ค. - ์๋น์ค ์ด๋ฆ์ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด Enter ํค๋ฅผ ๋๋ฌ ๊ธฐ๋ณธ๊ฐ์ ์๋ฝํฉ๋๋ค.
- ์ธ์ฆ๋์ง ์์ ํธ์ถ์ ํ์ฉํ ์ง ๋ฌป๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด
y
์ ๋๋ฆ ๋๋ค.
์์ธํ ๋ด์ฉ์ Cloud Run ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์. Google Cloud Platform Console์ Cloud Run์์ ํ์ฑ ํตํฉ ๋ฐฐํฌ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์
Cloud Run ์๋ด์ ๋ฐ๋ผ ํ์ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
์๋น์ค๊ฐ ๋ฐฐํฌ๋๋ฉด CLI์์ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐฐํฌ๋ URL (target_url
)์ ์ถ๋ ฅํฉ๋๋ค. ๋์๊ฐ์ ์ด ๊ฐ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ DF_PROXY_SERVER_URL
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
ํ๋ก์ ์๋ฒ ์ข ๋ฃ
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ์ข ๋ฃํ๋ ค๋ฉด Cloud Run ์๋น์ค๋ฅผ ์ญ์ ํด์ผ ํฉ๋๋ค.
๋ก์ปฌ ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ์ด์ ์ ์ ํํ ํ๊ฒ ํ๋ซํผ์ ์ ํํ์ฌ ํ์ฑ ๋ฐฐํฌ๋ฅผ ๋์ดํฉ๋๋ค.
gcloud beta run services list
๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud beta run services delete agent-assist-modules-proxy-server