Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add condition asserting str is in Message.text #335

Merged
merged 7 commits into from
Mar 15, 2024

Conversation

ZergLev
Copy link
Collaborator

@ZergLev ZergLev commented Mar 4, 2024

Description

  • Function has_text() added. Checks the 'text' field of last_request(), if specified text within 'text' field, returns true.
    For such a task it's quicker than regexp condition and has less syntax bloat than exact_match() would have.
    This also makes checking telegram callback data easier since it is saved in the 'text' field: has_text(callback_data).
  • All relevant API reference / tutorials / guides updated.
  • All relevant references in the codebase updated.
  • Tests added, but I'm not sure I did it right. I changed some exact_match() uses to has_text() there. Well, vim did it, and now I'm thinking it's maybe preferable, actually.

Checklist

  • I have performed a self-review of the changes

To Consider

  • Consider if exact_match() could somehow be used in tandem with has_text() in the tutorials. It's a part of functionality that new users can't really see now, since it's rarely used.

@RLKRo
Copy link
Member

RLKRo commented Mar 7, 2024

This condition cannot be used instead of cnd.exact_match: otherwise we'd match "Hi" in "Hitler".

Here's what I propose:

  • Remove everything from this PR except for the addition of the new condition (and its addition to the index in the "core 2: conditions" tutorial).
  • Let cnd.exact_match and check_happy_path accept str message along with Message instances in a separate PR. (see this card)

Copy link
Member

@RLKRo RLKRo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ZergLev ZergLev requested a review from RLKRo March 7, 2024 16:10
@RLKRo RLKRo merged commit 9e62a84 into deeppavlov:dev Mar 15, 2024
3 of 17 checks passed
@RLKRo RLKRo mentioned this pull request Jul 3, 2024
6 tasks
RLKRo added a commit that referenced this pull request Jul 3, 2024
# Changelog

## General

- Framework renamed from DFF to Chatsky (#368)

## Features

- New `has_text` condition for asserting that specific text is contained
inside the last request (#335)
- Validation stage reworked.
`Pipeline.validation_stage`, `Pipeline.verbose` and `Context.validation`
fields are removed.
  Added new type for annotating labels `dff.script.ConstLabel` (#289)
- Functions `cnd.exact_match` and `check_happy_path` now accept both
`Message` and `str`.
The following are now equivalent: `exact_match(Message("text"))` ==
`exact_match("text")`
  (#337)
- CLIMessengerInterface moved to `messengers.console` (#328)
- Attachments reworked (#328):
- `Session`, `Command`, `Link`, `Button`, `Keyboard` and `Attachments`
classes removed, `Message.commands` field removed.
- Added `CallbackQuery`, `Contact`, `Invoice`, `Poll`, `Animation`,
`Sticker`, `VoiceMessage`, `VideoMessage` and `MediaGroup` classes.
  - Added attachment caching feature.
  - Added `has_callback_query` condition.
  - Removed `title` field from Data Attachments. Use `caption` instead.
- Telegram Messenger interface reworked (#328):
  - Now provides methods for attachment byte download.
- Added support for receiving attachment types as members of
`Message.attachments`. Others may be accessed via
`Message.original_message`.
- Added support for sending new attachment types (`Sticker`, `Poll`,
e.t.c.).
- Added support for extra options such as `disable_notification`,
`message_effect_id` or `caption`.
  - Telegram tutorials rewritten to reflect all the changes.
- Added slots that simplify the process of extracting arbitrary data
from user messages and accessing it later (#36):
  - New user guide and tutorials on slots

## Documentation

- Return PRE_RESPONSE_PROCESSING and PRE_TRANSITION_PROCESSING tutorials
- New telegram interface tutorials (#328)
- Slots user guide and tutorials (#36)

## Contrib

- Added `poe quick_test` to run tests that are not slow and do not
require docker (#344)
- `Context.framework_states` renamed to `Context.framework_data` and
made `Pydantic.BaseModel` (#359)
- Added `MessengerInterfaceWithAttachments` class (#328)
- Added tools for enabling json serialization via pickle (#328)
- Telegram tests made independent from telegram servers (#328)
- `wrap_sync_function_in_async` moved to `utils.devel` (#36)

# Checklist

- [x] I have performed a self-review of the changes
- [x] Rename repos (this; template; demo)
- [ ] Add new logo; change favicons in conf.py (this can be done later)
- [x] Create new PyPi project and update pypi token
- [ ] Create a new release
- [x] Make a new release on the
[final_dff_release](https://github.com/deeppavlov/dialog_flow_framework/tree/final_dff_release)
branch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants