增加stream插件消息处理逻辑和example
This commit is contained in:
parent
0845d43d46
commit
b46abaf516
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 事件类型的注册函数
|
// 事件类型的注册函数
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue