增加stream插件消息处理逻辑和example

This commit is contained in:
weiming wu 2023-08-10 15:33:37 +08:00
parent 0845d43d46
commit b46abaf516
3 changed files with 10 additions and 10 deletions

View File

@ -382,8 +382,8 @@ func (cli *StreamClient) RegisterChatBotCallbackRouter(messageHandler chatbot.IC
}
// AI插件的注册函数
func (cli *StreamClient) RegisterPluginCallbackRouter(messageHandler plugin.IDingTalkPluginHandler) {
cli.RegisterRouter(utils.SubscriptionTypeKCallback, payload.BotPluginCallbackTopic, plugin.NewDefaultDingTalkPluginFrameHandler(messageHandler).OnEventReceived)
func (cli *StreamClient) RegisterPluginCallbackRouter(messageHandler plugin.IPluginMessageHandler) {
cli.RegisterRouter(utils.SubscriptionTypeKCallback, payload.PluginMessageCallbackTopic, plugin.NewDefaultPluginFrameHandler(messageHandler).OnEventReceived)
}
// 事件类型的注册函数

View File

@ -24,7 +24,7 @@ const (
DataFrameResponseStatusCodeKHandlerNotFound = 404
BotMessageCallbackTopic = "/v1.0/im/bot/messages/get" //机器人消息统一回调topic
BotPluginCallbackTopic = "/v1.0/agi/plugins/callback" //AI插件消息统一回调topic
PluginMessageCallbackTopic = "/v1.0/agi/plugins/callback" //AI插件消息统一回调topic
)
func GenerateMessageId(prefix string) string {

View File

@ -10,19 +10,19 @@ type CallbackResponse struct {
Response interface{} `json:"response"`
}
type IDingTalkPluginHandler func(c context.Context, data *DingTalkPluginMessage) (interface{}, error)
type IPluginMessageHandler func(c context.Context, data *DingTalkPluginMessage) (interface{}, error)
type DefaultDingTalkPluginFrameHandler struct {
defaultHandler IDingTalkPluginHandler
type DefaultPluginFrameHandler struct {
defaultHandler IPluginMessageHandler
}
func NewDefaultDingTalkPluginFrameHandler(defaultHandler IDingTalkPluginHandler) *DefaultDingTalkPluginFrameHandler {
return &DefaultDingTalkPluginFrameHandler{
func NewDefaultPluginFrameHandler(defaultHandler IPluginMessageHandler) *DefaultPluginFrameHandler {
return &DefaultPluginFrameHandler{
defaultHandler: defaultHandler,
}
}
func (h *DefaultDingTalkPluginFrameHandler) OnEventReceived(ctx context.Context, df *payload.DataFrame) (*payload.DataFrameResponse, error) {
func (h *DefaultPluginFrameHandler) OnEventReceived(ctx context.Context, df *payload.DataFrame) (*payload.DataFrameResponse, error) {
msgData := &DingTalkPluginMessage{}
err := json.Unmarshal([]byte(df.Data), msgData)
if err != nil {