Проблема в кодировании приветственного сообщения вместе с опциями в RASA - PullRequest
0 голосов
/ 12 апреля 2020

Я прочитал этот ответ на Как закодировать приветственное сообщение в RASA, соответственно, я написал пользовательское действие, но оно не отображает сообщение, как только начинается сеанс, вместо этого оно отвечает после Пользователь отправил сообщение. Ниже приведен мой код для печати только приветственного сообщения. Я поместил это в мой файл "actions.py". Пожалуйста, помогите мне решить эту проблему.

На изображении ниже приведен пример того, как я хочу, чтобы мой бот запустился. Он запустится с общим сообщением, а затем предоставит опции, которые пользователь будет выбирать. Это то, чего я пытаюсь достичь в конечном итоге.

enter image description here

from typing import Text, List, Dict, Any

from rasa_sdk import Action, Tracker
from rasa_sdk.events import SlotSet, SessionStarted, ActionExecuted, EventType
from rasa_sdk.executor import CollectingDispatcher


class ActionSessionStart(Action):
    def name(self) -> Text:
        return "action_session_start"

    @staticmethod
    def fetch_slots(dispatcher: CollectingDispatcher, tracker: Tracker) -> List[EventType]:
        """Collect slots that contain the user's name and phone number."""

        slots = []
        return slots        


    async def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[EventType]:

        # the session should begin with a `session_started` event
        dispatcher.utter_message("Hi, I am Aayush Bot !!!")
        events = [SessionStarted()]

        # any slots that should be carried over should come after the
        # `session_started` event
        events.extend(self.fetch_slots(dispatcher, tracker))

        # an `action_listen` should be added at the end as a user message follows
        events.append(ActionExecuted("action_listen"))

        return events

1 Ответ

0 голосов
/ 22 апреля 2020

Какой бы входной канал вы ни использовали, необходимо отправить полезную нагрузку /start_session для запуска action_session_start. Вы можете сделать это, просто набрав /start_session в командной строке. Если вы тестируете это в оболочке rasa, вам нужно отправить полезную нагрузку вручную. В противном случае, он начнет сеанс после первого сообщения (что вы и наблюдаете).

...