Exemplo n.º 1
0
 def tracker(self, default_domain):
     return DialogueStateTracker(UserMessage.DEFAULT_SENDER_ID, default_domain.slots)
Exemplo n.º 2
0
 def tracker(self, domain_with_mapping):
     return DialogueStateTracker(
         UserMessage.DEFAULT_SENDER_ID, domain_with_mapping.slots
     )
Exemplo n.º 3
0
def default_tracker(default_domain):
    return DialogueStateTracker("my-sender", default_domain.slots)
Exemplo n.º 4
0
def framebot_tracker(framebot_domain):
    return DialogueStateTracker("my-sender-1", framebot_domain.slots)
Exemplo n.º 5
0
def template_sender_tracker(default_domain):
    return DialogueStateTracker("template-sender", default_domain.slots)
Exemplo n.º 6
0
 def init_tracker(self, sender_id):
     return DialogueStateTracker(
         sender_id,
         self.domain.slots if self.domain else None,
         max_event_history=self.max_event_history,
     )
Exemplo n.º 7
0
def default_tracker(default_domain):
    import uuid

    uid = str(uuid.uuid1())
    return DialogueStateTracker(uid, default_domain.slots)
Exemplo n.º 8
0
async def test_persist_form_story(tmpdir):
    domain = Domain.load("data/test_domains/form.yml")

    tracker = DialogueStateTracker("", domain.slots)

    story = ("* greet\n"
             "    - utter_greet\n"
             "* start_form\n"
             "    - some_form\n"
             '    - form{"name": "some_form"}\n'
             "* default\n"
             "    - utter_default\n"
             "    - some_form\n"
             "* stop\n"
             "    - utter_ask_continue\n"
             "* affirm\n"
             "    - some_form\n"
             "* stop\n"
             "    - utter_ask_continue\n"
             "    - action_listen\n"
             "* form: inform\n"
             "    - some_form\n"
             '    - form{"name": null}\n'
             "* goodbye\n"
             "    - utter_goodbye\n")

    # simulate talking to the form
    events = [
        UserUttered(intent={"name": "greet"}),
        ActionExecuted("utter_greet"),
        ActionExecuted("action_listen"),
        # start the form
        UserUttered(intent={"name": "start_form"}),
        ActionExecuted("some_form"),
        Form("some_form"),
        ActionExecuted("action_listen"),
        # out of form input
        UserUttered(intent={"name": "default"}),
        ActionExecutionRejected("some_form"),
        ActionExecuted("utter_default"),
        ActionExecuted("some_form"),
        ActionExecuted("action_listen"),
        # out of form input
        UserUttered(intent={"name": "stop"}),
        ActionExecutionRejected("some_form"),
        ActionExecuted("utter_ask_continue"),
        ActionExecuted("action_listen"),
        # out of form input but continue with the form
        UserUttered(intent={"name": "affirm"}),
        FormValidation(False),
        ActionExecuted("some_form"),
        ActionExecuted("action_listen"),
        # out of form input
        UserUttered(intent={"name": "stop"}),
        ActionExecutionRejected("some_form"),
        ActionExecuted("utter_ask_continue"),
        ActionExecuted("action_listen"),
        # form input
        UserUttered(intent={"name": "inform"}),
        FormValidation(True),
        ActionExecuted("some_form"),
        ActionExecuted("action_listen"),
        Form(None),
        UserUttered(intent={"name": "goodbye"}),
        ActionExecuted("utter_goodbye"),
        ActionExecuted("action_listen"),
    ]
    [tracker.update(e) for e in events]

    assert story in tracker.export_stories()
Exemplo n.º 9
0
]

EXAMPLE_DOMAINS = [
    DEFAULT_DOMAIN_PATH_WITH_SLOTS,
    DEFAULT_DOMAIN_PATH_WITH_SLOTS_AND_NO_ACTIONS,
    DEFAULT_DOMAIN_PATH_WITH_MAPPING,
    "examples/formbot/domain.yml",
    "examples/moodbot/domain.yml",
    "examples/restaurantbot/domain.yml",
]
templates = {
        "utter_ask_rephrase": [{"text": "can you rephrase that?"}],
        "utter_restart": [{"text": "congrats, you've restarted me!"}],
        "utter_back": [{"text": "backing up..."}],
        "utter_invalid": [{"text": "a template referencing an invalid {variable}."}],
        "utter_buttons": [
            {
                "text": "button message",
                "buttons": [
                    {"payload": "button1", "title": "button1"},
                    {"payload": "button2", "title": "button2"},
                ],
            }
        ],
    }
template_nlg = TemplatedNaturalLanguageGenerator(templates)
default_channel = CollectingOutputChannel()
default_domain = Domain.load(DEFAULT_DOMAIN_PATH_WITH_SLOTS)
default_nlg = TemplatedNaturalLanguageGenerator(default_domain.templates)
default_tracker = DialogueStateTracker("my-sender", default_domain.slots)
template_sender_tracker = DialogueStateTracker("template-sender", default_domain.slots)
Exemplo n.º 10
0
async def test_restart(default_dispatcher_collecting, default_domain):
    tracker = DialogueStateTracker("default", default_domain.slots)
    events = await ActionRestart().run(default_dispatcher_collecting, tracker,
                                       default_domain)
    assert events == [Restarted()]
Exemplo n.º 11
0
async def test_remote_action_logs_events(default_dispatcher_collecting,
                                         default_domain):
    tracker = DialogueStateTracker("default", default_domain.slots)

    endpoint = EndpointConfig("https://example.com/webhooks/actions")
    remote_action = action.RemoteAction("my_action", endpoint)

    response = {
        "events": [{
            "event": "slot",
            "value": "rasa",
            "name": "name"
        }],
        "responses": [{
            "text": "test text",
            "buttons": [{
                "title": "cheap",
                "payload": "cheap"
            }]
        }, {
            "template": "utter_greet"
        }]
    }

    with aioresponses() as mocked:
        mocked.post('https://example.com/webhooks/actions', payload=response)

        events = await remote_action.run(default_dispatcher_collecting,
                                         tracker, default_domain)

        r = latest_request(mocked, 'post',
                           "https://example.com/webhooks/actions")
        assert r

        assert json_of_latest_request(r) == {
            'domain': default_domain.as_dict(),
            'next_action': 'my_action',
            'sender_id': 'default',
            'version': rasa.__version__,
            'tracker': {
                'latest_message': {
                    'entities': [],
                    'intent': {},
                    'text': None
                },
                'active_form': {},
                'latest_action_name': None,
                'sender_id': 'default',
                'paused': False,
                'followup_action': 'action_listen',
                'latest_event_time': None,
                'slots': {
                    'name': None
                },
                'events': [],
                'latest_input_channel': None
            }
        }

    assert events == [SlotSet("name", "rasa")]

    channel = default_dispatcher_collecting.output_channel
    assert channel.messages == [{
        "text":
        "test text",
        "recipient_id":
        "my-sender",
        "buttons": [{
            "title": "cheap",
            "payload": "cheap"
        }]
    }, {
        "text": "hey there None!",
        "recipient_id": "my-sender"
    }]