rasa-pro 3.8.18__py3-none-any.whl → 3.9.15__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.

Files changed (278) hide show
  1. README.md +6 -42
  2. rasa/__main__.py +14 -9
  3. rasa/anonymization/anonymization_pipeline.py +0 -1
  4. rasa/anonymization/anonymization_rule_executor.py +3 -3
  5. rasa/anonymization/utils.py +4 -3
  6. rasa/api.py +2 -2
  7. rasa/cli/arguments/default_arguments.py +1 -1
  8. rasa/cli/arguments/run.py +2 -2
  9. rasa/cli/arguments/test.py +1 -1
  10. rasa/cli/arguments/train.py +10 -10
  11. rasa/cli/e2e_test.py +27 -7
  12. rasa/cli/export.py +0 -1
  13. rasa/cli/license.py +3 -3
  14. rasa/cli/project_templates/calm/actions/action_template.py +1 -1
  15. rasa/cli/project_templates/calm/config.yml +1 -1
  16. rasa/cli/project_templates/calm/credentials.yml +1 -1
  17. rasa/cli/project_templates/calm/data/flows/add_contact.yml +1 -1
  18. rasa/cli/project_templates/calm/data/flows/remove_contact.yml +1 -1
  19. rasa/cli/project_templates/calm/domain/add_contact.yml +8 -2
  20. rasa/cli/project_templates/calm/domain/list_contacts.yml +3 -0
  21. rasa/cli/project_templates/calm/domain/remove_contact.yml +9 -2
  22. rasa/cli/project_templates/calm/domain/shared.yml +5 -0
  23. rasa/cli/project_templates/calm/endpoints.yml +4 -4
  24. rasa/cli/project_templates/default/actions/actions.py +1 -1
  25. rasa/cli/project_templates/default/config.yml +5 -5
  26. rasa/cli/project_templates/default/credentials.yml +1 -1
  27. rasa/cli/project_templates/default/endpoints.yml +4 -4
  28. rasa/cli/project_templates/default/tests/test_stories.yml +1 -1
  29. rasa/cli/project_templates/tutorial/config.yml +1 -1
  30. rasa/cli/project_templates/tutorial/credentials.yml +1 -1
  31. rasa/cli/project_templates/tutorial/data/patterns.yml +6 -0
  32. rasa/cli/project_templates/tutorial/domain.yml +4 -0
  33. rasa/cli/project_templates/tutorial/endpoints.yml +6 -6
  34. rasa/cli/run.py +0 -1
  35. rasa/cli/scaffold.py +3 -2
  36. rasa/cli/studio/download.py +11 -0
  37. rasa/cli/studio/studio.py +180 -24
  38. rasa/cli/studio/upload.py +0 -8
  39. rasa/cli/telemetry.py +18 -6
  40. rasa/cli/utils.py +21 -10
  41. rasa/cli/x.py +3 -2
  42. rasa/constants.py +1 -1
  43. rasa/core/actions/action.py +90 -315
  44. rasa/core/actions/action_exceptions.py +24 -0
  45. rasa/core/actions/constants.py +3 -0
  46. rasa/core/actions/custom_action_executor.py +188 -0
  47. rasa/core/actions/forms.py +11 -7
  48. rasa/core/actions/grpc_custom_action_executor.py +251 -0
  49. rasa/core/actions/http_custom_action_executor.py +140 -0
  50. rasa/core/actions/loops.py +3 -0
  51. rasa/core/actions/two_stage_fallback.py +1 -1
  52. rasa/core/agent.py +2 -4
  53. rasa/core/brokers/pika.py +1 -2
  54. rasa/core/channels/audiocodes.py +1 -1
  55. rasa/core/channels/botframework.py +0 -1
  56. rasa/core/channels/callback.py +0 -1
  57. rasa/core/channels/console.py +6 -8
  58. rasa/core/channels/development_inspector.py +1 -1
  59. rasa/core/channels/facebook.py +0 -3
  60. rasa/core/channels/hangouts.py +0 -6
  61. rasa/core/channels/inspector/dist/assets/{arc-5623b6dc.js → arc-b6e548fe.js} +1 -1
  62. rasa/core/channels/inspector/dist/assets/{c4Diagram-d0fbc5ce-685c106a.js → c4Diagram-d0fbc5ce-fa03ac9e.js} +1 -1
  63. rasa/core/channels/inspector/dist/assets/{classDiagram-936ed81e-8cbed007.js → classDiagram-936ed81e-ee67392a.js} +1 -1
  64. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-c3cb15f1-5889cf12.js → classDiagram-v2-c3cb15f1-9b283fae.js} +1 -1
  65. rasa/core/channels/inspector/dist/assets/{createText-62fc7601-24c249d7.js → createText-62fc7601-8b6fcc2a.js} +1 -1
  66. rasa/core/channels/inspector/dist/assets/{edges-f2ad444c-7dd06a75.js → edges-f2ad444c-22e77f4f.js} +1 -1
  67. rasa/core/channels/inspector/dist/assets/{erDiagram-9d236eb7-62c1e54c.js → erDiagram-9d236eb7-60ffc87f.js} +1 -1
  68. rasa/core/channels/inspector/dist/assets/{flowDb-1972c806-ce49b86f.js → flowDb-1972c806-9dd802e4.js} +1 -1
  69. rasa/core/channels/inspector/dist/assets/{flowDiagram-7ea5b25a-4067e48f.js → flowDiagram-7ea5b25a-5fa1912f.js} +1 -1
  70. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-1844e5a5.js +1 -0
  71. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-abe16c3d-59fe4051.js → flowchart-elk-definition-abe16c3d-622a1fd2.js} +1 -1
  72. rasa/core/channels/inspector/dist/assets/{ganttDiagram-9b5ea136-47e3a43b.js → ganttDiagram-9b5ea136-e285a63a.js} +1 -1
  73. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-99d0ae7c-5a2ac0d9.js → gitGraphDiagram-99d0ae7c-f237bdca.js} +1 -1
  74. rasa/core/channels/inspector/dist/assets/{index-2c4b9a3b-dfb8efc4.js → index-2c4b9a3b-4b03d70e.js} +1 -1
  75. rasa/core/channels/inspector/dist/assets/{index-268a75c0.js → index-a5d3e69d.js} +4 -4
  76. rasa/core/channels/inspector/dist/assets/{infoDiagram-736b4530-b0c470f2.js → infoDiagram-736b4530-72a0fa5f.js} +1 -1
  77. rasa/core/channels/inspector/dist/assets/{journeyDiagram-df861f2b-2edb829a.js → journeyDiagram-df861f2b-82218c41.js} +1 -1
  78. rasa/core/channels/inspector/dist/assets/{layout-b6873d69.js → layout-78cff630.js} +1 -1
  79. rasa/core/channels/inspector/dist/assets/{line-1efc5781.js → line-5038b469.js} +1 -1
  80. rasa/core/channels/inspector/dist/assets/{linear-661e9b94.js → linear-c4fc4098.js} +1 -1
  81. rasa/core/channels/inspector/dist/assets/{mindmap-definition-beec6740-2d2e727f.js → mindmap-definition-beec6740-c33c8ea6.js} +1 -1
  82. rasa/core/channels/inspector/dist/assets/{pieDiagram-dbbf0591-9d3ea93d.js → pieDiagram-dbbf0591-a8d03059.js} +1 -1
  83. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-4d7f4fd6-06a178a2.js → quadrantDiagram-4d7f4fd6-6a0e56b2.js} +1 -1
  84. rasa/core/channels/inspector/dist/assets/{requirementDiagram-6fc4c22a-0bfedffc.js → requirementDiagram-6fc4c22a-2dc7c7bd.js} +1 -1
  85. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-8f13d901-d76d0a04.js → sankeyDiagram-8f13d901-2360fe39.js} +1 -1
  86. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-b655622a-37bb4341.js → sequenceDiagram-b655622a-41b9f9ad.js} +1 -1
  87. rasa/core/channels/inspector/dist/assets/{stateDiagram-59f0c015-f52f7f57.js → stateDiagram-59f0c015-0aad326f.js} +1 -1
  88. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-2b26beab-4a986a20.js → stateDiagram-v2-2b26beab-9847d984.js} +1 -1
  89. rasa/core/channels/inspector/dist/assets/{styles-080da4f6-7dd9ae12.js → styles-080da4f6-564d890e.js} +1 -1
  90. rasa/core/channels/inspector/dist/assets/{styles-3dcbcfbf-46e1ca14.js → styles-3dcbcfbf-38957613.js} +1 -1
  91. rasa/core/channels/inspector/dist/assets/{styles-9c745c82-4a97439a.js → styles-9c745c82-f0fc6921.js} +1 -1
  92. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-4835440b-823917a3.js → svgDrawCommon-4835440b-ef3c5a77.js} +1 -1
  93. rasa/core/channels/inspector/dist/assets/{timeline-definition-5b62e21b-9ea72896.js → timeline-definition-5b62e21b-bf3e91c1.js} +1 -1
  94. rasa/core/channels/inspector/dist/assets/{xychartDiagram-2b33534f-b631a8b6.js → xychartDiagram-2b33534f-4d4026c0.js} +1 -1
  95. rasa/core/channels/inspector/dist/index.html +1 -1
  96. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +10 -0
  97. rasa/core/channels/inspector/src/helpers/formatters.test.ts +4 -7
  98. rasa/core/channels/inspector/src/helpers/formatters.ts +3 -2
  99. rasa/core/channels/rest.py +36 -21
  100. rasa/core/channels/rocketchat.py +0 -1
  101. rasa/core/channels/socketio.py +1 -1
  102. rasa/core/channels/telegram.py +3 -3
  103. rasa/core/channels/webexteams.py +0 -1
  104. rasa/core/concurrent_lock_store.py +1 -1
  105. rasa/core/evaluation/marker_base.py +1 -3
  106. rasa/core/evaluation/marker_stats.py +1 -2
  107. rasa/core/featurizers/single_state_featurizer.py +3 -26
  108. rasa/core/featurizers/tracker_featurizers.py +18 -122
  109. rasa/core/information_retrieval/__init__.py +7 -0
  110. rasa/core/information_retrieval/faiss.py +9 -4
  111. rasa/core/information_retrieval/information_retrieval.py +64 -7
  112. rasa/core/information_retrieval/milvus.py +7 -14
  113. rasa/core/information_retrieval/qdrant.py +8 -15
  114. rasa/core/lock_store.py +0 -1
  115. rasa/core/migrate.py +1 -2
  116. rasa/core/nlg/callback.py +3 -4
  117. rasa/core/policies/enterprise_search_policy.py +86 -22
  118. rasa/core/policies/enterprise_search_prompt_template.jinja2 +4 -41
  119. rasa/core/policies/enterprise_search_prompt_with_citation_template.jinja2 +60 -0
  120. rasa/core/policies/flows/flow_executor.py +104 -2
  121. rasa/core/policies/intentless_policy.py +7 -9
  122. rasa/core/policies/memoization.py +3 -3
  123. rasa/core/policies/policy.py +18 -9
  124. rasa/core/policies/rule_policy.py +8 -11
  125. rasa/core/policies/ted_policy.py +61 -88
  126. rasa/core/policies/unexpected_intent_policy.py +8 -17
  127. rasa/core/processor.py +136 -47
  128. rasa/core/run.py +41 -25
  129. rasa/core/secrets_manager/endpoints.py +2 -2
  130. rasa/core/secrets_manager/vault.py +6 -8
  131. rasa/core/test.py +3 -5
  132. rasa/core/tracker_store.py +49 -14
  133. rasa/core/train.py +1 -3
  134. rasa/core/training/interactive.py +9 -6
  135. rasa/core/utils.py +5 -10
  136. rasa/dialogue_understanding/coexistence/intent_based_router.py +11 -4
  137. rasa/dialogue_understanding/coexistence/llm_based_router.py +2 -3
  138. rasa/dialogue_understanding/commands/__init__.py +4 -0
  139. rasa/dialogue_understanding/commands/can_not_handle_command.py +9 -0
  140. rasa/dialogue_understanding/commands/cancel_flow_command.py +9 -0
  141. rasa/dialogue_understanding/commands/change_flow_command.py +38 -0
  142. rasa/dialogue_understanding/commands/chit_chat_answer_command.py +9 -0
  143. rasa/dialogue_understanding/commands/clarify_command.py +9 -0
  144. rasa/dialogue_understanding/commands/correct_slots_command.py +9 -0
  145. rasa/dialogue_understanding/commands/error_command.py +12 -0
  146. rasa/dialogue_understanding/commands/handle_code_change_command.py +9 -0
  147. rasa/dialogue_understanding/commands/human_handoff_command.py +9 -0
  148. rasa/dialogue_understanding/commands/knowledge_answer_command.py +9 -0
  149. rasa/dialogue_understanding/commands/noop_command.py +9 -0
  150. rasa/dialogue_understanding/commands/set_slot_command.py +38 -3
  151. rasa/dialogue_understanding/commands/skip_question_command.py +9 -0
  152. rasa/dialogue_understanding/commands/start_flow_command.py +9 -0
  153. rasa/dialogue_understanding/generator/__init__.py +16 -1
  154. rasa/dialogue_understanding/generator/command_generator.py +92 -6
  155. rasa/dialogue_understanding/generator/constants.py +18 -0
  156. rasa/dialogue_understanding/generator/flow_retrieval.py +7 -5
  157. rasa/dialogue_understanding/generator/llm_based_command_generator.py +467 -0
  158. rasa/dialogue_understanding/generator/llm_command_generator.py +39 -609
  159. rasa/dialogue_understanding/generator/multi_step/__init__.py +0 -0
  160. rasa/dialogue_understanding/generator/multi_step/fill_slots_prompt.jinja2 +62 -0
  161. rasa/dialogue_understanding/generator/multi_step/handle_flows_prompt.jinja2 +38 -0
  162. rasa/dialogue_understanding/generator/multi_step/multi_step_llm_command_generator.py +827 -0
  163. rasa/dialogue_understanding/generator/nlu_command_adapter.py +69 -8
  164. rasa/dialogue_understanding/generator/single_step/__init__.py +0 -0
  165. rasa/dialogue_understanding/generator/single_step/single_step_llm_command_generator.py +345 -0
  166. rasa/dialogue_understanding/patterns/default_flows_for_patterns.yml +36 -31
  167. rasa/dialogue_understanding/processor/command_processor.py +112 -3
  168. rasa/e2e_test/constants.py +1 -0
  169. rasa/e2e_test/e2e_test_case.py +44 -0
  170. rasa/e2e_test/e2e_test_runner.py +114 -11
  171. rasa/e2e_test/e2e_test_schema.yml +18 -0
  172. rasa/engine/caching.py +0 -1
  173. rasa/engine/graph.py +18 -6
  174. rasa/engine/recipes/config_files/default_config.yml +3 -3
  175. rasa/engine/recipes/default_components.py +1 -1
  176. rasa/engine/recipes/default_recipe.py +4 -5
  177. rasa/engine/recipes/recipe.py +1 -1
  178. rasa/engine/runner/dask.py +3 -9
  179. rasa/engine/storage/local_model_storage.py +0 -2
  180. rasa/engine/validation.py +179 -145
  181. rasa/exceptions.py +2 -2
  182. rasa/graph_components/validators/default_recipe_validator.py +3 -5
  183. rasa/hooks.py +0 -1
  184. rasa/model.py +1 -1
  185. rasa/model_training.py +1 -0
  186. rasa/nlu/classifiers/diet_classifier.py +33 -52
  187. rasa/nlu/classifiers/logistic_regression_classifier.py +9 -22
  188. rasa/nlu/classifiers/sklearn_intent_classifier.py +16 -37
  189. rasa/nlu/extractors/crf_entity_extractor.py +54 -97
  190. rasa/nlu/extractors/duckling_entity_extractor.py +1 -1
  191. rasa/nlu/featurizers/dense_featurizer/convert_featurizer.py +1 -5
  192. rasa/nlu/featurizers/dense_featurizer/lm_featurizer.py +0 -4
  193. rasa/nlu/featurizers/featurizer.py +1 -1
  194. rasa/nlu/featurizers/sparse_featurizer/count_vectors_featurizer.py +18 -49
  195. rasa/nlu/featurizers/sparse_featurizer/lexical_syntactic_featurizer.py +26 -64
  196. rasa/nlu/featurizers/sparse_featurizer/regex_featurizer.py +3 -5
  197. rasa/nlu/persistor.py +68 -26
  198. rasa/nlu/selectors/response_selector.py +7 -10
  199. rasa/nlu/test.py +0 -3
  200. rasa/nlu/utils/hugging_face/registry.py +1 -1
  201. rasa/nlu/utils/spacy_utils.py +1 -3
  202. rasa/server.py +22 -7
  203. rasa/shared/constants.py +12 -1
  204. rasa/shared/core/command_payload_reader.py +109 -0
  205. rasa/shared/core/constants.py +4 -5
  206. rasa/shared/core/domain.py +57 -56
  207. rasa/shared/core/events.py +4 -7
  208. rasa/shared/core/flows/flow.py +9 -0
  209. rasa/shared/core/flows/flows_list.py +12 -0
  210. rasa/shared/core/flows/steps/action.py +7 -2
  211. rasa/shared/core/generator.py +12 -11
  212. rasa/shared/core/slot_mappings.py +315 -24
  213. rasa/shared/core/slots.py +4 -2
  214. rasa/shared/core/trackers.py +32 -14
  215. rasa/shared/core/training_data/loading.py +0 -1
  216. rasa/shared/core/training_data/story_reader/story_reader.py +3 -3
  217. rasa/shared/core/training_data/story_reader/yaml_story_reader.py +11 -11
  218. rasa/shared/core/training_data/story_writer/yaml_story_writer.py +5 -3
  219. rasa/shared/core/training_data/structures.py +1 -1
  220. rasa/shared/core/training_data/visualization.py +1 -1
  221. rasa/shared/data.py +58 -1
  222. rasa/shared/exceptions.py +36 -2
  223. rasa/shared/importers/importer.py +1 -2
  224. rasa/shared/importers/rasa.py +0 -1
  225. rasa/shared/nlu/constants.py +2 -0
  226. rasa/shared/nlu/training_data/entities_parser.py +1 -2
  227. rasa/shared/nlu/training_data/features.py +2 -120
  228. rasa/shared/nlu/training_data/formats/dialogflow.py +3 -2
  229. rasa/shared/nlu/training_data/formats/rasa_yaml.py +3 -5
  230. rasa/shared/nlu/training_data/formats/readerwriter.py +0 -1
  231. rasa/shared/nlu/training_data/message.py +13 -0
  232. rasa/shared/nlu/training_data/training_data.py +0 -2
  233. rasa/shared/providers/openai/session_handler.py +2 -2
  234. rasa/shared/utils/constants.py +3 -0
  235. rasa/shared/utils/io.py +11 -1
  236. rasa/shared/utils/llm.py +1 -2
  237. rasa/shared/utils/pykwalify_extensions.py +1 -0
  238. rasa/shared/utils/schemas/domain.yml +3 -0
  239. rasa/shared/utils/yaml.py +44 -35
  240. rasa/studio/auth.py +26 -10
  241. rasa/studio/constants.py +2 -0
  242. rasa/studio/data_handler.py +114 -107
  243. rasa/studio/download.py +160 -27
  244. rasa/studio/results_logger.py +137 -0
  245. rasa/studio/train.py +6 -7
  246. rasa/studio/upload.py +159 -134
  247. rasa/telemetry.py +188 -34
  248. rasa/tracing/config.py +18 -3
  249. rasa/tracing/constants.py +26 -2
  250. rasa/tracing/instrumentation/attribute_extractors.py +50 -41
  251. rasa/tracing/instrumentation/instrumentation.py +290 -44
  252. rasa/tracing/instrumentation/intentless_policy_instrumentation.py +7 -5
  253. rasa/tracing/instrumentation/metrics.py +109 -21
  254. rasa/tracing/metric_instrument_provider.py +83 -3
  255. rasa/utils/cli.py +2 -1
  256. rasa/utils/common.py +1 -1
  257. rasa/utils/endpoints.py +1 -2
  258. rasa/utils/io.py +72 -6
  259. rasa/utils/licensing.py +246 -31
  260. rasa/utils/ml_utils.py +1 -1
  261. rasa/utils/tensorflow/data_generator.py +1 -1
  262. rasa/utils/tensorflow/environment.py +1 -1
  263. rasa/utils/tensorflow/model_data.py +201 -12
  264. rasa/utils/tensorflow/model_data_utils.py +499 -500
  265. rasa/utils/tensorflow/models.py +5 -6
  266. rasa/utils/tensorflow/rasa_layers.py +15 -15
  267. rasa/utils/train_utils.py +1 -1
  268. rasa/utils/url_tools.py +53 -0
  269. rasa/validator.py +305 -3
  270. rasa/version.py +1 -1
  271. {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/METADATA +25 -61
  272. {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/RECORD +276 -259
  273. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-855bc5b3-85583a23.js +0 -1
  274. rasa/utils/tensorflow/feature_array.py +0 -370
  275. /rasa/dialogue_understanding/generator/{command_prompt_template.jinja2 → single_step/command_prompt_template.jinja2} +0 -0
  276. {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/NOTICE +0 -0
  277. {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/WHEEL +0 -0
  278. {rasa_pro-3.8.18.dist-info → rasa_pro-3.9.15.dist-info}/entry_points.txt +0 -0
README.md CHANGED
@@ -10,11 +10,11 @@
10
10
 
11
11
  <hr />
12
12
 
13
- <img align="right" height="255" src="https://www.rasa.com/assets/img/sara/sara-open-source-2.0.png" alt="An image of Sara, the Rasa mascot bird, holding a flag that reads Open Source with one wing, and a wrench in the other" title="Rasa Open Source">
13
+ <img align="right" height="255" src="https://www.rasa.com/assets/img/sara/sara-open-source-2.0.png" alt="An image of Sara, the Rasa mascot bird, holding a flag that reads Open Source with one wing, and a wrench in the other" title="Rasa Pro">
14
14
 
15
15
  Rasa Pro is an open core product that extends Rasa Open Source. With over 50 million downloads, Rasa Open Source is the most popular open source framework for building chat and voice-based AI assistants.
16
16
 
17
- Rasa Pro extends Rasa Open Source with CALM, a generative AI-native approach to developing assistants, combined with enterprise-ready analytics, security, and observability capabilities. A paid license is required to run Rasa Pro, but all Rasa Pro code is visible to end users and can be customized as needed.
17
+ Rasa Pro introduces CALM, a generative AI-native approach to developing assistants, combined with enterprise-ready analytics, security, and observability capabilities. A paid license is required to run Rasa Pro, but all Rasa Pro code is visible to end users and can be customized as needed.
18
18
 
19
19
  Rasa Pro is the pro-code component of our enterprise solution, Rasa Platform, for implementing resilient and trustworthy AI assistants at scale. Rasa Studio complements Rasa Pro with a low-code user interface, enabling anyone on your team to create and improve your assistant.
20
20
 
@@ -212,8 +212,8 @@ The Docker image is available on your local machine as `rasa-private-dev`.
212
212
 
213
213
  ### Code Style
214
214
 
215
- To ensure a standardized code style we use the formatter [black](https://github.com/ambv/black).
216
- To ensure our type annotations are correct we use the type checker [pytype](https://github.com/google/pytype).
215
+ To ensure a standardized code style we use the [ruff](https://docs.astral.sh/ruff/formatter/) formatter.
216
+ To ensure our type annotations are correct we use the type checker [mypy](https://mypy.readthedocs.io/en/stable/).
217
217
  If your code is not formatted properly or doesn't type check, GitHub will fail to build.
218
218
 
219
219
  #### Formatting
@@ -222,7 +222,7 @@ If you want to automatically format your code on every commit, you can use [pre-
222
222
  Just install it via `pip install pre-commit` and execute `pre-commit install` in the root folder.
223
223
  This will add a hook to the repository, which reformats files on every commit.
224
224
 
225
- If you want to set it up manually, install black via `poetry install`.
225
+ If you want to set it up manually, install `ruff` via `poetry install`.
226
226
  To reformat files execute
227
227
  ```
228
228
  make formatter
@@ -236,39 +236,6 @@ To check the types execute
236
236
  make types
237
237
  ```
238
238
 
239
- ### Backporting
240
-
241
- In order to port changes to `main` and across release branches, we use the `backport` workflow located at
242
- the `.github/workflows/backport.yml` path.
243
- This workflow is triggered by the `backport-to-<release-branch>` label applied to a PR, for example `backport-to-3.8.x`.
244
- Current available target branches are `main` and maintained release branches.
245
-
246
- When a PR gets labelled `backport-to-<release-branch>`, a PR is opened by the `backport-github-action` as soon as the
247
- source PR gets closed (by merging). If you want to close the PR without merging changes, make sure to remove the `backport-to-<release-branch>` label.
248
-
249
- The PR author which the action assigns to the backporting PR has to resolve any conflicts before approving and merging.
250
- Release PRs should also be labelled with `backport-to-main` to backport the `CHANGELOG.md` updates to `main`.
251
- Backporting version updates should be accepted to the `main` branch from the latest release branch only.
252
-
253
- Here are some guidelines to follow when backporting changes and resolving conflicts:
254
-
255
- a) for conflicts in `version.py`: accept only the version from the latest release branch. Do not merge version changes
256
- from earlier release branches into `main` because this could cause issues when trying to make the next minor release.
257
-
258
- b) for conflicts in `pyproject.toml`: if related to the `rasa-pro` version, accept only the latest release branch;
259
- if related to other dependencies, accept `main` or whichever is the higher upgrade (main usually has the updated
260
- dependencies because we only do housekeeping on `main`, apart from vulnerability updates). Be mindful of dependencies that
261
- are removed from `main` but still exist in former release branches (for example `langchain`).
262
-
263
- c) for conflicts in `poetry.lock`: accept changes which were already present on the target branch, then run
264
- `poetry lock --no-update` so that the lock file contains your changes from `pyproject.toml` too.
265
-
266
- d) for conflicts in `CHANGELOG.md`: Manually place the changelog in their allocated section (e.g. 3.8.10 will go under the
267
- 3.8 section with the other releases, rather than go at the top of the file)
268
-
269
- If the backporting workflow fails, you are encouraged to cherry-pick the commits manually and create a PR to
270
- the target branch. Alternatively, you can install the backporting CLI tool as described [here](https://github.com/sorenlouv/backport?tab=readme-ov-file#install).
271
-
272
239
  ## Releases
273
240
  Rasa has implemented robust policies governing version naming, as well as release pace for major, minor, and patch releases.
274
241
 
@@ -351,12 +318,9 @@ Releasing a new version is quite simple, as the packages are build and distribut
351
318
  9. If however an error occurs in the build, then we should see a failure message automatically posted in the company's Slack (`dev-tribe` channel) like this [one](https://rasa-hq.slack.com/archives/C01M5TAHDHA/p1701444735622919)
352
319
  (In this case do the following checks):
353
320
  - Check the workflows in [Github Actions](https://github.com/RasaHQ/rasa-private/actions) and make sure that the merged PR of the current release is completed successfully. To easily find your PR you can use the filters `event: push` and `branch: <version number>` (example on release 2.4 you can see [here](https://github.com/RasaHQ/rasa/actions/runs/643344876))
354
- - If the workflow is not completed, then try to re-run the workflow in case that solves the problem
321
+ - If the workflow is not completed, then try to re run the workflow in case that solves the problem
355
322
  - If the problem persists, check also the log files and try to find the root cause of the issue
356
323
  - If you still cannot resolve the error, contact the infrastructure team by providing any helpful information from your investigation
357
- 10. If the release is successful, add the newly created release branch to the backporting configuration in the `.backportrc.json` file to
358
- the `targetBranchesChoices` list. This is necessary for the backporting workflow to work correctly with new release branches.
359
-
360
324
 
361
325
  ### Cutting a Patch release
362
326
 
rasa/__main__.py CHANGED
@@ -30,6 +30,7 @@ from rasa.cli.arguments.default_arguments import add_logging_options
30
30
  from rasa.cli.utils import (
31
31
  parse_last_positional_argument_as_model_path,
32
32
  warn_if_rasa_plus_package_installed,
33
+ check_if_studio_command,
33
34
  )
34
35
  from rasa.plugin import plugin_manager
35
36
  from rasa.shared.exceptions import RasaException
@@ -115,18 +116,22 @@ def main() -> None:
115
116
  if hasattr(cmdline_arguments, "func"):
116
117
  rasa.utils.io.configure_colored_logging(log_level)
117
118
 
118
- result = plugin_manager().hook.configure_commandline(
119
- cmdline_arguments=cmdline_arguments
120
- )
121
- endpoints_file = result[0] if result else None
119
+ is_studio_command = check_if_studio_command()
120
+
121
+ if not is_studio_command:
122
+ result = plugin_manager().hook.configure_commandline(
123
+ cmdline_arguments=cmdline_arguments
124
+ )
125
+ endpoints_file = result[0] if result else None
122
126
 
123
127
  rasa.telemetry.initialize_telemetry()
124
128
  rasa.telemetry.initialize_error_reporting()
125
- plugin_manager().hook.init_telemetry(endpoints_file=endpoints_file)
126
- plugin_manager().hook.init_managers(endpoints_file=endpoints_file)
127
- plugin_manager().hook.init_anonymization_pipeline(
128
- endpoints_file=endpoints_file
129
- )
129
+ if not is_studio_command:
130
+ plugin_manager().hook.init_telemetry(endpoints_file=endpoints_file)
131
+ plugin_manager().hook.init_managers(endpoints_file=endpoints_file)
132
+ plugin_manager().hook.init_anonymization_pipeline(
133
+ endpoints_file=endpoints_file
134
+ )
130
135
  # configure structlog
131
136
  configure_structlog(log_level)
132
137
 
@@ -276,7 +276,6 @@ def _load_orchestrators(
276
276
  continue
277
277
 
278
278
  if rule_list.id == topic.get("anonymization_rules"):
279
-
280
279
  event_broker = create_event_broker(topic_name, event_broker_config)
281
280
 
282
281
  orchestrators.append(
@@ -87,19 +87,19 @@ class AnonymizationAnalyzer(metaclass=Singleton):
87
87
  if anonymization_rule_list.model_provider == "transformers":
88
88
  nlp_engine = TransformersNlpEngine(
89
89
  models={
90
- anonymization_rule_list.language: anonymization_rule_list.models # noqa: E501
90
+ anonymization_rule_list.language: anonymization_rule_list.models
91
91
  },
92
92
  )
93
93
  elif anonymization_rule_list.model_provider == "stanza":
94
94
  nlp_engine = StanzaNlpEngine(
95
95
  models={
96
- anonymization_rule_list.language: anonymization_rule_list.models # noqa: E501
96
+ anonymization_rule_list.language: anonymization_rule_list.models
97
97
  },
98
98
  )
99
99
  else:
100
100
  nlp_engine = SpacyNlpEngine(
101
101
  models={
102
- anonymization_rule_list.language: anonymization_rule_list.models # noqa: E501
102
+ anonymization_rule_list.language: anonymization_rule_list.models
103
103
  },
104
104
  )
105
105
 
@@ -30,8 +30,9 @@ def read_endpoint_config(
30
30
  return content
31
31
  except FileNotFoundError:
32
32
  logger.error(
33
- "Failed to read configuration "
34
- "from {}. No such file.".format(os.path.abspath(filename)),
33
+ "Failed to read configuration from {}. No such file.".format(
34
+ os.path.abspath(filename)
35
+ ),
35
36
  )
36
37
  return None
37
38
 
@@ -96,7 +97,7 @@ def validate_anonymization_yaml(yaml_content: Dict[Text, Any]) -> None:
96
97
 
97
98
  If the yaml_content is not in the right format, an exception will be raised.
98
99
  """
99
- schema = read_yaml_file(SCHEMA_FILE, reader_type=["safe", "rt"])
100
+ schema = read_yaml_file(SCHEMA_FILE, reader_type=("safe", "rt"))
100
101
  try:
101
102
  validate_yaml_content_using_schema(yaml_content, schema)
102
103
  except YamlException as exception:
rasa/api.py CHANGED
@@ -142,5 +142,5 @@ def test(
142
142
  if additional_arguments is None:
143
143
  additional_arguments = {}
144
144
 
145
- test_core(model, stories, output, additional_arguments) # type: ignore[unused-coroutine] # noqa: E501
146
- test_nlu(model, nlu_data, output, additional_arguments) # type: ignore[unused-coroutine] # noqa: E501
145
+ test_core(model, stories, output, additional_arguments) # type: ignore[unused-coroutine]
146
+ test_nlu(model, nlu_data, output, additional_arguments) # type: ignore[unused-coroutine]
@@ -73,7 +73,7 @@ def add_config_param(
73
73
  "--config",
74
74
  type=str,
75
75
  default=default,
76
- help="The policy and NLU pipeline configuration of your bot.",
76
+ help="The policy and pipeline configuration of your bot.",
77
77
  )
78
78
 
79
79
 
rasa/cli/arguments/run.py CHANGED
@@ -28,7 +28,7 @@ def set_run_action_arguments(parser: argparse.ArgumentParser) -> None:
28
28
 
29
29
 
30
30
  def add_interface_argument(
31
- parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup]
31
+ parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup],
32
32
  ) -> None:
33
33
  """Binds the RASA process to a network interface."""
34
34
  parser.add_argument(
@@ -42,7 +42,7 @@ def add_interface_argument(
42
42
 
43
43
  # noinspection PyProtectedMember
44
44
  def add_port_argument(
45
- parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup]
45
+ parser: Union[argparse.ArgumentParser, argparse._ArgumentGroup],
46
46
  ) -> None:
47
47
  """Add an argument for port."""
48
48
  parser.add_argument(
@@ -96,7 +96,7 @@ def add_test_core_argument_group(
96
96
 
97
97
 
98
98
  def add_test_nlu_argument_group(
99
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
99
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
100
100
  ) -> None:
101
101
  add_nlu_data_param(parser, help_text="File or folder containing your NLU data.")
102
102
 
@@ -75,7 +75,7 @@ def set_train_nlu_arguments(parser: argparse.ArgumentParser) -> None:
75
75
 
76
76
 
77
77
  def add_force_param(
78
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
78
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
79
79
  ) -> None:
80
80
  """Specifies if the model should be trained from scratch."""
81
81
  parser.add_argument(
@@ -86,7 +86,7 @@ def add_force_param(
86
86
 
87
87
 
88
88
  def add_data_param(
89
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
89
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
90
90
  ) -> None:
91
91
  """Specifies path to training data."""
92
92
  parser.add_argument(
@@ -110,7 +110,7 @@ def _add_core_config_param(parser: argparse.ArgumentParser) -> None:
110
110
 
111
111
 
112
112
  def _add_compare_params(
113
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
113
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
114
114
  ) -> None:
115
115
  parser.add_argument(
116
116
  "--percentages",
@@ -125,7 +125,7 @@ def _add_compare_params(
125
125
 
126
126
 
127
127
  def add_dry_run_param(
128
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
128
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
129
129
  ) -> None:
130
130
  """Adds `--dry-run` argument to a specified `parser`.
131
131
 
@@ -149,7 +149,7 @@ def add_dry_run_param(
149
149
 
150
150
 
151
151
  def add_validate_before_train(
152
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
152
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
153
153
  ) -> None:
154
154
  """Adds parameters for validating the domain and data files before training.
155
155
 
@@ -180,7 +180,7 @@ def add_validate_before_train(
180
180
 
181
181
 
182
182
  def add_augmentation_param(
183
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
183
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
184
184
  ) -> None:
185
185
  """Sets the augmentation factor for the Core training.
186
186
 
@@ -196,7 +196,7 @@ def add_augmentation_param(
196
196
 
197
197
 
198
198
  def add_debug_plots_param(
199
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
199
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
200
200
  ) -> None:
201
201
  """Specifies if conversation flow should be visualized."""
202
202
  parser.add_argument(
@@ -210,7 +210,7 @@ def add_debug_plots_param(
210
210
 
211
211
 
212
212
  def _add_num_threads_param(
213
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
213
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
214
214
  ) -> None:
215
215
  parser.add_argument(
216
216
  "--num-threads",
@@ -229,7 +229,7 @@ def _add_model_name_param(parser: argparse.ArgumentParser) -> None:
229
229
 
230
230
 
231
231
  def add_persist_nlu_data_param(
232
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
232
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
233
233
  ) -> None:
234
234
  """Adds parameters for persisting the NLU training data with the model."""
235
235
  parser.add_argument(
@@ -240,7 +240,7 @@ def add_persist_nlu_data_param(
240
240
 
241
241
 
242
242
  def add_finetune_params(
243
- parser: Union[argparse.ArgumentParser, argparse._ActionsContainer]
243
+ parser: Union[argparse.ArgumentParser, argparse._ActionsContainer],
244
244
  ) -> None:
245
245
  """Adds parameters for model finetuning."""
246
246
  parser.add_argument(
rasa/cli/e2e_test.py CHANGED
@@ -22,7 +22,14 @@ from rasa.exceptions import RasaException
22
22
  from rasa.shared.constants import DEFAULT_ENDPOINTS_PATH, DEFAULT_MODELS_PATH
23
23
 
24
24
  from rasa.e2e_test.constants import SCHEMA_FILE_PATH, KEY_TEST_CASE
25
- from rasa.e2e_test.e2e_test_case import KEY_FIXTURES, Fixture, TestCase
25
+ from rasa.e2e_test.e2e_test_case import (
26
+ KEY_FIXTURES,
27
+ KEY_METADATA,
28
+ Fixture,
29
+ Metadata,
30
+ TestCase,
31
+ TestSuite,
32
+ )
26
33
  from rasa.e2e_test.e2e_test_result import TestResult
27
34
  from rasa.e2e_test.e2e_test_runner import E2ETestRunner
28
35
  import rasa.utils.io
@@ -194,15 +201,14 @@ def validate_test_case(test_case_name: Text, input_test_cases: List[TestCase]) -
194
201
  sys.exit(1)
195
202
 
196
203
 
197
- def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
204
+ def read_test_cases(path: Text) -> TestSuite:
198
205
  """Read test cases from the given path.
199
206
 
200
207
  Args:
201
208
  path: Path to the file or folder containing test cases.
202
209
 
203
210
  Returns:
204
- Tuple consisting of the list of all test cases and the
205
- list of all global fixtures found in the file or folder.
211
+ TestSuite.
206
212
  """
207
213
  path, test_case_name = extract_test_case_from_path(path)
208
214
  validate_path_to_test_cases(path)
@@ -212,6 +218,7 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
212
218
 
213
219
  input_test_cases = []
214
220
  fixtures: Dict[Text, Fixture] = {}
221
+ metadata: Dict[Text, Metadata] = {}
215
222
 
216
223
  for test_file in test_files:
217
224
  test_file_content = parse_raw_yaml(Path(test_file).read_text())
@@ -233,6 +240,7 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
233
240
 
234
241
  input_test_cases.extend(test_cases)
235
242
  fixtures_content = test_file_content.get(KEY_FIXTURES) or []
243
+ metadata_contents = test_file_content.get(KEY_METADATA) or []
236
244
  for fixture in fixtures_content:
237
245
  fixture_obj = Fixture.from_dict(fixture_dict=fixture)
238
246
 
@@ -240,8 +248,15 @@ def read_test_cases(path: Text) -> Tuple[List[TestCase], List[Fixture]]:
240
248
  if fixtures.get(fixture_obj.name) is None:
241
249
  fixtures[fixture_obj.name] = fixture_obj
242
250
 
251
+ for metadata_content in metadata_contents:
252
+ metadata_obj = Metadata.from_dict(metadata_dict=metadata_content)
253
+
254
+ # avoid adding duplicates from across multiple files
255
+ if metadata.get(metadata_obj.name) is None:
256
+ metadata[metadata_obj.name] = metadata_obj
257
+
243
258
  validate_test_case(test_case_name, input_test_cases)
244
- return input_test_cases, list(fixtures.values())
259
+ return TestSuite(input_test_cases, list(fixtures.values()), list(metadata.values()))
245
260
 
246
261
 
247
262
  def execute_e2e_tests(args: argparse.Namespace) -> None:
@@ -269,7 +284,7 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
269
284
  args, "path-to-test-cases", DEFAULT_E2E_INPUT_TESTS_PATH
270
285
  )
271
286
 
272
- input_test_cases, input_fixtures = read_test_cases(path_to_test_cases)
287
+ test_suite = read_test_cases(path_to_test_cases)
273
288
 
274
289
  try:
275
290
  test_runner = E2ETestRunner(
@@ -283,7 +298,12 @@ def execute_e2e_tests(args: argparse.Namespace) -> None:
283
298
  sys.exit(1)
284
299
 
285
300
  results = asyncio.run(
286
- test_runner.run_tests(input_test_cases, input_fixtures, args.fail_fast)
301
+ test_runner.run_tests(
302
+ test_suite.test_cases,
303
+ test_suite.fixtures,
304
+ args.fail_fast,
305
+ input_metadata=test_suite.metadata,
306
+ )
287
307
  )
288
308
 
289
309
  if args.e2e_results is not None:
rasa/cli/export.py CHANGED
@@ -177,7 +177,6 @@ def export_trackers(args: argparse.Namespace) -> None:
177
177
 
178
178
 
179
179
  async def _export_trackers(args: argparse.Namespace) -> None:
180
-
181
180
  _assert_max_timestamp_is_greater_than_min_timestamp(args)
182
181
 
183
182
  endpoints = rasa.core.utils.read_endpoints_from_path(args.endpoints)
rasa/cli/license.py CHANGED
@@ -28,9 +28,9 @@ def display_license_information(_: argparse.Namespace) -> None:
28
28
  """Display licensing information to stdout."""
29
29
  rasa.shared.utils.cli.print_info(
30
30
  "By installing and using this software, you agree to be "
31
- "bound by the terms and conditions of the End-User License Agreement "
32
- "(EULA) available at https://rasa.com/eula. "
33
- "Please review the EULA carefully before proceeding.\n\n"
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
34
  "Rasa Pro relies on several 3rd-party dependencies. "
35
35
  "The ones below require a license disclorure:\n",
36
36
  PSYCOPG2_LICENSE_DISCLOSURE,
@@ -2,7 +2,7 @@
2
2
  # custom Python code.
3
3
  #
4
4
  # See this guide on how to implement these action:
5
- # https://rasa.com/docs/rasa/custom-actions
5
+ # https://rasa.com/docs/rasa-pro/concepts/custom-actions
6
6
 
7
7
 
8
8
  # This is a simple example for a custom action which utters "Hello World!"
@@ -1,7 +1,7 @@
1
1
  recipe: default.v1
2
2
  language: en
3
3
  pipeline:
4
- - name: LLMCommandGenerator
4
+ - name: SingleStepLLMCommandGenerator
5
5
  llm:
6
6
  model_name: gpt-4
7
7
  request_timeout: 7
@@ -1,6 +1,6 @@
1
1
  # This file contains the credentials for the voice & chat platforms
2
2
  # which your bot is using.
3
- # https://rasa.com/docs/rasa/messaging-and-voice-channels
3
+ # https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
4
4
 
5
5
  rest:
6
6
  # # you don't need to provide anything here - this channel doesn't
@@ -10,7 +10,7 @@ flows:
10
10
  - collect: "add_contact_confirmation"
11
11
  ask_before_filling: true
12
12
  next:
13
- - if: not slots.add_contact_confirmation
13
+ - if: "slots.add_contact_confirmation is not true"
14
14
  then:
15
15
  - action: utter_add_contact_cancelled
16
16
  next: END
@@ -8,7 +8,7 @@ flows:
8
8
  - collect: "remove_contact_confirmation"
9
9
  ask_before_filling: true
10
10
  next:
11
- - if: "not slots.remove_contact_confirmation"
11
+ - if: "slots.remove_contact_confirmation is not true"
12
12
  then:
13
13
  - action: utter_remove_contact_cancelled
14
14
  next: END
@@ -6,18 +6,24 @@ actions:
6
6
  slots:
7
7
  add_contact_confirmation:
8
8
  type: bool
9
+ mappings:
10
+ - type: from_llm
9
11
  add_contact_name:
10
12
  type: text
13
+ mappings:
14
+ - type: from_llm
11
15
  add_contact_handle:
12
16
  type: text
17
+ mappings:
18
+ - type: from_llm
13
19
 
14
20
  responses:
15
21
  utter_ask_add_contact_confirmation:
16
22
  - text: Do you want to add {add_contact_name}({add_contact_handle}) to your contacts?
17
23
  buttons:
18
- - payload: "yes"
24
+ - payload: "/SetSlots(add_contact_confirmation=true)"
19
25
  title: Yes
20
- - payload: "no"
26
+ - payload: "/SetSlots(add_contact_confirmation=false)"
21
27
  title: No, cancel
22
28
  utter_ask_add_contact_handle:
23
29
  - text: What's the handle of the user you want to add?
@@ -6,6 +6,9 @@ actions:
6
6
  slots:
7
7
  contacts_list:
8
8
  type: text
9
+ mappings:
10
+ - type: custom
11
+ action: list_contacts
9
12
 
10
13
  responses:
11
14
  utter_no_contacts:
@@ -6,10 +6,17 @@ actions:
6
6
  slots:
7
7
  remove_contact_name:
8
8
  type: text
9
+ mappings:
10
+ - type: custom
11
+ action: remove_contact
9
12
  remove_contact_handle:
10
13
  type: text
14
+ mappings:
15
+ - type: from_llm
11
16
  remove_contact_confirmation:
12
17
  type: text
18
+ mappings:
19
+ - type: from_llm
13
20
 
14
21
  responses:
15
22
  utter_ask_remove_contact_handle:
@@ -22,9 +29,9 @@ responses:
22
29
  - text: "Removed {remove_contact_handle}({remove_contact_name}) from your contacts."
23
30
  utter_ask_remove_contact_confirmation:
24
31
  - buttons:
25
- - payload: "yes"
32
+ - payload: "/SetSlots(remove_contact_confirmation=true)"
26
33
  title: Yes
27
- - payload: "false"
34
+ - payload: "/SetSlots(remove_contact_confirmation=false)"
28
35
  title: No, cancel the removal
29
36
  text: "Should I remove {remove_contact_handle} from your contact list?"
30
37
  utter_remove_contact_cancelled:
@@ -3,3 +3,8 @@ version: "3.1"
3
3
  slots:
4
4
  return_value:
5
5
  type: any
6
+ mappings:
7
+ - type: custom
8
+ action: add_contact
9
+ - type: custom
10
+ action: remove_contact
@@ -1,21 +1,21 @@
1
1
  # This file contains the different endpoints your bot can use.
2
2
 
3
3
  # Server where the models are pulled from.
4
- # https://rasa.com/docs/rasa/model-storage#fetching-models-from-a-server
4
+ # https://rasa.com/docs/rasa-pro/production/model-storage#fetching-models-from-a-server
5
5
 
6
6
  #models:
7
7
  # url: http://my-server.com/models/default_core@latest
8
8
  # wait_time_between_pulls: 10 # [optional](default: 100)
9
9
 
10
10
  # Server which runs your custom actions.
11
- # https://rasa.com/docs/rasa/custom-actions
11
+ # https://rasa.com/docs/rasa-pro/concepts/custom-actions
12
12
 
13
13
  action_endpoint:
14
14
  url: "http://localhost:5055/webhook"
15
15
 
16
16
  # Tracker store which is used to store the conversations.
17
17
  # By default the conversations are stored in memory.
18
- # https://rasa.com/docs/rasa/tracker-stores
18
+ # https://rasa.com/docs/rasa-pro/production/tracker-stores
19
19
 
20
20
  #tracker_store:
21
21
  # type: redis
@@ -33,7 +33,7 @@ action_endpoint:
33
33
  # password: <password used for authentication>
34
34
 
35
35
  # Event broker which all conversation events should be streamed to.
36
- # https://rasa.com/docs/rasa/event-brokers
36
+ # https://rasa.com/docs/rasa-pro/production/event-brokers
37
37
 
38
38
  #event_broker:
39
39
  # url: localhost
@@ -2,7 +2,7 @@
2
2
  # custom Python code.
3
3
  #
4
4
  # See this guide on how to implement these action:
5
- # https://rasa.com/docs/rasa/custom-actions
5
+ # https://rasa.com/docs/rasa-pro/concepts/custom-actions
6
6
 
7
7
 
8
8
  # This is a simple example for a custom action which utters "Hello World!"
@@ -1,5 +1,5 @@
1
1
  # The config recipe.
2
- # https://rasa.com/docs/rasa/model-configuration/
2
+ # https://rasa.com/docs/rasa-pro/nlu-based-assistants/model-configuration/
3
3
  recipe: default.v1
4
4
 
5
5
  # The assistant project unique identifier
@@ -7,13 +7,13 @@ recipe: default.v1
7
7
  assistant_id: placeholder_default
8
8
 
9
9
  # Configuration for Rasa NLU.
10
- # https://rasa.com/docs/rasa/nlu/components/
10
+ # https://rasa.com/docs/rasa-pro/nlu-based-assistants/components/
11
11
  language: en
12
12
 
13
13
  pipeline:
14
14
  # # No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
15
15
  # # If you'd like to customize it, uncomment and adjust the pipeline.
16
- # # See https://rasa.com/docs/rasa/tuning-your-model for more information.
16
+ # # See https://rasa.com/docs/rasa-pro/nlu-based-assistants/tuning-your-model for more information.
17
17
  # - name: WhitespaceTokenizer
18
18
  # - name: RegexFeaturizer
19
19
  # - name: LexicalSyntacticFeaturizer
@@ -32,11 +32,11 @@ pipeline:
32
32
  # ambiguity_threshold: 0.1
33
33
 
34
34
  # Configuration for Rasa Core.
35
- # https://rasa.com/docs/rasa/core/policies/
35
+ # https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/
36
36
  policies:
37
37
  # # No configuration for policies was provided. The following default policies were used to train your model.
38
38
  # # If you'd like to customize them, uncomment and adjust the policies.
39
- # # See https://rasa.com/docs/rasa/policies for more information.
39
+ # # See https://rasa.com/docs/rasa-pro/concepts/policies/policy-overview/ for more information.
40
40
  # - name: MemoizationPolicy
41
41
  # - name: TEDPolicy
42
42
  # max_history: 5
@@ -1,6 +1,6 @@
1
1
  # This file contains the credentials for the voice & chat platforms
2
2
  # which your bot is using.
3
- # https://rasa.com/docs/rasa/messaging-and-voice-channels
3
+ # https://rasa.com/docs/rasa-pro/connectors/messaging-and-voice-channels/
4
4
 
5
5
  rest:
6
6
  # # you don't need to provide anything here - this channel doesn't