-
Notifications
You must be signed in to change notification settings - Fork 374
Taking control of recognizer dialog generation and make composer authored bot CI/CD friendly #4259
Description
Context
Composer leverages bf-cli, in particularly, bf cross-train, bf luis:build and bf qna:build to do cross-train, luis and qna publishing. Besides that bf-cli does one more thing is generating those .dialog for recognizers, 3 type of recognizers usually
- .<locale>-lu.dialog, which is a LUIS recognizer
- .lu.dialog which is a MultiLanguageLuis recognizer
- .lu.qna.dialog which is a CrossTrainedRecognizerSet
Issue
The issue is those "recognizer dialogs" are generating along with the build processing. It's been generated every time a publish happens and it leave user no control on that, for example user want to make some adjustment on LUIS recognizer #4205. Because it will be overridden every time a publishing happens again.
Solution
If we look at the recognizer dialogs, it's actually all fixed values or reference to settings, so conceptually it's not tighten to the build\publishing result.
So in Composer's POV, it make sense to take control of this processing in composer. Composer will generate that first and support user to author those .dialog files even before a real publishing is happening.
This will also relief bf-cli from have to do something as a side-car, and help keep cli focus, along with this change the cli can be purely
- cross-train will take a config + .lu + .qna and generate cross-trained .lu and .qna files
- luis:build will take .lu and keys, and generate a .lu.settings as result
- qna:build will take .qna and keys, and generate a .qna.settings as result
none of those will have to touch recognizer dialogs.
Details
Composer will create a new folder called "recognizers" along with the dialogs\runtime\settings folder, and store those .dialogs and also the cross-train config.
Composer will generated those recognizer dialogs when recognizer is chosen (before publishing).
Composer will call bf-cli to do cross-train, luis publish, and qna publish and have the result in generated folder, which will now only contain cross-trained lu and qna files and the lu and qna settings.
This "recognizers" folder will be checked in as bot assets, this generated folder remains to be not checked in.