Kwa ofooka pang'ono, ndisanalowe mu nkhani yanga yovuta, ndikupangira kuti ndiyambe kuphweka. Mwakutero, pangani fayilo imodzi ya echobot, lembani ndikuyesa mu dialog developer console; zambiri - mu Blog Dialogues и zolemba zamtambo. Ndiyeno pokha poyambira.
Ngati mukufuna kumva zomwe tikumenyera nthawi yomweyo, funsani Alice 'yatsani luso la "IT horoscope"'. Zokambirana zotsatirazi zikuyenera kuchitika:
Vuto ndiloti kuti mukhalebe ndi zokambirana zosavuta zotere, muyenera kukumbukira dzina ndi tsiku lobadwa kwa wogwiritsa ntchito, ndipo m'malo opanda seva izi sizochepa. Sizigwira ntchito kusunga zomwe zili mu RAM kapena ngati fayilo pa diski, chifukwa Yandex.Cloud imatha kuyendetsa ntchitoyi pamakina angapo nthawi imodzi ndikusintha pakati pawo mosasamala. Muyenera kugwiritsa ntchito mtundu wina wa zosungira zakunja. Object Storage idasankhidwa ngati yosungirako yotsika mtengo komanso yosavuta mwachindunji mu Yandex.Cloud (ndiko kuti, mwina mwachangu). Monga njira yaulere, mutha kuyesa, mwachitsanzo, chidutswa chaulere Cloudy Mongi kwinakwake kutali. Zonse Zosungirako Zinthu (zimathandizira mawonekedwe a S3) ndipo Mongo ali ndi zolembera za Python zosavuta.
Vuto lina ndilakuti kuti mupite ku Object Storage, MongoDB, ndi database ina iliyonse kapena sitolo ya data, mukufunikira zodalira zakunja zomwe muyenera kuziyika ku Yandex Functions pamodzi ndi code yanu. Ndipo ndikufuna kuchita bwino. Ndikoyenera kwathunthu (monga pa heroku), tsoka, sizingagwire ntchito, koma mukhoza kupanga chitonthozo choyambirira mwa kulemba script kuti mumange chilengedwe (pangani fayilo).
Momwe mungayambitsire luso la horoscope
Konzekerani: pitani ku makina ena okhala ndi Linux. M'malo mwake, mutha kugwiranso ntchito ndi Windows, koma ndiye kuti muyenera kulumikizana ndi kukhazikitsidwa kwa makefile. Ndipo mulimonse, mufunika Python yosachepera 3.6.
Tsopano mutha, kwenikweni, kukonzekera kusonkhana kwa zodalira: thamangani pamzere wolamula kuchokera pafoda ndi chitsanzo cha luso make all. Mulu wa malaibulale (makamaka, mwachizolowezi, osafunikira) adzayikidwa mufoda dist.
Lembani ndi zolembera mu Kusungirako Zinthu (mu chidebe {BUCKET NAME}) zosungidwa zomwe zidapezedwa pa sitepe yapitayi dist.zip. Ngati mungafune, mutha kuchitanso izi kuchokera pamzere wolamula, mwachitsanzo, pogwiritsa ntchito AWS CLI.
Pangani ntchito yopanda seva kudzera pa intaneti kapena kugwiritsa ntchito zofunikira yc. Kwa ogwiritsa ntchito, lamulo liziwoneka motere:
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
Zotsalazo ndi zida zingapo zosavuta zitakulungidwa mulaibulale tgalice. Njira yodzaza deta ya ogwiritsa ntchito ikufotokozedwa ndi config 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: Пожалуйста, попробуйте ещё раз. Вам нужно назвать число своего рождения (например, двадцатое); это одна или две цифры.
Gulu la python limatenga ntchito yosinthira izi ndikuwerengera zotsatira zomaliza
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
Ndendende, kalasi yoyambira FormFillingDialogManager akugwira ntchito yodzaza "fomu", ndi njira ya kalasi ya mwanayo handle_completed_form amandiuza zoyenera kuchita akakonzeka.
Kuwonjezera pa kutuluka kwakukulu kwa zokambirana za wogwiritsa ntchito, m'pofunikanso kupereka moni kwa wogwiritsa ntchito, komanso kupereka chithandizo pa lamulo la "thandizo" ndikumasula luso pa lamulo la "kutuluka". Za izi mu tgalice palinso template, kotero woyang'anira zokambirana ali ndi zidutswa:
Monga mukuwonera, zambiri mwa code iyi zimapanga kulumikizana ndi mawonekedwe a Object Storage S3. Momwe kugwirizana uku kumagwiritsidwira ntchito mwachindunji, mukhoza kuwerenga pa tgalice kodi.
Mzere womaliza umapanga ntchito alice_handler - yomwe tidalamula kukoka Yandex.Cloud tikayika chizindikiro --entrypoint=main.alice_handler.
Ndizo zonse. Makefiles omanga, S3-ngati Object Storage posungira nkhani, ndi laibulale ya python tgalice. Pamodzi ndi mawonekedwe opanda seva komanso kufotokozera kwa python, izi ndizokwanira kukulitsa luso la munthu wathanzi.
Mutha kufunsa chifukwa chake muyenera kupanga tgalice? Ma code onse otopetsa omwe amasamutsa ma JSONs kuchokera ku pempho kupita ku mayankho komanso kuchokera ku yosungirako kupita kumtima ndikubwereranso ali mmenemo. Palinso ntchito yokhazikika, ntchito yomvetsetsa kuti "February" ikufanana ndi "February", ndi NLU ina kwa osauka. Malinga ndi lingaliro langa, izi ziyenera kukhala zokwanira kale kuti muzitha kujambula ma prototypes mumafayilo a yaml popanda kusokonezedwa ndi zambiri zaukadaulo.