给出一个rasa 在对话中获得用户的name例子
时间: 2024-04-15 12:31:31 浏览: 143
获取用户名称
4星 · 用户满意度95%
在 Rasa 中,可以通过自定义的 action 来获取用户的名字。以下是一个使用 Rasa 的自定义 action 获取用户名字的例子:
```python
# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionGetUserName(Action):
def name(self) -> Text:
return "action_get_user_name"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
user_name = tracker.latest_message.get('text')
dispatcher.utter_message(text=f"Nice to meet you, {user_name}!")
return []
```
在这个例子中,我们定义了一个名为 "action_get_user_name" 的自定义 action,当 Rasa 接收到用户输入的消息时,会调用这个 action。该 action 获取最新一条消息中的文本信息,即用户的名字,并通过 `dispatcher.utter_message` 方法返回一个包含用户姓名的回复。
使用这个自定义 action,我们可以在 Rasa 的培训对话数据中添加一些规则来触发它。例如:
```yaml
# rules.yml
version: "2.0"
rules:
- rule: Greet the user and get their name
steps:
- intent: greet
- action: action_get_user_name
```
在这个例子中,当用户发送一个包含 "greet" 意图的消息时,Rasa 会触发 "action_get_user_name" 这个自定义 action,并获取用户的名字。
注意:在使用这个例子时,你需要将自定义 action 注册到 Rasa 的 `domain.yml` 文件中的 `actions` 部分,并确保 Rasa 的版本与这个例子兼容。
阅读全文