增加stream插件消息处理逻辑和example
This commit is contained in:
parent
1fa7561795
commit
0845d43d46
|
|
@ -1,5 +1,6 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
// 插件例子
|
||||||
type EchoRequest struct {
|
type EchoRequest struct {
|
||||||
Message string
|
Message string
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,15 @@ func OnChatBotMessageReceived(ctx context.Context, data *chatbot.BotCallbackData
|
||||||
|
|
||||||
// 简单的插件处理实现
|
// 简单的插件处理实现
|
||||||
func OnPluginMessageReceived(ctx context.Context, message *plugin.DingTalkPluginMessage) (interface{}, error) {
|
func OnPluginMessageReceived(ctx context.Context, message *plugin.DingTalkPluginMessage) (interface{}, error) {
|
||||||
if message.AbilityKey == "echo" { //可以根据message中的PluginId、PluginVersion、AbilityKey路由到具体一个能力
|
//可以根据message中的PluginId、PluginVersion、AbilityKey路由到具体一个能力
|
||||||
|
if message.AbilityKey == "echo" {
|
||||||
echoRequest := &EchoRequest{}
|
echoRequest := &EchoRequest{}
|
||||||
|
//将数据转换成插件的请求参数
|
||||||
err := message.ParseData(echoRequest)
|
err := message.ParseData(echoRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
//执行插件
|
||||||
echoResponse := Echo(echoRequest)
|
echoResponse := Echo(echoRequest)
|
||||||
return echoResponse, nil
|
return echoResponse, nil
|
||||||
}
|
}
|
||||||
|
|
@ -70,8 +73,8 @@ func main() {
|
||||||
|
|
||||||
logger.SetLogger(logger.NewStdTestLogger())
|
logger.SetLogger(logger.NewStdTestLogger())
|
||||||
|
|
||||||
//cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
|
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
|
||||||
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig("dingfplahibzeqzfudlz", "If8TqLjRXpUuq8vPUdQ4042qRYTaCXaXldYZOJUq8xnCiwrhDYAz5YHxS7l2oPoC")))
|
|
||||||
//注册事件类型的处理函数
|
//注册事件类型的处理函数
|
||||||
cli.RegisterAllEventRouter(OnEventReceived)
|
cli.RegisterAllEventRouter(OnEventReceived)
|
||||||
//注册callback类型的处理函数
|
//注册callback类型的处理函数
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,12 @@ type DingTalkPluginMessage struct {
|
||||||
RequestId string `json:"requestId"`
|
RequestId string `json:"requestId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (req *DingTalkPluginMessage) ParseData(model interface{}) error {
|
// 用于将数据转换成插件的请求参数
|
||||||
//TO DO 处理异常
|
func (req *DingTalkPluginMessage) ParseData(model interface{}) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
recover()
|
if e := recover(); e != nil {
|
||||||
|
err = errors.New(fmt.Sprintf("parse data error: %v", e))
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
m, ok := req.Data.(map[string]interface{})
|
m, ok := req.Data.(map[string]interface{})
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue