rasa-pro 3.9.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rasa-pro might be problematic. Click here for more details.
- README.md +415 -0
- rasa/__init__.py +10 -0
- rasa/__main__.py +156 -0
- rasa/anonymization/__init__.py +2 -0
- rasa/anonymization/anonymisation_rule_yaml_reader.py +91 -0
- rasa/anonymization/anonymization_pipeline.py +286 -0
- rasa/anonymization/anonymization_rule_executor.py +260 -0
- rasa/anonymization/anonymization_rule_orchestrator.py +120 -0
- rasa/anonymization/schemas/config.yml +47 -0
- rasa/anonymization/utils.py +118 -0
- rasa/api.py +146 -0
- rasa/cli/__init__.py +5 -0
- rasa/cli/arguments/__init__.py +0 -0
- rasa/cli/arguments/data.py +81 -0
- rasa/cli/arguments/default_arguments.py +165 -0
- rasa/cli/arguments/evaluate.py +65 -0
- rasa/cli/arguments/export.py +51 -0
- rasa/cli/arguments/interactive.py +74 -0
- rasa/cli/arguments/run.py +204 -0
- rasa/cli/arguments/shell.py +13 -0
- rasa/cli/arguments/test.py +211 -0
- rasa/cli/arguments/train.py +263 -0
- rasa/cli/arguments/visualize.py +34 -0
- rasa/cli/arguments/x.py +30 -0
- rasa/cli/data.py +292 -0
- rasa/cli/e2e_test.py +586 -0
- rasa/cli/evaluate.py +222 -0
- rasa/cli/export.py +250 -0
- rasa/cli/inspect.py +63 -0
- rasa/cli/interactive.py +164 -0
- rasa/cli/license.py +65 -0
- rasa/cli/markers.py +78 -0
- rasa/cli/project_templates/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/__init__.py +0 -0
- rasa/cli/project_templates/calm/actions/action_template.py +27 -0
- rasa/cli/project_templates/calm/actions/add_contact.py +30 -0
- rasa/cli/project_templates/calm/actions/db.py +57 -0
- rasa/cli/project_templates/calm/actions/list_contacts.py +22 -0
- rasa/cli/project_templates/calm/actions/remove_contact.py +35 -0
- rasa/cli/project_templates/calm/config.yml +12 -0
- rasa/cli/project_templates/calm/credentials.yml +33 -0
- rasa/cli/project_templates/calm/data/flows/add_contact.yml +31 -0
- rasa/cli/project_templates/calm/data/flows/list_contacts.yml +14 -0
- rasa/cli/project_templates/calm/data/flows/remove_contact.yml +29 -0
- rasa/cli/project_templates/calm/db/contacts.json +10 -0
- rasa/cli/project_templates/calm/domain/add_contact.yml +39 -0
- rasa/cli/project_templates/calm/domain/list_contacts.yml +17 -0
- rasa/cli/project_templates/calm/domain/remove_contact.yml +38 -0
- rasa/cli/project_templates/calm/domain/shared.yml +10 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_cancels_during_a_correction.yml +16 -0
- rasa/cli/project_templates/calm/e2e_tests/cancelations/user_changes_mind_on_a_whim.yml +7 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_handle.yml +20 -0
- rasa/cli/project_templates/calm/e2e_tests/corrections/user_corrects_contact_name.yml +19 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_adds_contact_to_their_list.yml +15 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_lists_contacts.yml +5 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact.yml +11 -0
- rasa/cli/project_templates/calm/e2e_tests/happy_paths/user_removes_contact_from_list.yml +12 -0
- rasa/cli/project_templates/calm/endpoints.yml +45 -0
- rasa/cli/project_templates/default/actions/__init__.py +0 -0
- rasa/cli/project_templates/default/actions/actions.py +27 -0
- rasa/cli/project_templates/default/config.yml +44 -0
- rasa/cli/project_templates/default/credentials.yml +33 -0
- rasa/cli/project_templates/default/data/nlu.yml +91 -0
- rasa/cli/project_templates/default/data/rules.yml +13 -0
- rasa/cli/project_templates/default/data/stories.yml +30 -0
- rasa/cli/project_templates/default/domain.yml +34 -0
- rasa/cli/project_templates/default/endpoints.yml +42 -0
- rasa/cli/project_templates/default/tests/test_stories.yml +91 -0
- rasa/cli/project_templates/tutorial/actions.py +22 -0
- rasa/cli/project_templates/tutorial/config.yml +11 -0
- rasa/cli/project_templates/tutorial/credentials.yml +33 -0
- rasa/cli/project_templates/tutorial/data/flows.yml +8 -0
- rasa/cli/project_templates/tutorial/data/patterns.yml +6 -0
- rasa/cli/project_templates/tutorial/domain.yml +21 -0
- rasa/cli/project_templates/tutorial/endpoints.yml +45 -0
- rasa/cli/run.py +135 -0
- rasa/cli/scaffold.py +269 -0
- rasa/cli/shell.py +141 -0
- rasa/cli/studio/__init__.py +0 -0
- rasa/cli/studio/download.py +62 -0
- rasa/cli/studio/studio.py +266 -0
- rasa/cli/studio/train.py +59 -0
- rasa/cli/studio/upload.py +77 -0
- rasa/cli/telemetry.py +102 -0
- rasa/cli/test.py +280 -0
- rasa/cli/train.py +260 -0
- rasa/cli/utils.py +464 -0
- rasa/cli/visualize.py +40 -0
- rasa/cli/x.py +206 -0
- rasa/constants.py +37 -0
- rasa/core/__init__.py +17 -0
- rasa/core/actions/__init__.py +0 -0
- rasa/core/actions/action.py +1225 -0
- rasa/core/actions/action_clean_stack.py +59 -0
- rasa/core/actions/action_exceptions.py +24 -0
- rasa/core/actions/action_run_slot_rejections.py +207 -0
- rasa/core/actions/action_trigger_chitchat.py +31 -0
- rasa/core/actions/action_trigger_flow.py +109 -0
- rasa/core/actions/action_trigger_search.py +31 -0
- rasa/core/actions/constants.py +5 -0
- rasa/core/actions/custom_action_executor.py +188 -0
- rasa/core/actions/forms.py +741 -0
- rasa/core/actions/grpc_custom_action_executor.py +251 -0
- rasa/core/actions/http_custom_action_executor.py +140 -0
- rasa/core/actions/loops.py +114 -0
- rasa/core/actions/two_stage_fallback.py +186 -0
- rasa/core/agent.py +555 -0
- rasa/core/auth_retry_tracker_store.py +122 -0
- rasa/core/brokers/__init__.py +0 -0
- rasa/core/brokers/broker.py +126 -0
- rasa/core/brokers/file.py +58 -0
- rasa/core/brokers/kafka.py +322 -0
- rasa/core/brokers/pika.py +386 -0
- rasa/core/brokers/sql.py +86 -0
- rasa/core/channels/__init__.py +55 -0
- rasa/core/channels/audiocodes.py +463 -0
- rasa/core/channels/botframework.py +338 -0
- rasa/core/channels/callback.py +84 -0
- rasa/core/channels/channel.py +419 -0
- rasa/core/channels/console.py +241 -0
- rasa/core/channels/development_inspector.py +93 -0
- rasa/core/channels/facebook.py +419 -0
- rasa/core/channels/hangouts.py +329 -0
- rasa/core/channels/inspector/.eslintrc.cjs +25 -0
- rasa/core/channels/inspector/.gitignore +23 -0
- rasa/core/channels/inspector/README.md +54 -0
- rasa/core/channels/inspector/assets/favicon.ico +0 -0
- rasa/core/channels/inspector/assets/rasa-chat.js +2 -0
- rasa/core/channels/inspector/custom.d.ts +3 -0
- rasa/core/channels/inspector/dist/assets/arc-b6e548fe.js +1 -0
- rasa/core/channels/inspector/dist/assets/array-9f3ba611.js +1 -0
- rasa/core/channels/inspector/dist/assets/c4Diagram-d0fbc5ce-fa03ac9e.js +10 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-936ed81e-ee67392a.js +2 -0
- rasa/core/channels/inspector/dist/assets/classDiagram-v2-c3cb15f1-9b283fae.js +2 -0
- rasa/core/channels/inspector/dist/assets/createText-62fc7601-8b6fcc2a.js +7 -0
- rasa/core/channels/inspector/dist/assets/edges-f2ad444c-22e77f4f.js +4 -0
- rasa/core/channels/inspector/dist/assets/erDiagram-9d236eb7-60ffc87f.js +51 -0
- rasa/core/channels/inspector/dist/assets/flowDb-1972c806-9dd802e4.js +6 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-7ea5b25a-5fa1912f.js +4 -0
- rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
- rasa/core/channels/inspector/dist/assets/flowchart-elk-definition-abe16c3d-622a1fd2.js +139 -0
- rasa/core/channels/inspector/dist/assets/ganttDiagram-9b5ea136-e285a63a.js +266 -0
- rasa/core/channels/inspector/dist/assets/gitGraphDiagram-99d0ae7c-f237bdca.js +70 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-128cfa44.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-21dbcb97.woff +0 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-222b5e26.svg +329 -0
- rasa/core/channels/inspector/dist/assets/ibm-plex-mono-v4-latin-regular-9ad89b2a.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/index-2c4b9a3b-4b03d70e.js +1 -0
- rasa/core/channels/inspector/dist/assets/index-3ee28881.css +1 -0
- rasa/core/channels/inspector/dist/assets/index-a5d3e69d.js +1040 -0
- rasa/core/channels/inspector/dist/assets/infoDiagram-736b4530-72a0fa5f.js +7 -0
- rasa/core/channels/inspector/dist/assets/init-77b53fdd.js +1 -0
- rasa/core/channels/inspector/dist/assets/journeyDiagram-df861f2b-82218c41.js +139 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-60c05ee4.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-8335d9b8.svg +438 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-9cc39c75.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-700-ead13ccf.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-16705655.woff2 +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-5aeb07f9.woff +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9c459044.ttf +0 -0
- rasa/core/channels/inspector/dist/assets/lato-v14-latin-regular-9e2898a4.svg +435 -0
- rasa/core/channels/inspector/dist/assets/layout-78cff630.js +1 -0
- rasa/core/channels/inspector/dist/assets/line-5038b469.js +1 -0
- rasa/core/channels/inspector/dist/assets/linear-c4fc4098.js +1 -0
- rasa/core/channels/inspector/dist/assets/mindmap-definition-beec6740-c33c8ea6.js +109 -0
- rasa/core/channels/inspector/dist/assets/ordinal-ba9b4969.js +1 -0
- rasa/core/channels/inspector/dist/assets/path-53f90ab3.js +1 -0
- rasa/core/channels/inspector/dist/assets/pieDiagram-dbbf0591-a8d03059.js +35 -0
- rasa/core/channels/inspector/dist/assets/quadrantDiagram-4d7f4fd6-6a0e56b2.js +7 -0
- rasa/core/channels/inspector/dist/assets/requirementDiagram-6fc4c22a-2dc7c7bd.js +52 -0
- rasa/core/channels/inspector/dist/assets/sankeyDiagram-8f13d901-2360fe39.js +8 -0
- rasa/core/channels/inspector/dist/assets/sequenceDiagram-b655622a-41b9f9ad.js +122 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-59f0c015-0aad326f.js +1 -0
- rasa/core/channels/inspector/dist/assets/stateDiagram-v2-2b26beab-9847d984.js +1 -0
- rasa/core/channels/inspector/dist/assets/styles-080da4f6-564d890e.js +110 -0
- rasa/core/channels/inspector/dist/assets/styles-3dcbcfbf-38957613.js +159 -0
- rasa/core/channels/inspector/dist/assets/styles-9c745c82-f0fc6921.js +207 -0
- rasa/core/channels/inspector/dist/assets/svgDrawCommon-4835440b-ef3c5a77.js +1 -0
- rasa/core/channels/inspector/dist/assets/timeline-definition-5b62e21b-bf3e91c1.js +61 -0
- rasa/core/channels/inspector/dist/assets/xychartDiagram-2b33534f-4d4026c0.js +7 -0
- rasa/core/channels/inspector/dist/index.html +41 -0
- rasa/core/channels/inspector/index.html +39 -0
- rasa/core/channels/inspector/jest.config.ts +13 -0
- rasa/core/channels/inspector/package.json +48 -0
- rasa/core/channels/inspector/setupTests.ts +2 -0
- rasa/core/channels/inspector/src/App.tsx +170 -0
- rasa/core/channels/inspector/src/components/DiagramFlow.tsx +107 -0
- rasa/core/channels/inspector/src/components/DialogueInformation.tsx +187 -0
- rasa/core/channels/inspector/src/components/DialogueStack.tsx +151 -0
- rasa/core/channels/inspector/src/components/ExpandIcon.tsx +16 -0
- rasa/core/channels/inspector/src/components/FullscreenButton.tsx +45 -0
- rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +19 -0
- rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +21 -0
- rasa/core/channels/inspector/src/components/RasaLogo.tsx +32 -0
- rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +39 -0
- rasa/core/channels/inspector/src/components/Slots.tsx +91 -0
- rasa/core/channels/inspector/src/components/Welcome.tsx +54 -0
- rasa/core/channels/inspector/src/helpers/formatters.test.ts +382 -0
- rasa/core/channels/inspector/src/helpers/formatters.ts +240 -0
- rasa/core/channels/inspector/src/helpers/utils.ts +42 -0
- rasa/core/channels/inspector/src/main.tsx +13 -0
- rasa/core/channels/inspector/src/theme/Button/Button.ts +29 -0
- rasa/core/channels/inspector/src/theme/Heading/Heading.ts +31 -0
- rasa/core/channels/inspector/src/theme/Input/Input.ts +27 -0
- rasa/core/channels/inspector/src/theme/Link/Link.ts +10 -0
- rasa/core/channels/inspector/src/theme/Modal/Modal.ts +47 -0
- rasa/core/channels/inspector/src/theme/Table/Table.tsx +38 -0
- rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +12 -0
- rasa/core/channels/inspector/src/theme/base/breakpoints.ts +8 -0
- rasa/core/channels/inspector/src/theme/base/colors.ts +88 -0
- rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +29 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.svg +329 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/ibm-plex-mono-v4-latin/ibm-plex-mono-v4-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.svg +438 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-700.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.eot +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.svg +435 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.ttf +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff +0 -0
- rasa/core/channels/inspector/src/theme/base/fonts/lato-v14-latin/lato-v14-latin-regular.woff2 +0 -0
- rasa/core/channels/inspector/src/theme/base/radii.ts +9 -0
- rasa/core/channels/inspector/src/theme/base/shadows.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/sizes.ts +7 -0
- rasa/core/channels/inspector/src/theme/base/space.ts +15 -0
- rasa/core/channels/inspector/src/theme/base/styles.ts +13 -0
- rasa/core/channels/inspector/src/theme/base/typography.ts +24 -0
- rasa/core/channels/inspector/src/theme/base/zIndices.ts +19 -0
- rasa/core/channels/inspector/src/theme/index.ts +101 -0
- rasa/core/channels/inspector/src/types.ts +64 -0
- rasa/core/channels/inspector/src/vite-env.d.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/fileMock.ts +1 -0
- rasa/core/channels/inspector/tests/__mocks__/matchMedia.ts +16 -0
- rasa/core/channels/inspector/tests/__mocks__/styleMock.ts +1 -0
- rasa/core/channels/inspector/tests/renderWithProviders.tsx +14 -0
- rasa/core/channels/inspector/tsconfig.json +26 -0
- rasa/core/channels/inspector/tsconfig.node.json +10 -0
- rasa/core/channels/inspector/vite.config.ts +8 -0
- rasa/core/channels/inspector/yarn.lock +6156 -0
- rasa/core/channels/mattermost.py +229 -0
- rasa/core/channels/rasa_chat.py +126 -0
- rasa/core/channels/rest.py +225 -0
- rasa/core/channels/rocketchat.py +174 -0
- rasa/core/channels/slack.py +620 -0
- rasa/core/channels/socketio.py +274 -0
- rasa/core/channels/telegram.py +298 -0
- rasa/core/channels/twilio.py +169 -0
- rasa/core/channels/twilio_voice.py +367 -0
- rasa/core/channels/vier_cvg.py +374 -0
- rasa/core/channels/webexteams.py +134 -0
- rasa/core/concurrent_lock_store.py +210 -0
- rasa/core/constants.py +107 -0
- rasa/core/evaluation/__init__.py +0 -0
- rasa/core/evaluation/marker.py +267 -0
- rasa/core/evaluation/marker_base.py +923 -0
- rasa/core/evaluation/marker_stats.py +293 -0
- rasa/core/evaluation/marker_tracker_loader.py +103 -0
- rasa/core/exceptions.py +29 -0
- rasa/core/exporter.py +284 -0
- rasa/core/featurizers/__init__.py +0 -0
- rasa/core/featurizers/precomputation.py +410 -0
- rasa/core/featurizers/single_state_featurizer.py +421 -0
- rasa/core/featurizers/tracker_featurizers.py +1262 -0
- rasa/core/http_interpreter.py +89 -0
- rasa/core/information_retrieval/__init__.py +7 -0
- rasa/core/information_retrieval/faiss.py +121 -0
- rasa/core/information_retrieval/information_retrieval.py +129 -0
- rasa/core/information_retrieval/milvus.py +52 -0
- rasa/core/information_retrieval/qdrant.py +95 -0
- rasa/core/jobs.py +63 -0
- rasa/core/lock.py +139 -0
- rasa/core/lock_store.py +343 -0
- rasa/core/migrate.py +403 -0
- rasa/core/nlg/__init__.py +3 -0
- rasa/core/nlg/callback.py +146 -0
- rasa/core/nlg/contextual_response_rephraser.py +270 -0
- rasa/core/nlg/generator.py +230 -0
- rasa/core/nlg/interpolator.py +143 -0
- rasa/core/nlg/response.py +155 -0
- rasa/core/nlg/summarize.py +69 -0
- rasa/core/policies/__init__.py +0 -0
- rasa/core/policies/ensemble.py +329 -0
- rasa/core/policies/enterprise_search_policy.py +781 -0
- rasa/core/policies/enterprise_search_prompt_template.jinja2 +25 -0
- rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
- rasa/core/policies/flow_policy.py +205 -0
- rasa/core/policies/flows/__init__.py +0 -0
- rasa/core/policies/flows/flow_exceptions.py +44 -0
- rasa/core/policies/flows/flow_executor.py +705 -0
- rasa/core/policies/flows/flow_step_result.py +43 -0
- rasa/core/policies/intentless_policy.py +922 -0
- rasa/core/policies/intentless_prompt_template.jinja2 +22 -0
- rasa/core/policies/memoization.py +538 -0
- rasa/core/policies/policy.py +725 -0
- rasa/core/policies/rule_policy.py +1273 -0
- rasa/core/policies/ted_policy.py +2169 -0
- rasa/core/policies/unexpected_intent_policy.py +1022 -0
- rasa/core/processor.py +1422 -0
- rasa/core/run.py +331 -0
- rasa/core/secrets_manager/__init__.py +0 -0
- rasa/core/secrets_manager/constants.py +32 -0
- rasa/core/secrets_manager/endpoints.py +391 -0
- rasa/core/secrets_manager/factory.py +233 -0
- rasa/core/secrets_manager/secret_manager.py +262 -0
- rasa/core/secrets_manager/vault.py +574 -0
- rasa/core/test.py +1335 -0
- rasa/core/tracker_store.py +1699 -0
- rasa/core/train.py +105 -0
- rasa/core/training/__init__.py +89 -0
- rasa/core/training/converters/__init__.py +0 -0
- rasa/core/training/converters/responses_prefix_converter.py +119 -0
- rasa/core/training/interactive.py +1745 -0
- rasa/core/training/story_conflict.py +381 -0
- rasa/core/training/training.py +93 -0
- rasa/core/utils.py +339 -0
- rasa/core/visualize.py +70 -0
- rasa/dialogue_understanding/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/__init__.py +0 -0
- rasa/dialogue_understanding/coexistence/constants.py +4 -0
- rasa/dialogue_understanding/coexistence/intent_based_router.py +196 -0
- rasa/dialogue_understanding/coexistence/llm_based_router.py +260 -0
- rasa/dialogue_understanding/coexistence/router_template.jinja2 +12 -0
- rasa/dialogue_understanding/commands/__init__.py +49 -0
- rasa/dialogue_understanding/commands/can_not_handle_command.py +70 -0
- rasa/dialogue_understanding/commands/cancel_flow_command.py +125 -0
- rasa/dialogue_understanding/commands/change_flow_command.py +44 -0
- rasa/dialogue_understanding/commands/chit_chat_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/clarify_command.py +86 -0
- rasa/dialogue_understanding/commands/command.py +85 -0
- rasa/dialogue_understanding/commands/correct_slots_command.py +297 -0
- rasa/dialogue_understanding/commands/error_command.py +79 -0
- rasa/dialogue_understanding/commands/free_form_answer_command.py +9 -0
- rasa/dialogue_understanding/commands/handle_code_change_command.py +73 -0
- rasa/dialogue_understanding/commands/human_handoff_command.py +66 -0
- rasa/dialogue_understanding/commands/knowledge_answer_command.py +57 -0
- rasa/dialogue_understanding/commands/noop_command.py +54 -0
- rasa/dialogue_understanding/commands/set_slot_command.py +160 -0
- rasa/dialogue_understanding/commands/skip_question_command.py +75 -0
- rasa/dialogue_understanding/commands/start_flow_command.py +107 -0
- rasa/dialogue_understanding/generator/__init__.py +21 -0
- rasa/dialogue_understanding/generator/command_generator.py +343 -0
- rasa/dialogue_understanding/generator/constants.py +18 -0
- rasa/dialogue_understanding/generator/flow_document_template.jinja2 +4 -0
- rasa/dialogue_understanding/generator/flow_retrieval.py +412 -0
- rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -0
- rasa/dialogue_understanding/generator/llm_command_generator.py +67 -0
- rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
- rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
- rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +827 -0
- rasa/dialogue_understanding/generator/nlu_command_adapter.py +218 -0
- rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
- rasa/dialogue_understanding/generator/single_step/command_prompt_template.jinja2 +57 -0
- rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -0
- rasa/dialogue_understanding/patterns/__init__.py +0 -0
- rasa/dialogue_understanding/patterns/cancel.py +111 -0
- rasa/dialogue_understanding/patterns/cannot_handle.py +43 -0
- rasa/dialogue_understanding/patterns/chitchat.py +37 -0
- rasa/dialogue_understanding/patterns/clarify.py +97 -0
- rasa/dialogue_understanding/patterns/code_change.py +41 -0
- rasa/dialogue_understanding/patterns/collect_information.py +90 -0
- rasa/dialogue_understanding/patterns/completed.py +40 -0
- rasa/dialogue_understanding/patterns/continue_interrupted.py +42 -0
- rasa/dialogue_understanding/patterns/correction.py +278 -0
- rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +248 -0
- rasa/dialogue_understanding/patterns/human_handoff.py +37 -0
- rasa/dialogue_understanding/patterns/internal_error.py +47 -0
- rasa/dialogue_understanding/patterns/search.py +37 -0
- rasa/dialogue_understanding/patterns/skip_question.py +38 -0
- rasa/dialogue_understanding/processor/__init__.py +0 -0
- rasa/dialogue_understanding/processor/command_processor.py +687 -0
- rasa/dialogue_understanding/processor/command_processor_component.py +39 -0
- rasa/dialogue_understanding/stack/__init__.py +0 -0
- rasa/dialogue_understanding/stack/dialogue_stack.py +178 -0
- rasa/dialogue_understanding/stack/frames/__init__.py +19 -0
- rasa/dialogue_understanding/stack/frames/chit_chat_frame.py +27 -0
- rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py +137 -0
- rasa/dialogue_understanding/stack/frames/flow_stack_frame.py +157 -0
- rasa/dialogue_understanding/stack/frames/pattern_frame.py +10 -0
- rasa/dialogue_understanding/stack/frames/search_frame.py +27 -0
- rasa/dialogue_understanding/stack/utils.py +211 -0
- rasa/e2e_test/__init__.py +0 -0
- rasa/e2e_test/constants.py +11 -0
- rasa/e2e_test/e2e_test_case.py +366 -0
- rasa/e2e_test/e2e_test_result.py +34 -0
- rasa/e2e_test/e2e_test_runner.py +768 -0
- rasa/e2e_test/e2e_test_schema.yml +85 -0
- rasa/engine/__init__.py +0 -0
- rasa/engine/caching.py +463 -0
- rasa/engine/constants.py +17 -0
- rasa/engine/exceptions.py +14 -0
- rasa/engine/graph.py +637 -0
- rasa/engine/loader.py +36 -0
- rasa/engine/recipes/__init__.py +0 -0
- rasa/engine/recipes/config_files/default_config.yml +44 -0
- rasa/engine/recipes/default_components.py +99 -0
- rasa/engine/recipes/default_recipe.py +1251 -0
- rasa/engine/recipes/graph_recipe.py +79 -0
- rasa/engine/recipes/recipe.py +93 -0
- rasa/engine/runner/__init__.py +0 -0
- rasa/engine/runner/dask.py +250 -0
- rasa/engine/runner/interface.py +49 -0
- rasa/engine/storage/__init__.py +0 -0
- rasa/engine/storage/local_model_storage.py +246 -0
- rasa/engine/storage/resource.py +110 -0
- rasa/engine/storage/storage.py +203 -0
- rasa/engine/training/__init__.py +0 -0
- rasa/engine/training/components.py +176 -0
- rasa/engine/training/fingerprinting.py +64 -0
- rasa/engine/training/graph_trainer.py +256 -0
- rasa/engine/training/hooks.py +164 -0
- rasa/engine/validation.py +873 -0
- rasa/env.py +5 -0
- rasa/exceptions.py +69 -0
- rasa/graph_components/__init__.py +0 -0
- rasa/graph_components/converters/__init__.py +0 -0
- rasa/graph_components/converters/nlu_message_converter.py +48 -0
- rasa/graph_components/providers/__init__.py +0 -0
- rasa/graph_components/providers/domain_for_core_training_provider.py +87 -0
- rasa/graph_components/providers/domain_provider.py +71 -0
- rasa/graph_components/providers/flows_provider.py +74 -0
- rasa/graph_components/providers/forms_provider.py +44 -0
- rasa/graph_components/providers/nlu_training_data_provider.py +56 -0
- rasa/graph_components/providers/responses_provider.py +44 -0
- rasa/graph_components/providers/rule_only_provider.py +49 -0
- rasa/graph_components/providers/story_graph_provider.py +43 -0
- rasa/graph_components/providers/training_tracker_provider.py +55 -0
- rasa/graph_components/validators/__init__.py +0 -0
- rasa/graph_components/validators/default_recipe_validator.py +550 -0
- rasa/graph_components/validators/finetuning_validator.py +302 -0
- rasa/hooks.py +112 -0
- rasa/jupyter.py +63 -0
- rasa/markers/__init__.py +0 -0
- rasa/markers/marker.py +269 -0
- rasa/markers/marker_base.py +828 -0
- rasa/markers/upload.py +74 -0
- rasa/markers/validate.py +21 -0
- rasa/model.py +118 -0
- rasa/model_testing.py +457 -0
- rasa/model_training.py +536 -0
- rasa/nlu/__init__.py +7 -0
- rasa/nlu/classifiers/__init__.py +3 -0
- rasa/nlu/classifiers/classifier.py +5 -0
- rasa/nlu/classifiers/diet_classifier.py +1881 -0
- rasa/nlu/classifiers/fallback_classifier.py +192 -0
- rasa/nlu/classifiers/keyword_intent_classifier.py +188 -0
- rasa/nlu/classifiers/llm_intent_classifier.py +519 -0
- rasa/nlu/classifiers/logistic_regression_classifier.py +253 -0
- rasa/nlu/classifiers/mitie_intent_classifier.py +156 -0
- rasa/nlu/classifiers/regex_message_handler.py +56 -0
- rasa/nlu/classifiers/sklearn_intent_classifier.py +330 -0
- rasa/nlu/constants.py +77 -0
- rasa/nlu/convert.py +40 -0
- rasa/nlu/emulators/__init__.py +0 -0
- rasa/nlu/emulators/dialogflow.py +55 -0
- rasa/nlu/emulators/emulator.py +49 -0
- rasa/nlu/emulators/luis.py +86 -0
- rasa/nlu/emulators/no_emulator.py +10 -0
- rasa/nlu/emulators/wit.py +56 -0
- rasa/nlu/extractors/__init__.py +0 -0
- rasa/nlu/extractors/crf_entity_extractor.py +715 -0
- rasa/nlu/extractors/duckling_entity_extractor.py +206 -0
- rasa/nlu/extractors/entity_synonyms.py +178 -0
- rasa/nlu/extractors/extractor.py +470 -0
- rasa/nlu/extractors/mitie_entity_extractor.py +293 -0
- rasa/nlu/extractors/regex_entity_extractor.py +220 -0
- rasa/nlu/extractors/spacy_entity_extractor.py +95 -0
- rasa/nlu/featurizers/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +445 -0
- rasa/nlu/featurizers/dense_featurizer/dense_featurizer.py +57 -0
- rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +768 -0
- rasa/nlu/featurizers/dense_featurizer/mitie_featurizer.py +170 -0
- rasa/nlu/featurizers/dense_featurizer/spacy_featurizer.py +132 -0
- rasa/nlu/featurizers/featurizer.py +89 -0
- rasa/nlu/featurizers/sparse_featurizer/__init__.py +0 -0
- rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +867 -0
- rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +571 -0
- rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +271 -0
- rasa/nlu/featurizers/sparse_featurizer/sparse_featurizer.py +9 -0
- rasa/nlu/model.py +24 -0
- rasa/nlu/persistor.py +282 -0
- rasa/nlu/run.py +27 -0
- rasa/nlu/selectors/__init__.py +0 -0
- rasa/nlu/selectors/response_selector.py +987 -0
- rasa/nlu/test.py +1940 -0
- rasa/nlu/tokenizers/__init__.py +0 -0
- rasa/nlu/tokenizers/jieba_tokenizer.py +148 -0
- rasa/nlu/tokenizers/mitie_tokenizer.py +75 -0
- rasa/nlu/tokenizers/spacy_tokenizer.py +72 -0
- rasa/nlu/tokenizers/tokenizer.py +239 -0
- rasa/nlu/tokenizers/whitespace_tokenizer.py +106 -0
- rasa/nlu/utils/__init__.py +35 -0
- rasa/nlu/utils/bilou_utils.py +462 -0
- rasa/nlu/utils/hugging_face/__init__.py +0 -0
- rasa/nlu/utils/hugging_face/registry.py +108 -0
- rasa/nlu/utils/hugging_face/transformers_pre_post_processors.py +311 -0
- rasa/nlu/utils/mitie_utils.py +113 -0
- rasa/nlu/utils/pattern_utils.py +168 -0
- rasa/nlu/utils/spacy_utils.py +310 -0
- rasa/plugin.py +90 -0
- rasa/server.py +1551 -0
- rasa/shared/__init__.py +0 -0
- rasa/shared/constants.py +192 -0
- rasa/shared/core/__init__.py +0 -0
- rasa/shared/core/command_payload_reader.py +109 -0
- rasa/shared/core/constants.py +167 -0
- rasa/shared/core/conversation.py +46 -0
- rasa/shared/core/domain.py +2107 -0
- rasa/shared/core/events.py +2504 -0
- rasa/shared/core/flows/__init__.py +7 -0
- rasa/shared/core/flows/flow.py +362 -0
- rasa/shared/core/flows/flow_step.py +146 -0
- rasa/shared/core/flows/flow_step_links.py +319 -0
- rasa/shared/core/flows/flow_step_sequence.py +70 -0
- rasa/shared/core/flows/flows_list.py +223 -0
- rasa/shared/core/flows/flows_yaml_schema.json +217 -0
- rasa/shared/core/flows/nlu_trigger.py +117 -0
- rasa/shared/core/flows/steps/__init__.py +24 -0
- rasa/shared/core/flows/steps/action.py +56 -0
- rasa/shared/core/flows/steps/call.py +64 -0
- rasa/shared/core/flows/steps/collect.py +112 -0
- rasa/shared/core/flows/steps/constants.py +5 -0
- rasa/shared/core/flows/steps/continuation.py +36 -0
- rasa/shared/core/flows/steps/end.py +22 -0
- rasa/shared/core/flows/steps/internal.py +44 -0
- rasa/shared/core/flows/steps/link.py +51 -0
- rasa/shared/core/flows/steps/no_operation.py +48 -0
- rasa/shared/core/flows/steps/set_slots.py +50 -0
- rasa/shared/core/flows/steps/start.py +30 -0
- rasa/shared/core/flows/validation.py +527 -0
- rasa/shared/core/flows/yaml_flows_io.py +278 -0
- rasa/shared/core/generator.py +908 -0
- rasa/shared/core/slot_mappings.py +526 -0
- rasa/shared/core/slots.py +649 -0
- rasa/shared/core/trackers.py +1177 -0
- rasa/shared/core/training_data/__init__.py +0 -0
- rasa/shared/core/training_data/loading.py +89 -0
- rasa/shared/core/training_data/story_reader/__init__.py +0 -0
- rasa/shared/core/training_data/story_reader/story_reader.py +129 -0
- rasa/shared/core/training_data/story_reader/story_step_builder.py +168 -0
- rasa/shared/core/training_data/story_reader/yaml_story_reader.py +888 -0
- rasa/shared/core/training_data/story_writer/__init__.py +0 -0
- rasa/shared/core/training_data/story_writer/story_writer.py +76 -0
- rasa/shared/core/training_data/story_writer/yaml_story_writer.py +444 -0
- rasa/shared/core/training_data/structures.py +838 -0
- rasa/shared/core/training_data/visualization.html +146 -0
- rasa/shared/core/training_data/visualization.py +603 -0
- rasa/shared/data.py +249 -0
- rasa/shared/engine/__init__.py +0 -0
- rasa/shared/engine/caching.py +26 -0
- rasa/shared/exceptions.py +163 -0
- rasa/shared/importers/__init__.py +0 -0
- rasa/shared/importers/importer.py +704 -0
- rasa/shared/importers/multi_project.py +203 -0
- rasa/shared/importers/rasa.py +99 -0
- rasa/shared/importers/utils.py +34 -0
- rasa/shared/nlu/__init__.py +0 -0
- rasa/shared/nlu/constants.py +47 -0
- rasa/shared/nlu/interpreter.py +10 -0
- rasa/shared/nlu/training_data/__init__.py +0 -0
- rasa/shared/nlu/training_data/entities_parser.py +208 -0
- rasa/shared/nlu/training_data/features.py +492 -0
- rasa/shared/nlu/training_data/formats/__init__.py +10 -0
- rasa/shared/nlu/training_data/formats/dialogflow.py +163 -0
- rasa/shared/nlu/training_data/formats/luis.py +87 -0
- rasa/shared/nlu/training_data/formats/rasa.py +135 -0
- rasa/shared/nlu/training_data/formats/rasa_yaml.py +603 -0
- rasa/shared/nlu/training_data/formats/readerwriter.py +244 -0
- rasa/shared/nlu/training_data/formats/wit.py +52 -0
- rasa/shared/nlu/training_data/loading.py +137 -0
- rasa/shared/nlu/training_data/lookup_tables_parser.py +30 -0
- rasa/shared/nlu/training_data/message.py +490 -0
- rasa/shared/nlu/training_data/schemas/__init__.py +0 -0
- rasa/shared/nlu/training_data/schemas/data_schema.py +85 -0
- rasa/shared/nlu/training_data/schemas/nlu.yml +53 -0
- rasa/shared/nlu/training_data/schemas/responses.yml +70 -0
- rasa/shared/nlu/training_data/synonyms_parser.py +42 -0
- rasa/shared/nlu/training_data/training_data.py +730 -0
- rasa/shared/nlu/training_data/util.py +223 -0
- rasa/shared/providers/__init__.py +0 -0
- rasa/shared/providers/openai/__init__.py +0 -0
- rasa/shared/providers/openai/clients.py +43 -0
- rasa/shared/providers/openai/session_handler.py +110 -0
- rasa/shared/utils/__init__.py +0 -0
- rasa/shared/utils/cli.py +72 -0
- rasa/shared/utils/common.py +308 -0
- rasa/shared/utils/constants.py +4 -0
- rasa/shared/utils/io.py +415 -0
- rasa/shared/utils/llm.py +404 -0
- rasa/shared/utils/pykwalify_extensions.py +27 -0
- rasa/shared/utils/schemas/__init__.py +0 -0
- rasa/shared/utils/schemas/config.yml +2 -0
- rasa/shared/utils/schemas/domain.yml +145 -0
- rasa/shared/utils/schemas/events.py +212 -0
- rasa/shared/utils/schemas/model_config.yml +46 -0
- rasa/shared/utils/schemas/stories.yml +173 -0
- rasa/shared/utils/yaml.py +786 -0
- rasa/studio/__init__.py +0 -0
- rasa/studio/auth.py +268 -0
- rasa/studio/config.py +127 -0
- rasa/studio/constants.py +18 -0
- rasa/studio/data_handler.py +359 -0
- rasa/studio/download.py +483 -0
- rasa/studio/results_logger.py +137 -0
- rasa/studio/train.py +135 -0
- rasa/studio/upload.py +433 -0
- rasa/telemetry.py +1737 -0
- rasa/tracing/__init__.py +0 -0
- rasa/tracing/config.py +353 -0
- rasa/tracing/constants.py +62 -0
- rasa/tracing/instrumentation/__init__.py +0 -0
- rasa/tracing/instrumentation/attribute_extractors.py +672 -0
- rasa/tracing/instrumentation/instrumentation.py +1185 -0
- rasa/tracing/instrumentation/intentless_policy_instrumentation.py +144 -0
- rasa/tracing/instrumentation/metrics.py +294 -0
- rasa/tracing/metric_instrument_provider.py +205 -0
- rasa/utils/__init__.py +0 -0
- rasa/utils/beta.py +83 -0
- rasa/utils/cli.py +28 -0
- rasa/utils/common.py +635 -0
- rasa/utils/converter.py +53 -0
- rasa/utils/endpoints.py +302 -0
- rasa/utils/io.py +260 -0
- rasa/utils/licensing.py +534 -0
- rasa/utils/log_utils.py +174 -0
- rasa/utils/mapper.py +210 -0
- rasa/utils/ml_utils.py +145 -0
- rasa/utils/plotting.py +362 -0
- rasa/utils/singleton.py +23 -0
- rasa/utils/tensorflow/__init__.py +0 -0
- rasa/utils/tensorflow/callback.py +112 -0
- rasa/utils/tensorflow/constants.py +116 -0
- rasa/utils/tensorflow/crf.py +492 -0
- rasa/utils/tensorflow/data_generator.py +440 -0
- rasa/utils/tensorflow/environment.py +161 -0
- rasa/utils/tensorflow/exceptions.py +5 -0
- rasa/utils/tensorflow/feature_array.py +366 -0
- rasa/utils/tensorflow/layers.py +1565 -0
- rasa/utils/tensorflow/layers_utils.py +113 -0
- rasa/utils/tensorflow/metrics.py +281 -0
- rasa/utils/tensorflow/model_data.py +798 -0
- rasa/utils/tensorflow/model_data_utils.py +499 -0
- rasa/utils/tensorflow/models.py +935 -0
- rasa/utils/tensorflow/rasa_layers.py +1094 -0
- rasa/utils/tensorflow/transformer.py +640 -0
- rasa/utils/tensorflow/types.py +6 -0
- rasa/utils/train_utils.py +572 -0
- rasa/utils/url_tools.py +53 -0
- rasa/utils/yaml.py +54 -0
- rasa/validator.py +1337 -0
- rasa/version.py +3 -0
- rasa_pro-3.9.18.dist-info/METADATA +563 -0
- rasa_pro-3.9.18.dist-info/NOTICE +5 -0
- rasa_pro-3.9.18.dist-info/RECORD +662 -0
- rasa_pro-3.9.18.dist-info/WHEEL +4 -0
- rasa_pro-3.9.18.dist-info/entry_points.txt +3 -0
rasa/cli/license.py
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
import rasa.shared.utils.cli
|
|
5
|
+
from rasa.cli import SubParsersAction
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def add_subparser(
|
|
9
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
10
|
+
) -> None:
|
|
11
|
+
"""Add license parser.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
subparsers: subparser we are going to attach to
|
|
15
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
16
|
+
"""
|
|
17
|
+
license_parser = subparsers.add_parser(
|
|
18
|
+
"license",
|
|
19
|
+
parents=parents,
|
|
20
|
+
help="Displays licensing information.",
|
|
21
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
22
|
+
description="Display licensing information.",
|
|
23
|
+
)
|
|
24
|
+
license_parser.set_defaults(func=display_license_information)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def display_license_information(_: argparse.Namespace) -> None:
|
|
28
|
+
"""Display licensing information to stdout."""
|
|
29
|
+
rasa.shared.utils.cli.print_info(
|
|
30
|
+
"By installing and using this software, you agree to be "
|
|
31
|
+
"bound by the terms and conditions of the Developer Terms "
|
|
32
|
+
"available at https://rasa.com/developer-terms. "
|
|
33
|
+
"Please review the Developer Terms carefully before proceeding.\n\n"
|
|
34
|
+
"Rasa Pro relies on several 3rd-party dependencies. "
|
|
35
|
+
"The ones below require a license disclorure:\n",
|
|
36
|
+
PSYCOPG2_LICENSE_DISCLOSURE,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
PSYCOPG2_LICENSE_DISCLOSURE = """
|
|
41
|
+
psycopg2 & psycopg2-binary
|
|
42
|
+
--------------------------
|
|
43
|
+
|
|
44
|
+
psycopg2 and the LGPL
|
|
45
|
+
|
|
46
|
+
psycopg2 is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
47
|
+
|
|
48
|
+
psycopg2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
49
|
+
|
|
50
|
+
In addition, as a special exception, the copyright holders give permission to link this program with the OpenSSL library (or with modified versions of OpenSSL that use the same license as OpenSSL), and distribute linked combinations including the two.
|
|
51
|
+
|
|
52
|
+
You must obey the GNU Lesser General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here.
|
|
53
|
+
|
|
54
|
+
You should have received a copy of the GNU Lesser General Public License along with psycopg2 (see the doc/ directory.) If not, see https://www.gnu.org/licenses/. Alternative licenses
|
|
55
|
+
|
|
56
|
+
The following BSD-like license applies (at your option) to the files following the pattern psycopg/adapter*.{h,c} and psycopg/microprotocol*.{h,c}:
|
|
57
|
+
|
|
58
|
+
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
|
59
|
+
|
|
60
|
+
The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
|
61
|
+
|
|
62
|
+
Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
|
63
|
+
|
|
64
|
+
This notice may not be removed or altered from any source distribution.
|
|
65
|
+
""" # noqa: E501
|
rasa/cli/markers.py
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import List, Text
|
|
4
|
+
|
|
5
|
+
from rasa.cli import SubParsersAction
|
|
6
|
+
from rasa.cli.arguments.default_arguments import add_domain_param
|
|
7
|
+
from rasa.shared.core.domain import Domain
|
|
8
|
+
from rasa.shared.utils.cli import print_error_and_exit
|
|
9
|
+
|
|
10
|
+
from rasa.markers.upload import upload
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def add_subparser(
|
|
14
|
+
subparsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
15
|
+
) -> None:
|
|
16
|
+
"""Add all marker parsers.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
subparsers: subparser we are going to attach to
|
|
20
|
+
parents: Parent parsers, needed to ensure tree structure in argparse
|
|
21
|
+
"""
|
|
22
|
+
markers_parser = subparsers.add_parser(
|
|
23
|
+
"markers",
|
|
24
|
+
parents=parents,
|
|
25
|
+
conflict_handler="resolve",
|
|
26
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
27
|
+
help="Rasa Studio commands.",
|
|
28
|
+
)
|
|
29
|
+
marker_subparser = markers_parser.add_subparsers()
|
|
30
|
+
|
|
31
|
+
_add_upload_subparser(marker_subparser, parents)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _add_upload_subparser(
|
|
35
|
+
marker_sub_parsers: SubParsersAction, parents: List[argparse.ArgumentParser]
|
|
36
|
+
) -> None:
|
|
37
|
+
marker_upload_sub_parser = marker_sub_parsers.add_parser(
|
|
38
|
+
"upload",
|
|
39
|
+
parents=parents,
|
|
40
|
+
conflict_handler="resolve",
|
|
41
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
42
|
+
help="Upload Markers to Rasa Pro Services",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
marker_upload_sub_parser.set_defaults(func=_upload_markers)
|
|
46
|
+
|
|
47
|
+
marker_upload_sub_parser.add_argument(
|
|
48
|
+
"--config",
|
|
49
|
+
default="markers.yml",
|
|
50
|
+
type=Path,
|
|
51
|
+
help="The marker configuration file(s) containing marker definitions. "
|
|
52
|
+
"This can be a single YAML file, or a directory that contains several "
|
|
53
|
+
"files with marker definitions in it. The content of these files will "
|
|
54
|
+
"be read and merged together.",
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
marker_upload_sub_parser.add_argument(
|
|
58
|
+
"--rasa-pro-services-url",
|
|
59
|
+
default="",
|
|
60
|
+
type=Text,
|
|
61
|
+
help="The URL of the Rasa Pro Services instance to upload markers to."
|
|
62
|
+
"Specified URL should not contain a trailing slash.",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
add_domain_param(marker_upload_sub_parser)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _upload_markers(args: argparse.Namespace) -> None:
|
|
69
|
+
markers_path = args.config
|
|
70
|
+
domain_path = args.domain
|
|
71
|
+
url = args.rasa_pro_services_url
|
|
72
|
+
|
|
73
|
+
domain = Domain.load(domain_path) if domain_path else None
|
|
74
|
+
|
|
75
|
+
if domain is None:
|
|
76
|
+
print_error_and_exit("No domain specified. Skipping validation.")
|
|
77
|
+
|
|
78
|
+
upload(url=url, domain=domain, markers_path=markers_path)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# This files contains your custom actions which can be used to run
|
|
2
|
+
# custom Python code.
|
|
3
|
+
#
|
|
4
|
+
# See this guide on how to implement these action:
|
|
5
|
+
# https://rasa.com/docs/rasa-pro/concepts/custom-actions
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# This is a simple example for a custom action which utters "Hello World!"
|
|
9
|
+
|
|
10
|
+
# from typing import Any, Text, Dict, List
|
|
11
|
+
#
|
|
12
|
+
# from rasa_sdk import Action, Tracker
|
|
13
|
+
# from rasa_sdk.executor import CollectingDispatcher
|
|
14
|
+
#
|
|
15
|
+
#
|
|
16
|
+
# class ActionHelloWorld(Action):
|
|
17
|
+
#
|
|
18
|
+
# def name(self) -> Text:
|
|
19
|
+
# return "action_hello_world"
|
|
20
|
+
#
|
|
21
|
+
# def run(self, dispatcher: CollectingDispatcher,
|
|
22
|
+
# tracker: Tracker,
|
|
23
|
+
# domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
|
|
24
|
+
#
|
|
25
|
+
# dispatcher.utter_message(text="Hello World!")
|
|
26
|
+
#
|
|
27
|
+
# return []
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Text
|
|
2
|
+
|
|
3
|
+
from rasa_sdk import Action, Tracker
|
|
4
|
+
from rasa_sdk.events import SlotSet
|
|
5
|
+
from rasa_sdk.executor import CollectingDispatcher
|
|
6
|
+
|
|
7
|
+
from actions.db import add_contact, get_contacts, Contact
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AddContact(Action):
|
|
11
|
+
def name(self) -> str:
|
|
12
|
+
return "add_contact"
|
|
13
|
+
|
|
14
|
+
def run(
|
|
15
|
+
self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[str, Any]
|
|
16
|
+
) -> List[Dict[Text, Any]]:
|
|
17
|
+
contacts = get_contacts(tracker.sender_id)
|
|
18
|
+
name = tracker.get_slot("add_contact_name")
|
|
19
|
+
handle = tracker.get_slot("add_contact_handle")
|
|
20
|
+
|
|
21
|
+
if name is None or handle is None:
|
|
22
|
+
return [SlotSet("return_value", "data_not_present")]
|
|
23
|
+
|
|
24
|
+
existing_handles = {c.handle for c in contacts}
|
|
25
|
+
if handle in existing_handles:
|
|
26
|
+
return [SlotSet("return_value", "already_exists")]
|
|
27
|
+
|
|
28
|
+
new_contact = Contact(name=name, handle=handle)
|
|
29
|
+
add_contact(tracker.sender_id, new_contact)
|
|
30
|
+
return [SlotSet("return_value", "success")]
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import shutil
|
|
3
|
+
import tempfile
|
|
4
|
+
from typing import Any, List
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
|
|
8
|
+
from rasa.nlu.utils import write_json_to_file
|
|
9
|
+
from rasa.shared.utils.io import read_json_file
|
|
10
|
+
|
|
11
|
+
ORIGIN_DB_PATH = "db"
|
|
12
|
+
CONTACTS = "contacts.json"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Contact(BaseModel):
|
|
16
|
+
name: str
|
|
17
|
+
handle: str
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_session_db_path(session_id: str) -> str:
|
|
21
|
+
tempdir = tempfile.gettempdir()
|
|
22
|
+
project_name = "calm_starter"
|
|
23
|
+
return os.path.join(tempdir, project_name, session_id)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def prepare_db_file(session_id: str, db: str) -> str:
|
|
27
|
+
session_db_path = get_session_db_path(session_id)
|
|
28
|
+
os.makedirs(session_db_path, exist_ok=True)
|
|
29
|
+
destination_file = os.path.join(session_db_path, db)
|
|
30
|
+
if not os.path.exists(destination_file):
|
|
31
|
+
origin_file = os.path.join(ORIGIN_DB_PATH, db)
|
|
32
|
+
shutil.copy(origin_file, destination_file)
|
|
33
|
+
return destination_file
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def read_db(session_id: str, db: str) -> Any:
|
|
37
|
+
db_file = prepare_db_file(session_id, db)
|
|
38
|
+
return read_json_file(db_file)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def write_db(session_id: str, db: str, data: Any) -> None:
|
|
42
|
+
db_file = prepare_db_file(session_id, db)
|
|
43
|
+
write_json_to_file(db_file, data)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def get_contacts(session_id: str) -> List[Contact]:
|
|
47
|
+
return [Contact(**item) for item in read_db(session_id, CONTACTS)]
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def add_contact(session_id: str, contact: Contact) -> None:
|
|
51
|
+
contacts = get_contacts(session_id)
|
|
52
|
+
contacts.append(contact)
|
|
53
|
+
write_db(session_id, CONTACTS, [c.dict() for c in contacts])
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def write_contacts(session_id: str, contacts: List[Contact]) -> None:
|
|
57
|
+
write_db(session_id, CONTACTS, [c.dict() for c in contacts])
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Text
|
|
2
|
+
|
|
3
|
+
from rasa_sdk import Action, Tracker
|
|
4
|
+
from rasa_sdk.events import SlotSet
|
|
5
|
+
from rasa_sdk.executor import CollectingDispatcher
|
|
6
|
+
|
|
7
|
+
from actions.db import get_contacts
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ListContacts(Action):
|
|
11
|
+
def name(self) -> str:
|
|
12
|
+
return "list_contacts"
|
|
13
|
+
|
|
14
|
+
def run(
|
|
15
|
+
self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[str, Any]
|
|
16
|
+
) -> List[Dict[Text, Any]]:
|
|
17
|
+
contacts = get_contacts(tracker.sender_id)
|
|
18
|
+
if len(contacts) > 0:
|
|
19
|
+
contacts_list = "".join([f"- {c.name} ({c.handle}) \n" for c in contacts])
|
|
20
|
+
return [SlotSet("contacts_list", contacts_list)]
|
|
21
|
+
else:
|
|
22
|
+
return [SlotSet("contacts_list", None)]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Text
|
|
2
|
+
|
|
3
|
+
from rasa_sdk import Action, Tracker
|
|
4
|
+
from rasa_sdk.events import SlotSet
|
|
5
|
+
from rasa_sdk.executor import CollectingDispatcher
|
|
6
|
+
|
|
7
|
+
from actions.db import get_contacts, write_contacts
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class RemoveContact(Action):
|
|
11
|
+
def name(self) -> str:
|
|
12
|
+
return "remove_contact"
|
|
13
|
+
|
|
14
|
+
def run(
|
|
15
|
+
self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[str, Any]
|
|
16
|
+
) -> List[Dict[Text, Any]]:
|
|
17
|
+
contacts = get_contacts(tracker.sender_id)
|
|
18
|
+
handle = tracker.get_slot("remove_contact_handle")
|
|
19
|
+
|
|
20
|
+
if handle is not None:
|
|
21
|
+
contact_indices_with_handle = [
|
|
22
|
+
i for i, c in enumerate(contacts) if c.handle == handle
|
|
23
|
+
]
|
|
24
|
+
if len(contact_indices_with_handle) == 0:
|
|
25
|
+
return [SlotSet("return_value", "not_found")]
|
|
26
|
+
else:
|
|
27
|
+
removed_contact = contacts.pop(contact_indices_with_handle[0])
|
|
28
|
+
write_contacts(tracker.sender_id, contacts)
|
|
29
|
+
return [
|
|
30
|
+
SlotSet("return_value", "success"),
|
|
31
|
+
SlotSet("remove_contact_name", removed_contact.name),
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
else:
|
|
35
|
+
return [SlotSet("return_value", "missing_handle")]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This file contains the credentials for the voice & chat platforms
|
|
2
|
+
# which your bot is using.
|
|
3
|
+
# https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
|
|
4
|
+
|
|
5
|
+
rest:
|
|
6
|
+
# # you don't need to provide anything here - this channel doesn't
|
|
7
|
+
# # require any credentials
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#facebook:
|
|
11
|
+
# verify: "<verify>"
|
|
12
|
+
# secret: "<your secret>"
|
|
13
|
+
# page-access-token: "<your page access token>"
|
|
14
|
+
|
|
15
|
+
#slack:
|
|
16
|
+
# slack_token: "<your slack token>"
|
|
17
|
+
# slack_channel: "<the slack channel>"
|
|
18
|
+
# slack_signing_secret: "<your slack signing secret>"
|
|
19
|
+
|
|
20
|
+
#socketio:
|
|
21
|
+
# user_message_evt: <event name for user message>
|
|
22
|
+
# bot_message_evt: <event name for bot messages>
|
|
23
|
+
# session_persistence: <true/false>
|
|
24
|
+
|
|
25
|
+
#mattermost:
|
|
26
|
+
# url: "https://<mattermost instance>/api/v4"
|
|
27
|
+
# token: "<bot token>"
|
|
28
|
+
# webhook_url: "<callback URL>"
|
|
29
|
+
|
|
30
|
+
# This entry is needed if you are using Rasa Enterprise. The entry represents credentials
|
|
31
|
+
# for the Rasa Enterprise "channel", i.e. Talk to your bot and Share with guest testers.
|
|
32
|
+
rasa:
|
|
33
|
+
url: "http://localhost:5002/api"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
flows:
|
|
2
|
+
add_contact:
|
|
3
|
+
description: add a contact to your contact list
|
|
4
|
+
name: add a contact
|
|
5
|
+
steps:
|
|
6
|
+
- collect: "add_contact_handle"
|
|
7
|
+
description: "a user handle starting with @"
|
|
8
|
+
- collect: "add_contact_name"
|
|
9
|
+
description: "a name of a person"
|
|
10
|
+
- collect: "add_contact_confirmation"
|
|
11
|
+
ask_before_filling: true
|
|
12
|
+
next:
|
|
13
|
+
- if: "slots.add_contact_confirmation is not true"
|
|
14
|
+
then:
|
|
15
|
+
- action: utter_add_contact_cancelled
|
|
16
|
+
next: END
|
|
17
|
+
- else: add_contact
|
|
18
|
+
- id: add_contact
|
|
19
|
+
action: add_contact
|
|
20
|
+
next:
|
|
21
|
+
- if: "slots.return_value = 'success'"
|
|
22
|
+
then:
|
|
23
|
+
- action: utter_contact_added
|
|
24
|
+
next: END
|
|
25
|
+
- if: "slots.return_value = 'already_exists'"
|
|
26
|
+
then:
|
|
27
|
+
- action: utter_contact_already_exists
|
|
28
|
+
next: END
|
|
29
|
+
- else:
|
|
30
|
+
- action: utter_add_contact_error
|
|
31
|
+
next: END
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
flows:
|
|
2
|
+
list_contacts:
|
|
3
|
+
name: list your contacts
|
|
4
|
+
description: show your contact list
|
|
5
|
+
steps:
|
|
6
|
+
- action: list_contacts
|
|
7
|
+
next:
|
|
8
|
+
- if: "slots.contacts_list"
|
|
9
|
+
then:
|
|
10
|
+
- action: utter_list_contacts
|
|
11
|
+
next: END
|
|
12
|
+
- else:
|
|
13
|
+
- action: utter_no_contacts
|
|
14
|
+
next: END
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
flows:
|
|
2
|
+
remove_contact:
|
|
3
|
+
name: remove a contact
|
|
4
|
+
description: remove a contact from your contact list
|
|
5
|
+
steps:
|
|
6
|
+
- collect: "remove_contact_handle"
|
|
7
|
+
description: "a contact handle starting with @"
|
|
8
|
+
- collect: "remove_contact_confirmation"
|
|
9
|
+
ask_before_filling: true
|
|
10
|
+
next:
|
|
11
|
+
- if: "slots.remove_contact_confirmation is not true"
|
|
12
|
+
then:
|
|
13
|
+
- action: utter_remove_contact_cancelled
|
|
14
|
+
next: END
|
|
15
|
+
- else: remove_contact
|
|
16
|
+
- id: "remove_contact"
|
|
17
|
+
action: remove_contact
|
|
18
|
+
next:
|
|
19
|
+
- if: "slots.return_value == 'success'"
|
|
20
|
+
then:
|
|
21
|
+
- action: utter_remove_contact_success
|
|
22
|
+
next: END
|
|
23
|
+
- if: "slots.return_value == 'not_found'"
|
|
24
|
+
then:
|
|
25
|
+
- action: utter_contact_not_in_list
|
|
26
|
+
next: END
|
|
27
|
+
- else:
|
|
28
|
+
- action: utter_remove_contact_error
|
|
29
|
+
next: END
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
version: "3.1"
|
|
2
|
+
|
|
3
|
+
actions:
|
|
4
|
+
- add_contact
|
|
5
|
+
|
|
6
|
+
slots:
|
|
7
|
+
add_contact_confirmation:
|
|
8
|
+
type: bool
|
|
9
|
+
mappings:
|
|
10
|
+
- type: from_llm
|
|
11
|
+
add_contact_name:
|
|
12
|
+
type: text
|
|
13
|
+
mappings:
|
|
14
|
+
- type: from_llm
|
|
15
|
+
add_contact_handle:
|
|
16
|
+
type: text
|
|
17
|
+
mappings:
|
|
18
|
+
- type: from_llm
|
|
19
|
+
|
|
20
|
+
responses:
|
|
21
|
+
utter_ask_add_contact_confirmation:
|
|
22
|
+
- text: Do you want to add {add_contact_name}({add_contact_handle}) to your contacts?
|
|
23
|
+
buttons:
|
|
24
|
+
- payload: "/SetSlots(add_contact_confirmation=true)"
|
|
25
|
+
title: Yes
|
|
26
|
+
- payload: "/SetSlots(add_contact_confirmation=false)"
|
|
27
|
+
title: No, cancel
|
|
28
|
+
utter_ask_add_contact_handle:
|
|
29
|
+
- text: What's the handle of the user you want to add?
|
|
30
|
+
utter_ask_add_contact_name:
|
|
31
|
+
- text: What's the name of the user you want to add?
|
|
32
|
+
utter_add_contact_error:
|
|
33
|
+
- text: "Something went wrong, please try again."
|
|
34
|
+
utter_add_contact_cancelled:
|
|
35
|
+
- text: "Okay, I am cancelling this adding of a contact."
|
|
36
|
+
utter_contact_already_exists:
|
|
37
|
+
- text: "There's already a contact with that handle in your list."
|
|
38
|
+
utter_contact_added:
|
|
39
|
+
- text: "Contact added successfully."
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
version: "3.1"
|
|
2
|
+
|
|
3
|
+
actions:
|
|
4
|
+
- list_contacts
|
|
5
|
+
|
|
6
|
+
slots:
|
|
7
|
+
contacts_list:
|
|
8
|
+
type: text
|
|
9
|
+
mappings:
|
|
10
|
+
- type: custom
|
|
11
|
+
action: list_contacts
|
|
12
|
+
|
|
13
|
+
responses:
|
|
14
|
+
utter_no_contacts:
|
|
15
|
+
- text: "You have no contacts in your list."
|
|
16
|
+
utter_list_contacts:
|
|
17
|
+
- text: "You currently have the following contacts:\n{contacts_list}"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
version: "3.1"
|
|
2
|
+
|
|
3
|
+
actions:
|
|
4
|
+
- remove_contact
|
|
5
|
+
|
|
6
|
+
slots:
|
|
7
|
+
remove_contact_name:
|
|
8
|
+
type: text
|
|
9
|
+
mappings:
|
|
10
|
+
- type: custom
|
|
11
|
+
action: remove_contact
|
|
12
|
+
remove_contact_handle:
|
|
13
|
+
type: text
|
|
14
|
+
mappings:
|
|
15
|
+
- type: from_llm
|
|
16
|
+
remove_contact_confirmation:
|
|
17
|
+
type: text
|
|
18
|
+
mappings:
|
|
19
|
+
- type: from_llm
|
|
20
|
+
|
|
21
|
+
responses:
|
|
22
|
+
utter_ask_remove_contact_handle:
|
|
23
|
+
- text: What's the handle of the user you want to remove?
|
|
24
|
+
utter_contact_not_in_list:
|
|
25
|
+
- text: "That contact is not in your list."
|
|
26
|
+
utter_remove_contact_error:
|
|
27
|
+
- text: "Something went wrong, please try again."
|
|
28
|
+
utter_remove_contact_success:
|
|
29
|
+
- text: "Removed {remove_contact_handle}({remove_contact_name}) from your contacts."
|
|
30
|
+
utter_ask_remove_contact_confirmation:
|
|
31
|
+
- buttons:
|
|
32
|
+
- payload: "/SetSlots(remove_contact_confirmation=true)"
|
|
33
|
+
title: Yes
|
|
34
|
+
- payload: "/SetSlots(remove_contact_confirmation=false)"
|
|
35
|
+
title: No, cancel the removal
|
|
36
|
+
text: "Should I remove {remove_contact_handle} from your contact list?"
|
|
37
|
+
utter_remove_contact_cancelled:
|
|
38
|
+
- text: "Okay, I am cancelling this removal of a contact."
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
test_cases:
|
|
2
|
+
- test_case: user cancels adding a contact during the correction
|
|
3
|
+
steps:
|
|
4
|
+
- user: I want to add a new contact
|
|
5
|
+
- utter: utter_ask_add_contact_handle
|
|
6
|
+
- user: it's @foo
|
|
7
|
+
- slot_was_set:
|
|
8
|
+
- add_contact_handle: "@foo"
|
|
9
|
+
- utter: utter_ask_add_contact_name
|
|
10
|
+
- user: Wait, no, the handle is @bar
|
|
11
|
+
- slot_was_set:
|
|
12
|
+
- add_contact_handle: "@bar"
|
|
13
|
+
- utter: utter_corrected_previous_input
|
|
14
|
+
- utter: utter_ask_add_contact_name
|
|
15
|
+
- user: I changed my mind, stop.
|
|
16
|
+
- utter: utter_flow_cancelled_rasa
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
test_cases:
|
|
2
|
+
- test_case: user corrects the handle
|
|
3
|
+
steps:
|
|
4
|
+
- user: I want to add a new contact
|
|
5
|
+
- utter: utter_ask_add_contact_handle
|
|
6
|
+
- user: it's @foo
|
|
7
|
+
- slot_was_set:
|
|
8
|
+
- add_contact_handle: "@foo"
|
|
9
|
+
- utter: utter_ask_add_contact_name
|
|
10
|
+
- user: Wait, no, the handle is @bar
|
|
11
|
+
- slot_was_set:
|
|
12
|
+
- add_contact_handle: "@bar"
|
|
13
|
+
- utter: utter_corrected_previous_input
|
|
14
|
+
- utter: utter_ask_add_contact_name
|
|
15
|
+
- user: It's Barbar
|
|
16
|
+
- slot_was_set:
|
|
17
|
+
- add_contact_name: "Barbar"
|
|
18
|
+
- utter: utter_ask_add_contact_confirmation
|
|
19
|
+
- user: Yes
|
|
20
|
+
- utter: utter_contact_added
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
test_cases:
|
|
2
|
+
- test_case: user corrects the handle
|
|
3
|
+
steps:
|
|
4
|
+
- user: I want to add a new contact
|
|
5
|
+
- utter: utter_ask_add_contact_handle
|
|
6
|
+
- user: it's @jane
|
|
7
|
+
- slot_was_set:
|
|
8
|
+
- add_contact_handle: "@jane"
|
|
9
|
+
- utter: utter_ask_add_contact_name
|
|
10
|
+
- user: It's Jane Bar
|
|
11
|
+
- slot_was_set:
|
|
12
|
+
- add_contact_name: "Jane Bar"
|
|
13
|
+
- user: Wait, it's Jane Foo
|
|
14
|
+
- slot_was_set:
|
|
15
|
+
- add_contact_name: "Jane Foo"
|
|
16
|
+
- utter: utter_corrected_previous_input
|
|
17
|
+
- utter: utter_ask_add_contact_confirmation
|
|
18
|
+
- user: Yes
|
|
19
|
+
- utter: utter_contact_added
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
test_cases:
|
|
2
|
+
- test_case: user adds a contact to their list
|
|
3
|
+
steps:
|
|
4
|
+
- user: I want to add someone to my contact list
|
|
5
|
+
- utter: utter_ask_add_contact_handle
|
|
6
|
+
- user: it's @barts
|
|
7
|
+
- slot_was_set:
|
|
8
|
+
- add_contact_handle: "@barts"
|
|
9
|
+
- utter: utter_ask_add_contact_name
|
|
10
|
+
- user: just Bart
|
|
11
|
+
- slot_was_set:
|
|
12
|
+
- add_contact_name: Bart
|
|
13
|
+
- utter: utter_ask_add_contact_confirmation
|
|
14
|
+
- user: Yes
|
|
15
|
+
- utter: utter_contact_added
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
test_cases:
|
|
2
|
+
- test_case: user removes a contact
|
|
3
|
+
steps:
|
|
4
|
+
- user: I want to remove contact
|
|
5
|
+
- utter: utter_ask_remove_contact_handle
|
|
6
|
+
- user: "@MaryLu"
|
|
7
|
+
- slot_was_set:
|
|
8
|
+
- remove_contact_handle: "@MaryLu"
|
|
9
|
+
- utter: utter_ask_remove_contact_confirmation
|
|
10
|
+
- user: Yes
|
|
11
|
+
- utter: utter_remove_contact_success
|