
RASA๋ฅผ ์ฌ์ฉํ๋ฉด์ Socket.IO๋ฅผ ํตํด ์ค์๊ฐ ํต์ ์ ๊ตฌํํ๋ ๊ณผ์ ์์ ์์์น ๋ชปํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ์ด ๊ธ์์๋ ๋ฌธ์ ์ ์ฆ์, ์์ธ ๋ถ์, ๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ์ต๋๋ค.
RASA ์๋ฒ์ Python Socket.IO ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํ์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋์๋ ๋ด์ ์๋ต์ ๋ฐ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
session_request ์ด๋ฒคํธ๋ ์ ์ ์ก๋๊ณ session_confirm ์๋ต๋ ์ ์ ์์ ๋จ.user_uttered ์ด๋ฒคํธ๋ฅผ ์ ์กํ ํ ์๋ฒ๋ก๋ถํฐ ์๋ฌด๋ฐ ์๋ต์ด ์ค์ง ์์.RASA์ credentials.yml ํ์ผ์์ session_persistence: true๋ก ์ค์ ํ๋ฉด, RASA๋ Socket.IO์ ๋ฃธ(Room) ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ธ์
์ ๊ด๋ฆฌํฉ๋๋ค.
socketio:
user_message_evt: user_uttered
bot_message_evt: bot_uttered
session_persistence: true
๋ฌธ์ ๋ RASA์ socketio.py ์ฝ๋์์ enter_room ๋ฉ์๋๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ํธ์ถ๋์ด ์์ง๋ง await๊ฐ ๋๋ฝ๋์ด ์๋ค๋ ๊ฒ์ด์์ต๋๋ค.
# ๋ฌธ์ ์ฝ๋
sio.enter_room(sid, data["session_id"]) # await๊ฐ ์์
๐ ์ถ์ฒ: Rasa Github ์ด์
์ด๋ก ์ธํด ์ค์ ๋ก ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ฃธ์ ์ฐธ์ฌํ์ง ๋ชปํ๊ณ , ๊ฒฐ๊ตญ ๋ด์ ์๋ต์ด ์ ์ก๋์ง ์๋ ํ์์ด ๋ฐ์ํ์ต๋๋ค.
session_persistence ๋นํ์ฑํcredentials.yml ํ์ผ์์ session_persistence๋ฅผ false๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋๋ค.
socketio:
user_message_evt: user_uttered
bot_message_evt: bot_uttered
session_persistence: false
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ธ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํฌ๊ธฐํด์ผ ํ๋ฏ๋ก ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ ์๋๋๋ค.
RASA์ socketio.py ํ์ผ์ ์ฐพ์ enter_room ํธ์ถ ๋ถ๋ถ์ await๋ฅผ ์ถ๊ฐํฉ๋๋ค.
pip show rasa
๋๋
python -c "import rasa; print(rasa.__file__)"
rasa/core/channels/socketio.py ํ์ผ์ ์ด์ด ์๋์ ๊ฐ์ด ์์ ํฉ๋๋ค.
# ์์ ์
sio.enter_room(sid, data["session_id"])
# ์์ ํ
await sio.enter_room(sid, data["session_id"])
์์ ํ์๋ RASA ์๋ฒ๋ฅผ ์ฌ์์ํด์ผ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋ฉ๋๋ค.
rasa run --enable-api --cors "*" --debug --credentials credentials.yml
์ด๋ฒ ๊ฒฝํ์ ํตํด ์ค์๊ฐ ํต์ ์์ ์ธ์ ๊ด๋ฆฌ์ ์ค์์ฑ๊ณผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ธ์ธํ ๋ถ๋ถ์ด ์์คํ ์ ์์ ์ฑ์ ์ผ๋ง๋ ์ํฅ์ ์ค ์ ์๋์ง๋ฅผ ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
ํน์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๋ ๋ถ๋ค์ด ์๋ค๋ฉด ์ด ๊ธ์ด ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค. ๐