How to get a pre-settled slot value in nlu phrase?

Hi there, I tried to implement an action to response to a pre-settled slot value, such as “open google website”, or “open facebook website”, I read the https://rasa.com/docs/ hard, and learned into several examples in rasa/examples at main · RasaHQ/rasa · GitHub, but failed to find a proper example for me.

Could someone help me out? thanks a lot.

Here are some code snippet of my project.

nlu.yml

version: "3.1"
nlu:
- intent: open_web
  examples: |
    - open [Google](web_name) website
    - open [Microsoft](web_name) website
    - open [Facebook](web_name) website
    - open [Twitter](web_name) website

ruls.yml

version: "3.1"

policies:
- name: RulePolicy

rules:
- rule: activate open web form
  steps:
    - intent: open_web
    - action: open_web_form
    - active_loop: open_web_form

stories.yml

version: "3.1"

stories:
- story: open_web
  steps:
  - intent: open_web
  - slot_was_set:
    - web_name: Google
  - action: open_web_form
  - active_loop: open_web_form
  - active_loop: null
  - action: action_open_web

domain.yml

version: '3.1'
intents:
- open_web
actions:
- action_open_web

entities:
- web_name
- url

slots:
  web_name:
    type: text
    mappings:
    - type: from_entity
      entity: web_name
  url:
    type: text
    mappings:
    - type: from_entity
      entity: url

responses:
  utter_greet:
  - text: Hi you back.

session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: true

forms:
  open_web_form:
    required_slots:
      - web_name
      - url

actions.py

from typing import Any, Text, Dict, List
from requests_html import HTMLSession

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

import subprocess
import logging
logging.basicConfig(level="DEBUG")

session = HTMLSession()

class ActionOpenWeb(Action):
    def name(self) -> Text:
        return "action_open_web"
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        # web_name = tracker.get_slot('web_name')
        web_name = tracker.slots.get('web_name')
        msg = "web_name: " + str(web_name)
        dispatcher.utter_message(msg)
        print(msg)

        print(tracker.slots.values())

        # url = tracker.get_slot('url')
        url = tracker.slots.get('url')
        msg = "url: " + str(url)
        dispatcher.utter_message(msg)
        print(msg)
        
        if web_name:
            # search_url = f"https://cn.bing.com/search?q={web_name}官网"
            search_url = f"https://cn.bing.com/search?q={web_name}"
            r = session.get(search_url)
            cite =  r.html.find('cite', first=True).text
            web_url = cite
            go_to(web_url)
            tracker.slots = {'web_name':''}
            dispatcher.utter_message("Here we go: " + web_url)
        elif url:
            go_to(url)
            tracker.slots = {'url':''}
            dispatcher.utter_message("Here we go: " + url)
        else:
            dispatcher.utter_message("Sorry, this website can not be recognized!")

        return []