增加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插件的注册函数 // AI插件的注册函数
func (cli *StreamClient) RegisterPluginCallbackRouter(messageHandler plugin.IDingTalkPluginHandler) { func (cli *StreamClient) RegisterPluginCallbackRouter(messageHandler plugin.IPluginMessageHandler) {
cli.RegisterRouter(utils.SubscriptionTypeKCallback, payload.BotPluginCallbackTopic, plugin.NewDefaultDingTalkPluginFrameHandler(messageHandler).OnEventReceived) cli.RegisterRouter(utils.SubscriptionTypeKCallback, payload.PluginMessageCallbackTopic, plugin.NewDefaultPluginFrameHandler(messageHandler).OnEventReceived)
} }
// 事件类型的注册函数 // 事件类型的注册函数

View File

@ -23,8 +23,8 @@ const (
DataFrameResponseStatusCodeKInternalError = 500 DataFrameResponseStatusCodeKInternalError = 500
DataFrameResponseStatusCodeKHandlerNotFound = 404 DataFrameResponseStatusCodeKHandlerNotFound = 404
BotMessageCallbackTopic = "/v1.0/im/bot/messages/get" //机器人消息统一回调topic 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 { func GenerateMessageId(prefix string) string {

View File

@ -10,19 +10,19 @@ type CallbackResponse struct {
Response interface{} `json:"response"` 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 { type DefaultPluginFrameHandler struct {
defaultHandler IDingTalkPluginHandler defaultHandler IPluginMessageHandler
} }
func NewDefaultDingTalkPluginFrameHandler(defaultHandler IDingTalkPluginHandler) *DefaultDingTalkPluginFrameHandler { func NewDefaultPluginFrameHandler(defaultHandler IPluginMessageHandler) *DefaultPluginFrameHandler {
return &DefaultDingTalkPluginFrameHandler{ return &DefaultPluginFrameHandler{
defaultHandler: defaultHandler, 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{} msgData := &DingTalkPluginMessage{}
err := json.Unmarshal([]byte(df.Data), msgData) err := json.Unmarshal([]byte(df.Data), msgData)
if err != nil { if err != nil {