chore: ⬆️ dingtalk-stream-sdk-go 依赖版本升级

This commit is contained in:
eryajf
2023-06-11 16:17:06 +08:00
parent c4a769328a
commit f69ae374d1
5 changed files with 25 additions and 146 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ require (
github.com/gin-gonic/gin v1.9.0
github.com/glebarez/sqlite v1.7.0
github.com/go-resty/resty/v2 v2.7.0
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.1
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.4
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/sashabaranov/go-openai v1.6.1
github.com/solywsh/chatgpt v0.0.14
+2 -2
View File
@@ -101,8 +101,8 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs=
github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ=
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.1 h1:F7c4ZWg5FuL0giOVg0slzPmYLwbuQqTjsu5BkUL6VEU=
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.1/go.mod h1:ln3IqPYYocZbYvl9TAOrG/cxGR9xcn4pnZRLdCTEGEU=
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.4 h1:34Ox70UZ+7TIg3Qho1QqQOUtRTo8eO3f8XYE+P27PiQ=
github.com/open-dingtalk/dingtalk-stream-sdk-go v0.0.4/go.mod h1:ln3IqPYYocZbYvl9TAOrG/cxGR9xcn4pnZRLdCTEGEU=
github.com/pandodao/tokenizer-go v0.2.0 h1:NhfI8fGvQkDld2cZCag6NEU3pJ/ugU9zoY1R/zi9YCs=
github.com/pandodao/tokenizer-go v0.2.0/go.mod h1:t6qFbaleKxbv0KNio2XUN/mfGM5WKv4haPXDQWVDG00=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
+22 -23
View File
@@ -16,15 +16,15 @@ import (
"github.com/gin-gonic/gin"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/chatbot"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/client"
loger "github.com/open-dingtalk/dingtalk-stream-sdk-go/logger"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/payload"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/utils"
)
func init() {
// 初始化加载配置,数据库,模板等
public.InitSvc()
// 指定日志等级
logger.InitLogger(public.Config.LogLevel)
}
func main() {
if public.Config.RunMode == "http" {
StartHttp()
@@ -32,28 +32,11 @@ func main() {
for _, credential := range public.Config.Credentials {
StartStream(credential.ClientID, credential.ClientSecret)
}
logger.Info("🚀 The Server Is Running On Stream Mode")
select {}
}
}
// 启动为 stream 模式
func StartStream(clientId, clientSecret string) {
receiver := NewChatReceiver(clientId, clientSecret)
loger.SetLogger(loger.NewStdTestLogger())
cli := client.NewStreamClient(
client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)),
client.WithUserAgent(client.NewDingtalkGoSDKUserAgent()),
client.WithSubscription(utils.SubscriptionTypeKCallback, payload.BotMessageCallbackTopic, chatbot.NewDefaultChatBotFrameHandler(receiver.OnChatReceive).OnEventReceived),
)
err := cli.Start(context.Background())
if err != nil {
panic(err)
}
defer cli.Close()
}
type ChatReceiver struct {
clientId string
clientSecret string
@@ -66,7 +49,23 @@ func NewChatReceiver(clientId, clientSecret string) *ChatReceiver {
}
}
func (r *ChatReceiver) OnChatReceive(ctx context.Context, data *chatbot.BotCallbackDataModel) (err error) {
// 启动为 stream 模式
func StartStream(clientId, clientSecret string) {
receiver := NewChatReceiver(clientId, clientSecret)
cli := client.NewStreamClient(client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)))
//注册callback类型的处理函数
cli.RegisterChatBotCallbackRouter(receiver.OnChatBotMessageReceived)
err := cli.Start(context.Background())
if err != nil {
logger.Fatal("strar stream failed: %v\n", err)
}
defer cli.Close()
}
// OnChatBotMessageReceived 简单的应答机器人实现
func (r *ChatReceiver) OnChatBotMessageReceived(ctx context.Context, data *chatbot.BotCallbackDataModel) ([]byte, error) {
msgObj := dingbot.ReceiveMsg{
ConversationID: data.ConversationId,
AtUsers: []struct {
@@ -93,7 +92,7 @@ func (r *ChatReceiver) OnChatReceive(ctx context.Context, data *chatbot.BotCallb
c.Set(public.DingTalkClientIdKeyName, clientId)
DoRequest(msgObj, &c)
return nil
return []byte(""), nil
}
func StartHttp() {
-84
View File
@@ -1,84 +0,0 @@
package public
import (
"bytes"
"context"
"encoding/json"
"fmt"
"net/http"
"time"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/chatbot"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/client"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/logger"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/payload"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/utils"
)
/**
* @Author linya.jj
* @Date 2023/3/22 18:30
*/
func OnBotCallback(ctx context.Context, df *payload.DataFrame) (*payload.DataFrameResponse, error) {
frameResp := &payload.DataFrameResponse{
Code: 200,
Headers: payload.DataFrameHeader{
payload.DataFrameHeaderKContentType: payload.DataFrameContentTypeKJson,
payload.DataFrameHeaderKMessageId: df.GetMessageId(),
},
Message: "ok",
Data: "",
}
return frameResp, nil
}
func OnChatReceive(ctx context.Context, data *chatbot.BotCallbackDataModel) error {
requestBody := map[string]interface{}{
"msgtype": "text",
"text": map[string]interface{}{
"content": fmt.Sprintf("msg received: [%s]", data.Text.Content),
},
}
requestJsonBody, _ := json.Marshal(requestBody)
req, err := http.NewRequestWithContext(ctx, http.MethodPost, data.SessionWebhook, bytes.NewReader(requestJsonBody))
if err != nil {
return err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "*/*")
httpClient := &http.Client{
Transport: http.DefaultTransport,
Timeout: 5 * time.Second, //设置超时,包含connection时间、任意重定向时间、读取response body时间
}
_, err = httpClient.Do(req)
if err != nil {
return err
}
return nil
}
func RunBotListener(clientId, clientSecret string) {
logger.SetLogger(logger.NewStdTestLogger())
cli := client.NewStreamClient(
client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)),
client.WithUserAgent(client.NewDingtalkGoSDKUserAgent()),
client.WithSubscription(utils.SubscriptionTypeKCallback, payload.BotMessageCallbackTopic, chatbot.NewDefaultChatBotFrameHandler(OnChatReceive).OnEventReceived),
)
err := cli.Start(context.Background())
if err != nil {
panic(err)
}
defer cli.Close()
select {}
}
-36
View File
@@ -1,36 +0,0 @@
package public
import (
"context"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/client"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/event"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/logger"
"github.com/open-dingtalk/dingtalk-stream-sdk-go/utils"
)
/**
* @Author linya.jj
* @Date 2023/3/22 18:30
*/
func RunEventListener(clientId, clientSecret string) {
logger.SetLogger(logger.NewStdTestLogger())
eventHandler := event.NewDefaultEventFrameHandler(event.EventHandlerDoNothing)
cli := client.NewStreamClient(
client.WithAppCredential(client.NewAppCredentialConfig(clientId, clientSecret)),
client.WithUserAgent(client.NewDingtalkGoSDKUserAgent()),
client.WithSubscription(utils.SubscriptionTypeKEvent, "*", eventHandler.OnEventReceived),
)
err := cli.Start(context.Background())
if err != nil {
panic(err)
}
defer cli.Close()
select {}
}