Beispiel #1
0
async def test_reminder_cancelled_cancels_job_with_name(
        default_channel: CollectingOutputChannel,
        default_processor: MessageProcessor):
    sender_id = "][]][xy,,=+2f'[:/;>]  <0d]A[e_,02"

    reminder = ReminderScheduled(intent="greet",
                                 trigger_date_time=datetime.datetime.now())
    job_name = reminder.scheduled_job_name(sender_id)
    reminder_cancelled = ReminderCancelled()

    assert reminder_cancelled.cancels_job_with_name(job_name, sender_id)
    assert not reminder_cancelled.cancels_job_with_name(
        job_name.upper(), sender_id)
async def test_reminder_cancelled_cancels_job_with_name_special_name(
    default_channel: CollectingOutputChannel, default_processor: MessageProcessor
):
    sender_id = "][]][xy,,=+2f'[:/;  >]<0d]A[e_,02"
    name = "wkjbgr,34(,*&%^^&*(OP#LKMN V#NF# # #R"

    reminder = ReminderScheduled(
        intent="greet", trigger_date_time=datetime.datetime.now(), name=name
    )
    job_name = reminder.scheduled_job_name(sender_id)
    reminder_cancelled = ReminderCancelled(name)

    assert reminder_cancelled.cancels_job_with_name(job_name, sender_id)
    assert not reminder_cancelled.cancels_job_with_name(job_name.upper(), sender_id)
Beispiel #3
0
async def test_reminder_cancelled_multi_user(
        default_channel: CollectingOutputChannel,
        default_processor: MessageProcessor):
    sender_ids = [uuid.uuid4().hex, uuid.uuid4().hex]
    trackers = []
    for sender_id in sender_ids:
        tracker = default_processor.tracker_store.get_or_create_tracker(
            sender_id)

        tracker.update(UserUttered("test"))
        tracker.update(ActionExecuted("action_reminder_reminder"))
        tracker.update(
            ReminderScheduled("greet",
                              datetime.datetime.now(),
                              kill_on_user_message=True))
        trackers.append(tracker)

    # cancel all reminders (one) for the first user
    trackers[0].update(ReminderCancelled())

    for tracker in trackers:
        default_processor.tracker_store.save(tracker)
        await default_processor._schedule_reminders(
            tracker.events,
            tracker,
            default_channel,
        )
    # check that the jobs were added
    assert len((await jobs.scheduler()).get_jobs()) == 2

    for tracker in trackers:
        await default_processor._cancel_reminders(tracker.events, tracker)
    # check that only one job was removed
    assert len((await jobs.scheduler()).get_jobs()) == 1

    # execute the jobs
    await wait_until_all_jobs_were_executed(timeout_after_seconds=5.0)

    tracker_0 = default_processor.tracker_store.retrieve(sender_ids[0])
    # there should be no utter_greet action
    assert (UserUttered(
        f"{EXTERNAL_MESSAGE_PREFIX}greet",
        intent={
            INTENT_NAME_KEY: "greet",
            IS_EXTERNAL: True
        },
    ) not in tracker_0.events)

    tracker_1 = default_processor.tracker_store.retrieve(sender_ids[1])
    # there should be utter_greet action
    assert (UserUttered(
        f"{EXTERNAL_MESSAGE_PREFIX}greet",
        intent={
            INTENT_NAME_KEY: "greet",
            IS_EXTERNAL: True
        },
    ) in tracker_1.events)
Beispiel #4
0
async def test_reminder_cancelled_all(
    default_channel: CollectingOutputChannel,
    default_processor: MessageProcessor,
    tracker_with_six_scheduled_reminders: DialogueStateTracker,
):
    tracker = tracker_with_six_scheduled_reminders
    await default_processor._schedule_reminders(tracker.events, tracker,
                                                default_channel)

    # cancel all reminders
    await cancel_reminder_and_check(tracker, default_processor,
                                    ReminderCancelled(), 6, 0)
Beispiel #5
0
async def test_reminder_cancelled_by_intent(
    default_channel: CollectingOutputChannel,
    default_processor: MessageProcessor,
    tracker_with_six_scheduled_reminders: DialogueStateTracker,
):
    tracker = tracker_with_six_scheduled_reminders
    await default_processor._schedule_reminders(tracker.events, tracker,
                                                default_channel)

    # cancel the third, fifth, and sixth reminder
    await cancel_reminder_and_check(tracker, default_processor,
                                    ReminderCancelled(intent="default"), 6, 3)
Beispiel #6
0
async def test_reminder_cancelled_by_name(
    default_channel: CollectingOutputChannel,
    default_processor: MessageProcessor,
    tracker_with_six_scheduled_reminders: DialogueStateTracker,
):
    tracker = tracker_with_six_scheduled_reminders
    await default_processor._schedule_reminders(tracker.events, tracker,
                                                default_channel,
                                                default_processor.nlg)

    # cancel the sixth reminder
    await cancel_reminder_and_check(tracker, default_processor,
                                    ReminderCancelled("special"), 6, 5)
async def test_reminder_cancelled_by_entities(
    default_channel: CollectingOutputChannel,
    default_processor: MessageProcessor,
    tracker_with_six_scheduled_reminders: DialogueStateTracker,
):
    tracker = tracker_with_six_scheduled_reminders
    await default_processor._schedule_reminders(
        tracker.events, tracker, default_channel
    )

    # cancel the fourth reminder
    await cancel_reminder_and_check(
        tracker,
        default_processor,
        ReminderCancelled(entities=[{"entity": "name", "value": "Bruce Wayne"}]),
        6,
        5,
    )
Beispiel #8
0
def test_json_parse_reminder_cancelled():
    evt = {
        "event": "cancel_reminder",
        "name": "my_reminder",
        "intent": "my_intent",
        "entities": [
            {"entity": "entity1", "value": "value1"},
            {"entity": "entity2", "value": "value2"},
        ],
        "date_time": "2018-09-03T11:41:10.128172",
    }
    assert Event.from_parameters(evt) == ReminderCancelled(
        name="my_reminder",
        intent="my_intent",
        entities=[
            {"entity": "entity1", "value": "value1"},
            {"entity": "entity2", "value": "value2"},
        ],
        timestamp=parser.parse("2018-09-03T11:41:10.128172"),
    )
Beispiel #9
0
             "entity": "city",
             "value": "London",
             "role": "destination",
             "group": "test",
         },
         {
             "entity": "count",
             "value": 1
         },
     ],
     timestamp=None,
 ),
 DefinePrevUserUtteredFeaturization(use_text_for_featurization=False,
                                    timestamp=None,
                                    metadata=None),
 ReminderCancelled(timestamp=1621590172.3872123),
 ReminderScheduled(timestamp=None,
                   trigger_date_time=datetime.now(),
                   intent="greet"),
 ActionExecutionRejected(action_name="my_action"),
 LegacyFormValidation(validate=True, timestamp=None),
 LoopInterrupted(timestamp=None, is_interrupted=False),
 ActiveLoop(name="loop"),
 LegacyForm(name="my_form"),
 AllSlotsReset(),
 SlotSet(key="my_slot", value={}),
 SlotSet(key="my slot", value=[]),
 SlotSet(key="test", value=1),
 SlotSet(key="test", value="text"),
 ConversationResumed(),
 ConversationPaused(),