Rasa 动作服务器 gRPC API¶
输入和输出¶
以下是 Rasa 动作服务器的 gRPC API 定义。该 API 在 Rasa SDK 存储库中的 proto/action_webhook.proto
文件中定义。
action_webhook.proto
syntax = "proto3";
package action_server_webhook;
import "google/protobuf/struct.proto";
service ActionService {
rpc Webhook (WebhookRequest) returns (WebhookResponse);
rpc Actions (ActionsRequest) returns (ActionsResponse);
}
message ActionsRequest {}
message ActionsResponse {
repeated google.protobuf.Struct actions = 1;
}
message Tracker {
string sender_id = 1;
google.protobuf.Struct slots = 2;
google.protobuf.Struct latest_message = 3;
repeated google.protobuf.Struct events = 4;
bool paused = 5;
optional string followup_action = 6;
map<string, string> active_loop = 7;
optional string latest_action_name = 8;
repeated google.protobuf.Struct stack = 9;
}
message Intent {
string string_value = 1;
google.protobuf.Struct dict_value = 2;
}
message Entity {
string string_value = 1;
google.protobuf.Struct dict_value = 2;
}
message Action {
string string_value = 1;
google.protobuf.Struct dict_value = 2;
}
message Domain {
google.protobuf.Struct config = 1;
google.protobuf.Struct session_config = 2;
repeated Intent intents = 3;
repeated Entity entities = 4;
google.protobuf.Struct slots = 5;
google.protobuf.Struct responses = 6;
repeated Action actions = 7;
google.protobuf.Struct forms = 8;
repeated google.protobuf.Struct e2e_actions = 9;
}
message WebhookRequest {
string next_action = 1;
string sender_id = 2;
Tracker tracker = 3;
Domain domain = 4;
string version = 5;
optional string domain_digest = 6;
}
message WebhookResponse {
repeated google.protobuf.Struct events = 1;
repeated google.protobuf.Struct responses = 2;
}
错误处理¶
当 Rasa 服务器通过 gRPC 协议与动作服务器通信时发生错误,动作服务器应返回包含正确 gRPC 状态代码和详细信息的适当错误消息。
以下是可能的错误场景以及动作服务器的预期错误响应。
Rasa Python 动作服务器错误处理支持
Rasa SDK 中提供的 Rasa Python 动作服务器已经处理了这些错误情况并向 Rasa 服务器返回了适当的错误消息。如果你使用自定义动作服务器,则需要相应地处理这些错误情况。
未找到自定义动作¶
如果动作服务器未找到自定义动作,则应返回:
- gRPC 状态代码为
NOT_FOUND
的错误 -
错误消息中的详细信息格式如下:
{ "action_name" : { "type": "string" }, "message" : { "type": "string" }, "resource_type" : "ACTION" }
其中
action_name
是未找到的动作的名称,message
是可读的错误消息,resource_type
是未找到的资源的类型。
自定义动作在执行过程中失败¶
如果自定义动作在执行过程中失败,它应该返回:
- gRPC 状态代码为
INTERNAL
的错误 -
错误消息中的详细信息格式如下:
其中
action_name
是失败的动作的名称,message
是可读的错误消息。
未找到领域¶
如果动作服务器未找到与对话机器人的 domain_digest
对应的领域,则应返回: