ืืืืืจ ืื ืืืืื ืืื ืื ื ืืืขืก. ื ืขืืื Yandex.Cloud ืืืืืข ืื ืงืึทืืขืจ ืคืื ืึท ืกืขืจืืืขืจืืขืกืก ืงืึทืืคึผืืืืื ื ืืื ืกื
ืึธืืขืจ, ืขืืืขืืข ืงืขื ื ืืฉื ืืึทืฆืึธืื ืืืึท ืึทืืข. ืืืก ืืขื ืขื ืื ืืขืืืขืืึธืคึผืขืจืก
ืืืขืจ ืขืก ืืขื ืขื ืึท ืคึผืึธืจ ืคืื ื ืืึทื ืกืื. ืคืืจืกืืื, ืืืื ืืจืื ืงืึธื ืงืขื ืืึทืจืคื ืขืืืขืืข ืืืคึผืขื ืืึทื ืกืื, ืืื ืฉืืขืคึผื ืืื ืืื ืื ืงืืึธืื ืืื ื ืื-ื ืืืืืืึทื. ืฆืืืืืื ืก, ืงืืื ื ืึธืจืืึทื ืืฉืึทืืืึธื ืืึทืจืฃ ืฆื ืงืจืึธื ืื ืฉืืึทื ืคืื ืื ืืืึทืืึธื ืขืจืืขืฅ (ืกืืืืืคืึทื ืืขืจืืืขืจ); ืืืึธืก ืืื ืื ืืืืึทืกื ืืืขื ืฆื ืืึธื ืืึธืก ืืื ืึท ืกืขืจืืืขืจืืขืกืก ืคืื ืงืฆืืข? ืืจืืื ืก, ืืื ืงืขื ืขื ืืืจ ืฉืจืืึทืื ืึท ืฉื ืขื-ืืื-ืืจืึธื ืืงืืขืก ืคึฟืึทืจ ืึทืืืก ืึธืืขืจ ืืคืืื ืึท ืืื ืคืื ืืึธื ืืื ืึท ื ืื-ื ืื ืคึผืืึทื ืขืืืขื? ืืขืจ ืึทืจืืืงื ืืื, ืืื ืคืึทืงื, ืืืขืื ืื ื ืืึทื ืกืื.
ืืึธืจืึทืืืฉ ืฆืืืจืืืืื ื
ืคึฟืึทืจ ืื ืืืืขืืืืืืง: ืืื ืงืืืึทืื ืื ื ืืืืืง ืืืคึผืขื ืืึทื ืกืื ืืื ืึท ืืึทืงืขืคืืืข ืืืืืขืจ ืืคึผืืึธืึทืืื ื ืื ืคืื ืงืฆืืข ืฆื ืื ืืืึธืืงื, ืืื ืงืจืึธื ืื ืฉืืึทื ืคืื ืื ืืืึทืืึธื ืืื Yandex Object Storage (ืขืก ืฉืืืฆื ืื S3 API), ืืื ืืื ื ืืฆื ืืืื ืืืืืขื ืข ืืืืืืึธืืขืง ืฆื ืคืืจื ืื ืืืึทืืึธื.
ืคึฟืึทืจ ืืขื ืข ืึท ืืืกื ืืืืื ืืงืขืจ ืืืืขืืืืืืง, ืืืืืขืจ ืืืืืืื ื ืืื ืืืื ืืขืจืฆืืืืื ื ืืืขืื ืงืึทืืคึผืืขืงืกืืื, ืืื ืจืขืงืึธืืขื ืืืจื ืฆื ืึธื ืืืืื ืืื ืขืคึผืขืก ืคึผืฉืื. ื ืืืืื, ืฉืึทืคึฟื ืึท ืืืื-ืืขืงืข ืขืงืึธืืึธื ืคึฟืื ืงืฆืืข, ืคืึทืจืฉืจืืึทืื ืืื ืคึผืจืืืืจื ืขืก ืืื ืื Dialogs ืืขืืืขืืึธืคึผืขืจ ืงืึทื ืกืึธืื; ืคืจืืื - ืืื
ืืืื ืืืจ ืืืืื ืืืืื ืคืืื ืคึฟืึทืจ ืืืึธืก ืืืจ ืงืขืืคื ืืึธ, ืคืจืขืื ืึทืืืก '
ืึทืืืก: ืืขืื! ืืืจ ืืขื ื ืืื ืื "ืขืก ืืึธืจืึธืกืงืึธืคึผืข" ืืงืืขืก. ืืึธืื "ืึธื ืืืื" ืฆื ืืขืคึฟืื ืขื ืืืืก ืืืึธืก ืื ืฉืืขืจื ืฆืืืึธื ืืืจ.
ืืึทื ืืฆืขืจ: ืึธื ืืืื
ื: ืืืืข ืืึธืื ืืืื ื ืึธืืขื
ืื: ืืืึทืกืืกืืึทืื
ื: ืืืฆื ืืื ืืืจ ืื ืืึธืจ ืคืื ืืืื ืืขืืืจื. ืืืืื ืคืืจ ืืืืืฉืึทืฅ, ืืึธืจื ืืฉื ืขืงืกืืจืข.
ืื: ืจืืข
ื: ืืืืข ืคึผืจืึผืืื ืืืืืขืจ. ืึทืจืืึทื ืื ืืึธืจ ืคืื ืืืื ืืขืืืจื - ืคืืจ ืืืืืฉืึทืฅ.
ืื: 2002
ื: ืืจืืืก! ืืืฆื ื ืึธืืขื ืืืื ืืืืฉ ืคืื ืืขืืืจื.
ืื: ืคืขืืจืืืจ
ื: ืืจืืืก! ืฆืื ืกืืฃ, ืืึธืื ืืืจ ืืืื ืืขืืืจื ืืึธื - ื ืึธืจ ืึท ื ืืืขืจ, ื ืึธืจ ืืืื ืึธืืขืจ ืฆืืืื ืืืืืฉืึทืฅ.
ืื: 18
ื: ืืึทื ืงืขื ืืืจ, ืืืึทืกืืกืืึทืื! ืืืฆื ืืืจ ืืืืกื: ืืืจ ืืขื ื 17 ืืึธืจ ืึทืื ืืื ืึทื ืึทืงืืืึทืจืืืก. ื ื, ืคืื ืงืืจืก, ืืืจ ืืขื ื ืืึทืืืืืง! ืื ืฉืืขืจื ืืึธืื ืืืจ: ะฐ ััะพ ะณะพะฒะพััั ะทะฒัะทะดั, ะฒั ัะทะฝะฐะตัะต, ะทะฐะฟัััะธะฒ ะฝะฐะฒัะบ.
ืืขืจ ืคึผืจืึธืืืขื ืืื ืึทื ืืื ืกืืจ ืฆื ืืึทืืื ืึทืคึฟืืื ืึทืืึท ืึท ืคึผืฉืื ืืืึทืืึธื, ืืืจ ืืึทืจืคึฟื ืฆื ืืขืืขื ืงืขื ืื ืืึทื ืืฆืขืจ 'ืก ื ืึธืืขื ืืื ืืขืืืจื ืืึธื, ืืื ืืื ืึท ืกืขืจืืืขืจ-ืืขืกืก ืคึฟืื ืงืฆืืข ืกืืืืืืข, ืืึธืก ืืื ื ืื-ื ืืืืืืึทื. ืขืก ืืืขื ื ืื ืืืื ืืขืืืขื ืฆื ืงืจืึธื ืืขื ืงืึธื ืืขืงืกื ืืื ืืึทืจืึทื ืึธืืขืจ ืืื ืึท ืืขืงืข ืืืืฃ ืืืกืง, ืืืืึทื Yandex.Cloud ืงืขื ืขื ืืืืคื ืึท ืคึฟืื ืงืฆืืข ืืืืฃ ืขืืืขืืข ืืืืจืืืึทื ืืืฉืื ืขื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืืื ืืึทืฉืืืืขื ืฆืืืืฉื ืืื. ืืืจ ืืืขื ืืึธืื ืฆื ื ืืฆื ืขืืืขืืข ืคืื ืืจืืืกื ืืืง ืกืืึธืจืืืืฉ. ืึธืืืืฉืขืงื ืกืืึธืจืืืืฉ ืืื ืืืืกืืขืจืืืืืื ืืื ืึท ืืึทื ืฅ ืืืืืง ืืื ืึทื ืงืึทืืคึผืืึทืงืืืืื ืกืืึธืจืืืืฉ ืืืืึทื ืืื Yandex.Cloud (ื"ื ืืืกืืึธืืข ืฉื ืขื). ืืื ืึท ืคืจืื ืึธืืืขืจื ืึทืืืื, ืืืจ ืงืขื ืขื ืคึผืจืืืืจื, ืืืฉื, ืึท ืคืจืื ืฉืืืง
ืื ืื ืืขืจ ืคึผืจืึธืืืขื ืืื ืึทื ืฆื ืึทืงืกืขืก ืึธืืืืฉืขืงื ืกืืึธืจืืืืฉ, MongoDB ืืื ืงืืื ืื ืืขืจืข ืืึทืืึทืืืืก ืึธืืขืจ ืืึทืื ืงืจืึธื, ืืืจ ืืึทืจืคึฟื ืขืืืขืืข ืคืื ืืจืืืกื ืืืง ืืืคึผืขื ืืึทื ืกืื ืืืึธืก ืืึทืจืคึฟื ืฆื ืืืื ืืคึผืืึธืึทืืขื ืฆื ืืึทื ืืขืงืก ืคืึทื ืืงืฉืึทื ื ืฆืืืืืขื ืืื ืืืื ืคืื ืงืฆืืข ืงืึธื. ืืื ืืื ืืืึธืื ืืื ืฆื ืืึธื ืืึธืก ืงืึทื ืืืื ืืึทื ืืื. ืฆืื ืืึทืืืืขืจื, ืขืก ืืืขื ื ืืฉื ืืืื ืืึธืจ ืืึทืงืืืขื (ืืื ืืืืฃ Heroku), ืึธืืขืจ ืขืืืขืืข ืืงืขืจืืืง ืืจืืืกื ืงืขื ืขื ืืืื ืืืฉืืคื ืืืจื ืฉืจืืืื ืึท ืฉืจืืคื ืฆื ืืืืขื ืื ืกืืืืืืข (ืืึทืื ืืขืงืข).
ืืื ืฆื ืึธื ืืืืื ืึท ืืึธืจืึทืกืงืึธืืคึผ
- ืฆืืืจืืืื: ืืืื ืฆื ืขืืืขืืข ืืึทืฉืื ืืื ืืื ืืงืก. ืืื ืคึผืจืื ืฆืืคึผ, ืืืจ ืงืขื ืขื ืืืกืืึธืืข ืืืื ืึทืจืืขืื ืืื Windows, ืึธืืขืจ ืืขืืึธืื ืืืจ ืืืขื ืืึธืื ืฆื ืืึทืื ืืึทืืืฉ ืืื ืงืึทืืขืจ ืื ืืึทืงืคืืืข. ืืื ืืื ืงืืื ืคืึทื, ืืืจ ืืืขื ืืึทืจืคึฟื ืืืึท ืืื ืืกืืขืจ Python 3.6 ืืื ืกืืึทืืืจื.
- ืงืืึธืื ืขืก ืคึฟืื Github
ืืืึทืฉืคึผืื ืคืื ืืึธืจืึทืกืงืึธืืคึผ ืืงืืขืก . - ืจืขืืืกืืจืืจื ืืื Y.Cloud:
https://cloud.yandex.ru - ืฉืึทืคึฟื ืืื ืฆืืืื ืขืืขืจ ืืื
ืืืืคืขืฅ ืกืืึธืจืืืืฉ , ืจืืคื ืืื ืืื ืงืืื ื ืึธืืขื{BUCKET NAME}
ะธtgalice-test-cold-storage
(ืืขืจ ืฆืืืืืืขืจ ื ืึธืืขื ืืื ืืืฆื ืฉืืืขืจ ืงืึธืืขื ืืืmain.py
ืืืื ืืืืฉืคึผืื). ืืขืจ ืขืจืฉืืขืจ ืขืืขืจ ืืืขื ืืืื ืืืจืฃ ืืืืื ืคึฟืึทืจ ืืืคึผืืืืืึทื ื, ืื ืจืืข - ืฆื ืงืจืึธื ืืืึทืืึธื ืฉืืึทืื. - ืฉืึทืคึฟื
ืืื ืกื ืืฉืืื , ืืื ืืืื ื ืจืืืขeditor
, ืืื ืืึทืงืืืขื ืกืืึทืืืง ืงืจืึทืืขื ืืฉืึทืื ืคึฟืึทืจ ืขืก{KEY ID}
ะธ{KEY VALUE}
- ืืืจ ืืืขืื ื ืืฆื ืืื ืฆื ืจืขืงืึธืจืืืจื ืื ืฉืืึทื ืคืื ืื ืืืึทืืึธื. ืึทืืข ืืขื ืืื ืืืจืฃ ืึทืืื ืึทื ืึท ืคืื ืงืฆืืข ืคึฟืื Ya.Cloud ืงืขื ืขื ืึทืงืกืขืก ืื ืกืืึธืจืืืืฉ ืคึฟืื Ya.Cloud. ืึทืืึธื, ืืื ืืึธืคึฟื, ืืขืจืืืืืขื ืืฉ ืืืขื ืืืขืจื ืึธืืึทืืึทืืืง, ืึธืืขืจ ืืืฆื ืขืก ืืื ืึทืืื. - (ืึธืคึผืืืึธื ืึทื) ืื ืกืืึทืืืจื
ืืึทืคึฟืขืื ืฉืืจื ืฆืืืื ื yc
. ืืืจ ืงืขื ื ืืืื ืฉืึทืคึฟื ืึท ืคืื ืงืฆืืข ืืืจื ืื ืืืขื ืฆืืืื ื, ืึธืืขืจ ืื CLI ืืื ืืื ืืืืึทื ืึทืืข ืกืึธืจืฅ ืคืื ืื ืึธืืืืืืฉืึทื ื ืืขืจืฉืืึทื ืขื ืืื ืขืก ืคืึทืกืืขืจ. - ืืืฆื ืืืจ ืงืขื ืขื ืึทืงืืฉืึทืืืึทืื ืฆืืืจืืืื ืื ืืขืคึผืขื ืืขื ืกื ืคึฟืึทืจืืึทืืืื ื: ืืืืคื ืขืก ืืืืฃ ืื ืืึทืคึฟืขืื ืฉืืจื ืคึฟืื ืืขืจ ืืขืงืข ืืื ืื ืืงืืขืก ืืืึทืฉืคึผืื
make all
. ื ืืื ืื ืคืื ืืืืืจืขืจืื (ืืขืจืกืื ืก, ืืื ืืขืืืืื ืืืขื, ืืื ืืืืืง) ืืืขื ืืืื ืืื ืกืืึทืืืจื ืืื ืืขืจ ืืขืงืขdist
. - ืืืกื ืืื ืึธืืืืฉืขืงื ืกืืึธืจืืืืฉ ืืื ืืึทื ื (ืืื ืื ืขืืขืจ
{BUCKET NAME}
) ืึทืจืงืืืื ืืืงืืืขื ืืื ืื ืคืจืืขืจืืืงืข ืฉืจืืdist.zip
. ืืืื ืืืจ ืืืืื, ืืืจ ืงืขื ืขื ืืึธื ืืึธืก ืคึฟืื ืื ืืึทืคึฟืขืื ืฉืืจื, ืืืฉื, ื ืืฆืAWS CLI . - ืฉืึทืคึฟื ืึท ืกืขืจืืืขืจืืขืกืก ืคืื ืงืฆืืข ืืืจื ืื ืืืขื ืฆืืืื ื ืึธืืขืจ ื ืืฆื ืึท ื ืืฆื
yc
. ืคึฟืึทืจ ืื ื ืืฆื, ืื ืืึทืคึฟืขื ืืืขื ืงืืงื ืืื ืืึธืก:
yc serverless function version create
--function-name=horoscope
--environment=AWS_ACCESS_KEY_ID={KEY ID},AWS_SECRET_ACCESS_KEY={KEY VALUE}
--runtime=python37
--package-bucket-name={BUCKET NAME}
--package-object-name=dist.zip
--entrypoint=main.alice_handler
--memory=128M
--execution-timeout=3s
ืืืขื ืืึทื ืืืึทืื ืฉืึทืคึฟื ืึท ืคึฟืื ืงืฆืืข, ืึทืืข ืคึผืึทืจืึทืืขืืขืจืก ืืขื ืขื ืึธื ืืขืคืืื ืืื ืื ืืขืืืข ืืืขื.
ืืืฆื ืื ืคืื ืงืฆืืข ืืืจ ืืืฉืืคื ืงืขื ืขื ืืืื ืืขืกืืขื ืืืจื ืื ืืขืืืขืืึธืคึผืขืจ ืงืึทื ืกืึธืื, ืืื ืื ืกืงืืื ืงืขื ืขื ืืืื ืืืคึผืจืืืื ืืื ืืจืืืก.
ืืืึธืก ืืื ืืื ืืขืจ ืื ืงืึทืคึผืืขืจ
ืื ืืึทืงืคืืืข ืึทืงืฉืื ืึผืืื ืึท ืืึทื ืฅ ืคึผืฉืื ืฉืจืืคื ืคึฟืึทืจ ืื ืกืืึธืืื ื ืืืคึผืขื ืืึทื ืกืื ืืื ืฉืืขืื ืืื ืืื ืึทื ืึทืจืงืืืื dist.zip
, ืืขืขืจืขื ืืื ืืึธืก:
mkdir -p dist/
pip3 install -r requirements.txt --target dist/
cp main.py dist/main.py
cp form.yaml dist/form.yaml
cd dist && zip --exclude '*.pyc' -r ../dist.zip ./*
ืื ืื ืืื ืืื ืึท ืืืกื ืคึผืฉืื ืืืฉืืจืื ืืื ืืขืืืืงืื ืืื ืึท ืืืืืืึธืืขืง tgalice
. ืืขืจ ืคึผืจืึธืฆืขืก ืคืื ืคืืืื ื ืืึทื ืืฆืขืจ ืืึทืื ืืื ืืืกืงืจืืืื ืืืจื ืื ืงืึธื ืคืื form.yaml
:
form_name: 'horoscope_form'
start:
regexp: 'ััะฐัั|ะฝะฐั(ะฐัั|ะฝะธ)'
suggests:
- ะกัะฐัั
fields:
- name: 'name'
question: ะะพะถะฐะปัะนััะฐ, ะฝะฐะทะพะฒะธัะต ัะฒะพั ะธะผั.
- name: 'year'
question: ะขะตะฟะตัั ัะบะฐะถะธัะต ะผะฝะต ะณะพะด ะฒะฐัะตะณะพ ัะพะถะดะตะฝะธั. ะขะพะปัะบะพ ัะตัััะต ัะธััั, ะฝะธัะตะณะพ ะปะธัะฝะตะณะพ.
validate_regexp: '^[0-9]{4}$'
validate_message: ะะพะถะฐะปัะนััะฐ, ะฟะพะฟัะพะฑัะนัะต ะตัั ัะฐะท. ะะฐะทะพะฒะธัะต ะณะพะด ะฒะฐัะตะณะพ ัะพะถะดะตะฝะธั - ัะตัััะต ัะธััั.
- name: 'month'
question: ะะฐะผะตัะฐัะตะปัะฝะพ! ะขะตะฟะตัั ะฝะฐะทะพะฒะธัะต ะผะตััั ะฒะฐัะตะณะพ ัะพะถะดะตะฝะธั.
options:
- ัะฝะฒะฐัั
...
- ะดะตะบะฐะฑัั
validate_message: ะขะพ, ััะพ ะฒั ะฝะฐะทะฒะฐะปะธ, ะฝะต ะฟะพั
ะพะถะต ะฝะฐ ะผะตััั. ะะพะถะฐะปัะนััะฐ, ะฝะฐะทะพะฒะธัะต ะผะตััั ะฒะฐัะตะณะพ ัะพะถะดะตะฝะธั, ะฑะตะท ะดััะณะธั
ัะปะพะฒ.
- name: 'day'
question: ะัะปะธัะฝะพ! ะะฐะบะพะฝะตั, ะฝะฐะทะพะฒะธัะต ะผะฝะต ะดะฐัั ะฒะฐัะตะณะพ ัะพะถะดะตะฝะธั - ัะพะปัะบะพ ัะธัะปะพ, ะฒัะตะณะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ัะธััั.
validate_regexp: '[0123]?d$'
validate_message: ะะพะถะฐะปัะนััะฐ, ะฟะพะฟัะพะฑัะนัะต ะตัั ัะฐะท. ะะฐะผ ะฝัะถะฝะพ ะฝะฐะทะฒะฐัั ัะธัะปะพ ัะฒะพะตะณะพ ัะพะถะดะตะฝะธั (ะฝะฐะฟัะธะผะตั, ะดะฒะฐะดัะฐัะพะต); ััะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ัะธััั.
ืื ืึทืจืืขื ืคืื ืคึผืึทืจืกืื ื ืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืงืึทืืงืืึทืืืืืื ื ืื ืืขืฆื ืจืขืืืืืึทื ืืื ืืืืขืจืืขื ืืืขื ืืืจื ืื ืคึผืืืืึธื ืงืืึทืก
class CheckableFormFiller(tgalice.dialog_manager.form_filling.FormFillingDialogManager):
SIGNS = {
'ัะฝะฒะฐัั': 'ะะพะทะตัะพะณ',
...
}
def handle_completed_form(self, form, user_object, ctx):
response = tgalice.dialog_manager.base.Response(
text='ะกะฟะฐัะธะฑะพ, {}! ะขะตะฟะตัั ะผั ะทะฝะฐะตะผ: ะฒะฐะผ {} ะปะตั, ะธ ะฒั {}. n'
'ะะพั ััะพ ะฒะฐะผ, ะบะพะฝะตัะฝะพ, ะฟะพะฒะตะทะปะพ! ะะฒัะทะดั ะณะพะฒะพััั ะฒะฐะผ: {}'.format(
form['fields']['name'],
2019 - int(form['fields']['year']),
self.SIGNS[form['fields']['month']],
random.choice(FORECASTS),
),
user_object=user_object,
)
return response
ืืขืจ ืืขื ืื, ืื ืืึทืืข ืงืืึทืก FormFillingDialogManager
ืืืื ืืื ืคึผืืึธืืืืจื ืื "ืคืึธืจืขื", ืืื ืื ืงืื ื ืงืืึทืก ืืืคึฟื handle_completed_form
ืืขืจืฆืืืื ืืืจ ืืืึธืก ืฆื ืืึธื ืืืขื ืื ืืื ืืจืืื.
ืืื ืึทืืืฉืึทื ืฆื ืืขื ืืืืคึผื ืืืืคื ืคืื ืืืึทืืึธื, ืืขืจ ืืึทื ืืฆืขืจ ืืืื ืืืื ืืืื ืืึทืืจืืกื, ืืื ืืขืืื ื ืืื ืืขืื ืืืืฃ ื ืืฆื ืื "ืืืืฃ" ืืึทืคึฟืขื ืืื ืืืคืจืืื ืคืื ืื ืืงืืขืก ื ืืฆื ืื "ืึทืจืืืกืืึทื ื" ืืึทืคึฟืขื. ืคึฟืึทืจ ืืขื ืฆืืืขืง ืืื tgalice
ืขืก ืืื ืืืื ืึท ืืขืืคึผืืึทืืข, ืึทืืื ืื ืืื ืฆืข ืืืึทืืึธื ืคืึทืจืืืึทืืืขืจ ืืื ืืขืืืื ืคืื ืืจืขืงืืขื:
dm = tgalice.dialog_manager.CascadeDialogManager(
tgalice.dialog_manager.GreetAndHelpDialogManager(
greeting_message=DEFAULT_MESSAGE,
help_message=DEFAULT_MESSAGE,
exit_message='ะะพ ัะฒะธะดะฐะฝะธั, ะฟัะธั
ะพะดะธัะต ะฒ ะฝะฐะฒัะบ "ะะนัะธัะฝัะน ะณะพัะพัะบะพะฟ" ะตัั!'
),
CheckableFormFiller(`form.yaml`, default_message=DEFAULT_MESSAGE)
)
CascadeDialogManager
ืขืก ืึทืจืืขื ืคืฉืื: ืขืก ืคืจืืืื ืฆื ืฆืืืืืื ืึทืืข ืืืึทื ืงืึทืืคึผืึธืื ืึทื ืฅ ืฆื ืื ืงืจืึทื ื ืฉืืึทื ืคืื ืื ืืืึทืืึธื ืืื ืงืขืจ, ืืื ืกืึทืืขืงืฅ ืืขืจ ืขืจืฉืืขืจ ืฆืื ืขืืขื ืืืื ืขืจ.
ืืขืจ ืืืึทืืึธื ืคืึทืจืืืึทืืืขืจ ืงืขืจื ืึท ืคึผืืืืึธื ืืืืคืขืฅ ืืื ืึท ืขื ืืคืขืจ ืฆื ืืขืืขืจ ืึธื ืืึธื. Response
, ืืืึธืก ืงืขื ืขื ืืืื ืงืึธื ืืืขืจืืขื ืืื ืงืืึธืจ ืืขืงืกื, ืึธืืขืจ ืืื ืึท ืึธื ืืึธื ืืื ืึทืืืก ืึธืืขืจ ืืขืืขืืจืึทื - ืืืคึผืขื ืืื ื ืืืืฃ ืืื ืื ืืึธื ืืื ืคืืืกื ืืืง; ืขืก ืืืื ืึผืืื ืื ืืขืืืื ืฉืืึทื ืคืื ืื ืืืึทืืึธื ืืืึธืก ืืึทืจืฃ ืฆื ืืืื ืืขืจืืืขืืืขื. ืื ืืื ืฆืข ืงืื ืืื ืืึทื ืืึทืื ืืืจื ืื ืื ืืขืจ ืงืืึทืก, DialogConnector
, ืึทืืื ืืขืจ ืืืจืขืงื ืฉืจืืคื ืคึฟืึทืจ ืงืึทืืขืจ ืึท ืืงืืขืก ืืืืฃ ืืึทื ืืขืงืก ืคืึทื ืืงืฉืึทื ื ืงืืงื ืืื ืืึธืก:
...
session = boto3.session.Session()
s3 = session.client(
service_name='s3',
endpoint_url='https://storage.yandexcloud.net',
aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
region_name='ru-central1',
)
storage = tgalice.session_storage.S3BasedStorage(s3_client=s3, bucket_name='tgalice-test-cold-storage')
connector = tgalice.dialog_connector.DialogConnector(dialog_manager=dm, storage=storage)
alice_handler = connector.serverless_alice_handler
ืืื ืืืจ ืงืขื ืขื ืืขื, ืจืืึฟ ืคืื ืืขื ืงืึธื ืงืจืืืืฅ ืึท ืงืฉืจ ืฆื ืื S3 ืฆืืืื ื ืคืื ืึธืืืืฉืขืงื ืกืืึธืจืืืืฉ. ืืืจ ืงืขื ืขื ืืืืขื ืขื ืืื ืืขื ืงืฉืจ ืืื ืืืืึทื ืืขื ืืฆื
ืื ืืขืฆืืข ืฉืืจื ืงืจืืืืฅ ืื ืคึฟืื ืงืฆืืข alice_handler
- ืืขืจ ืืขืืืืงืขืจ ืืืึธืก ืืืจ ืืขืจืฆืืืื Yandex.Cloud ืฆื ืฆืืขื ืืืขื ืืืจ ืฉืืขืื ืืขื ืคึผืึทืจืึทืืขืืขืจ --entrypoint=main.alice_handler
.
ืึทื ืก ืึทืืข, ืคืืงืืืฉ. ืืึทืื ืืขืงืขืก ืคึฟืึทืจ ืคึฟืึทืจืืึทืืืื ื, S3-ืืื ืึธืืืืฉืขืงื ืกืืึธืจืืืืฉ ืคึฟืึทืจ ืกืืึธืจืื ื ืงืึธื ืืขืงืกื, ืืื ืึท ืคึผืืืืึธื ืืืืืืึธืืขืง tgalice
. ืงืึทืืืืื ื ืืื ืื ืกืขืจืืืขืจืืขืกืก ืคืึทื ืืงืฉืึทื ื ืืื ืืงืกืคึผืจืขืกืืืื ืึทืก ืคืื Python, ืืึธืก ืืื ืืขื ืื ืฆื ืึทื ืืืืืงืืขื ืึท ืืขืืื ื ืืขื ืืฉ ืกืงืืื.
ืืืจ ืงืขื ืคืจืขืื ืืืึธืก ืขืก ืืื ื ืืืืืง ืฆื ืฉืึทืคึฟื tgalice
? ืึทืืข ืื ื ืืื ืข ืงืึธื ืืืึธืก ืืจืึทื ืกืคืขืจืก JSONs ืคึฟืื ืืขืื ืฆื ืขื ืืคืขืจ ืืื ืคึฟืื ืกืืึธืจืืืืฉ ืฆื ืืึผืจืื ืืื ืฆืืจืืง ืืืื ืืื ืขืก. ืขืก ืืื ืืืื ืึท ืจืขืืืืขืจ ืงืึธื ืึทืคึผืืึทืงืืืฉืึทื, ืึท ืคึฟืื ืงืฆืืข ืฆื ืคึฟืึทืจืฉืืืื ืึทื "ืคืขืืจืืืจ" ืืื ืขื ืืขื ืฆื "ืคืขืืจืืืจ", ืืื ืื ืืขืจืข NLU ืคึฟืึทืจ ืึธืจืขื. ืืืื ืืืื ืืขืืึทื ืง, ืืึธืก ืืึธื ืฉืืื ืืืื ืืขื ืื ืึทืืื ืึทื ืืืจ ืงืขื ืขื ืกืงืืฆืข ืคึผืจืึธืืืึทืืืืคึผืก ืคืื ืกืงืืื ืืื ืืึทืื ืืขืงืขืก ืึธื ืืืื ืฆื ืืืกืืจืึทืงืืื ืืืจื ืืขืื ืืฉ ืืขืืึทืืืก.
ืืืื ืืืจ ืืืืื ืึท ืืขืจ ืขืจื ืกื NLU, ืืืจ ืงืขื ื ืฆืืืฉืขืคึผืขื ืขืก ืฆื ืืืื ืกืงืืื
ื ื, ืืืฆื ืคืึทืจืืื ืื ืืื
ืืงืืจ: www.habr.com