Skip to content

Commit 5eb6bd5

Browse files
committed
Adjust requested by @degiz
RasaHQ#5767 (review)
1 parent cf28bcc commit 5eb6bd5

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

rasa/core/actions/action.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ async def run(
166166
nlg: "NaturalLanguageGenerator",
167167
tracker: "DialogueStateTracker",
168168
domain: "Domain",
169+
metadata: Optional[Dict] = None,
169170
) -> List[Event]:
170171
"""
171172
Execute the side effects of this action.
@@ -178,7 +179,8 @@ async def run(
178179
``tracker.get_slot(slot_name)`` and the most recent user
179180
message is ``tracker.latest_message.text``.
180181
domain (Domain): the bot's domain
181-
182+
metadata: dictionary that can be sent to action server with custom
183+
data.
182184
Returns:
183185
List[Event]: A list of :class:`rasa.core.events.Event` instances
184186
"""
@@ -205,6 +207,7 @@ async def run(
205207
nlg: "NaturalLanguageGenerator",
206208
tracker: "DialogueStateTracker",
207209
domain: "Domain",
210+
metadata: Optional[Dict] = None,
208211
):
209212
"""Query the appropriate response and create a bot utterance with that."""
210213

@@ -255,6 +258,7 @@ async def run(
255258
nlg: "NaturalLanguageGenerator",
256259
tracker: "DialogueStateTracker",
257260
domain: "Domain",
261+
metadata: Optional[Dict] = None,
258262
) -> List[Event]:
259263
"""Simple run implementation uttering a (hopefully defined) template."""
260264

@@ -291,6 +295,7 @@ async def run(
291295
nlg: "NaturalLanguageGenerator",
292296
tracker: "DialogueStateTracker",
293297
domain: "Domain",
298+
metadata: Optional[Dict] = None,
294299
) -> List[Event]:
295300
# only utter the template if it is available
296301
evts = await super().run(output_channel, nlg, tracker, domain)
@@ -313,6 +318,7 @@ async def run(
313318
nlg: "NaturalLanguageGenerator",
314319
tracker: "DialogueStateTracker",
315320
domain: "Domain",
321+
metadata: Optional[Dict] = None,
316322
) -> List[Event]:
317323
return []
318324

@@ -334,6 +340,7 @@ async def run(
334340
nlg: "NaturalLanguageGenerator",
335341
tracker: "DialogueStateTracker",
336342
domain: "Domain",
343+
metadata: Optional[Dict] = None,
337344
) -> List[Event]:
338345
from rasa.core.events import Restarted
339346

@@ -373,10 +380,11 @@ async def run(
373380
nlg: "NaturalLanguageGenerator",
374381
tracker: "DialogueStateTracker",
375382
domain: "Domain",
383+
metadata: Optional[Dict] = None,
376384
) -> List[Event]:
377385
from rasa.core.events import SessionStarted
378386

379-
_events = [SessionStarted()]
387+
_events = [SessionStarted(metadata=metadata)]
380388

381389
if domain.session_config.carry_over_slots:
382390
_events.extend(self._slot_set_events_from_tracker(tracker))
@@ -402,6 +410,7 @@ async def run(
402410
nlg: "NaturalLanguageGenerator",
403411
tracker: "DialogueStateTracker",
404412
domain: "Domain",
413+
metadata: Optional[Dict] = None,
405414
) -> List[Event]:
406415
from rasa.core.events import UserUtteranceReverted
407416

@@ -423,6 +432,7 @@ async def run(
423432
nlg: "NaturalLanguageGenerator",
424433
tracker: "DialogueStateTracker",
425434
domain: "Domain",
435+
metadata: Optional[Dict] = None,
426436
) -> List[Event]:
427437
from rasa.core.events import Form, SlotSet
428438

@@ -526,6 +536,7 @@ async def run(
526536
nlg: "NaturalLanguageGenerator",
527537
tracker: "DialogueStateTracker",
528538
domain: "Domain",
539+
metadata: Optional[Dict] = None,
529540
) -> List[Event]:
530541
json_body = self._action_call_format(tracker, domain)
531542

@@ -630,6 +641,7 @@ async def run(
630641
nlg: "NaturalLanguageGenerator",
631642
tracker: "DialogueStateTracker",
632643
domain: "Domain",
644+
metadata: Optional[Dict] = None,
633645
) -> List[Event]:
634646
from rasa.core.policies.two_stage_fallback import has_user_rephrased
635647

@@ -709,6 +721,7 @@ async def run(
709721
nlg: "NaturalLanguageGenerator",
710722
tracker: "DialogueStateTracker",
711723
domain: "Domain",
724+
metadata: Optional[Dict] = None,
712725
) -> List[Event]:
713726
intent_to_affirm = tracker.latest_message.intent.get("name")
714727
affirmation_message = f"Did you mean '{intent_to_affirm}'?"

rasa/core/processor.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,14 +172,12 @@ async def _update_tracker_session(
172172
f"Starting a new session for conversation ID '{tracker.sender_id}'."
173173
)
174174

175-
if not (SessionStarted in tracker.events) and metadata:
176-
tracker.events.append(SessionStarted(metadata=metadata))
177-
178175
await self._run_action(
179176
action=self._get_action(ACTION_SESSION_START_NAME),
180177
tracker=tracker,
181178
output_channel=output_channel,
182179
nlg=self.nlg,
180+
metadata=metadata,
183181
)
184182

185183
async def get_tracker_with_session_start(
@@ -636,12 +634,24 @@ async def _cancel_reminders(
636634
scheduler.remove_job(scheduled_job.id)
637635

638636
async def _run_action(
639-
self, action, tracker, output_channel, nlg, policy=None, confidence=None
637+
self,
638+
action,
639+
tracker,
640+
output_channel,
641+
nlg,
642+
policy=None,
643+
confidence=None,
644+
metadata: Optional[Dict] = None,
640645
) -> bool:
641646
# events and return values are used to update
642647
# the tracker state after an action has been taken
643648
try:
644-
events = await action.run(output_channel, nlg, tracker, self.domain)
649+
if action.name() == ACTION_SESSION_START_NAME:
650+
events = await action.run(
651+
output_channel, nlg, tracker, self.domain, metadata=metadata
652+
)
653+
else:
654+
events = await action.run(output_channel, nlg, tracker, self.domain)
645655
except ActionExecutionRejection:
646656
events = [ActionExecutionRejected(action.name(), policy, confidence)]
647657
tracker.update(events[0])

0 commit comments

Comments
 (0)