怎么使用actions方法
时间: 2024-06-09 13:07:48 浏览: 99
activity的使用方法
使用Actions方法需要先定义一个Action类,该类必须继承自`Action`类,并实现`run`方法。`run`方法是处理用户请求的核心方法,它接收`tracker`和`domain`两个参数,分别表示用户跟踪器和对话域。
例如,我们可以定义一个简单的Action类来发送回复信息给用户:
```python
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionHelloWorld(Action):
def name(self) -> Text:
return "action_hello_world"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
dispatcher.utter_message(text="Hello World!")
return []
```
在这个例子中,`ActionHelloWorld`类继承自`Action`类,并实现了`name`和`run`方法。`name`方法返回一个字符串,表示Action的名称,这个名称在定义对话流程时会用到。
`run`方法接收三个参数:`dispatcher`、`tracker`和`domain`。`dispatcher`是用来发送消息给用户的,`tracker`是用户跟踪器,用来获取用户的输入和状态信息,`domain`是对话域,用来获取对话配置信息。
在`run`方法中,我们使用`dispatcher.utter_message`方法发送一条回复给用户。
完成Action类的定义后,我们需要在对话流程中使用这个Action。我们可以在`stories.md`文件中定义对话流程:
```markdown
## greet
* greet
- action_hello_world
```
在这个例子中,我们定义了一个名为`greet`的对话流程,当用户说“greet”时,会触发`action_hello_world`这个Action。
最后,在运行Rasa服务时,需要加载定义的Action类。可以在`endpoints.yml`文件中定义Action服务的地址:
```yaml
action_endpoint:
url: "http://localhost:5055/webhook"
```
在这个例子中,我们在本地启动了一个Action服务,地址为`http://localhost:5055/webhook`。
阅读全文