From 0845d43d4682c52ac574f1c55f30f1606cd08a24 Mon Sep 17 00:00:00 2001 From: weiming wu Date: Thu, 10 Aug 2023 15:28:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0stream=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E5=92=8C?= =?UTF-8?q?example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/echo_service.go | 1 + example/example.go | 9 ++++++--- plugin/model.go | 8 +++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/example/echo_service.go b/example/echo_service.go index 74f657a..c22c499 100644 --- a/example/echo_service.go +++ b/example/echo_service.go @@ -1,5 +1,6 @@ package main +// 插件例子 type EchoRequest struct { Message string } diff --git a/example/example.go b/example/example.go index d06743d..accc50b 100644 --- a/example/example.go +++ b/example/example.go @@ -30,12 +30,15 @@ func OnChatBotMessageReceived(ctx context.Context, data *chatbot.BotCallbackData // 简单的插件处理实现 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{} + //将数据转换成插件的请求参数 err := message.ParseData(echoRequest) if err != nil { return nil, err } + //执行插件 echoResponse := Echo(echoRequest) return echoResponse, nil } @@ -70,8 +73,8 @@ func main() { logger.SetLogger(logger.NewStdTestLogger()) - //cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret))) - cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig("dingfplahibzeqzfudlz", "If8TqLjRXpUuq8vPUdQ4042qRYTaCXaXldYZOJUq8xnCiwrhDYAz5YHxS7l2oPoC"))) + cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret))) + //注册事件类型的处理函数 cli.RegisterAllEventRouter(OnEventReceived) //注册callback类型的处理函数 diff --git a/plugin/model.go b/plugin/model.go index 9eeab80..399489f 100644 --- a/plugin/model.go +++ b/plugin/model.go @@ -14,10 +14,12 @@ type DingTalkPluginMessage struct { RequestId string `json:"requestId"` } -func (req *DingTalkPluginMessage) ParseData(model interface{}) error { - //TO DO 处理异常 +// 用于将数据转换成插件的请求参数 +func (req *DingTalkPluginMessage) ParseData(model interface{}) (err error) { 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{}) if !ok {