1
1
# lark-hertz (This is a community driven project)
2
2
3
+ an [ oapi-sdk-go] ( https://github.com/larksuite/oapi-sdk-go ) extension package that integrates the hertz web framework
4
+
3
5
## Installation
4
6
5
7
``` bash
@@ -15,43 +17,52 @@ import (
15
17
" context"
16
18
" fmt"
17
19
18
- " github.com/chyroc/lark"
19
20
" github.com/cloudwego/hertz/pkg/app/server"
20
- " github.com/hertz-contrib/lark-hertz"
21
+ lark_hertz " github.com/hertz-contrib/lark-hertz"
22
+ larkcard " github.com/larksuite/oapi-sdk-go/v3/card"
23
+ larkcore " github.com/larksuite/oapi-sdk-go/v3/core"
24
+ " github.com/larksuite/oapi-sdk-go/v3/event/dispatcher"
25
+ larkcontact " github.com/larksuite/oapi-sdk-go/v3/service/contact/v3"
26
+ larkim " github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
21
27
)
22
-
23
28
func main () {
24
- // 1: init lark client
25
- larkCli := lark.New (
26
- lark.WithAppCredential (" " , " " ),
27
- lark.WithEventCallbackVerify (" " , " " ),
28
- )
29
-
30
- // 2: register lark msg callback login
31
- // handle text, file, image and send response
32
- larkCli.EventCallback .HandlerEventV2IMMessageReceiveV1 (func (ctx context.Context , cli *lark.Lark , schema string , header *lark.EventHeaderV2 , event *lark.EventV2IMMessageReceiveV1 ) (string , error ) {
33
- content , err := lark.UnwrapMessageContent (event.Message .MessageType , event.Message .Content )
34
- if err != nil {
35
- return " " , err
36
- }
37
- switch event.Message .MessageType {
38
- case lark.MsgTypeText :
39
- _, _, err = cli.Message .Reply (event.Message .MessageID ).SendText (ctx, fmt.Sprintf (" got text: %s " , content.Text .Text ))
40
- case lark.MsgTypeFile :
41
- _, _, err = cli.Message .Reply (event.Message .MessageID ).SendText (ctx, fmt.Sprintf (" got file: %s , key: %s " , content.File .FileName , content.File .FileKey ))
42
- case lark.MsgTypeImage :
43
- _, _, err = cli.Message .Reply (event.Message .MessageID ).SendText (ctx, fmt.Sprintf (" got image: %s " , content.Image .ImageKey ))
44
- }
45
- return " " , err
29
+ // create event handler
30
+ handler := dispatcher.NewEventDispatcher (" v" , " 1212121212" ).OnP2MessageReceiveV1 (func (ctx context.Context , event *larkim.P2MessageReceiveV1 ) error {
31
+ fmt.Println (larkcore.Prettify (event))
32
+ fmt.Println (event.RequestId ())
33
+ return nil
34
+ }).OnP2MessageReadV1 (func (ctx context.Context , event *larkim.P2MessageReadV1 ) error {
35
+ fmt.Println (larkcore.Prettify (event))
36
+ fmt.Println (event.RequestId ())
37
+ return nil
38
+ }).OnP2UserCreatedV3 (func (ctx context.Context , event *larkcontact.P2UserCreatedV3 ) error {
39
+ fmt.Println (larkcore.Prettify (event))
40
+ fmt.Println (event.RequestId ())
41
+ return nil
46
42
})
47
43
48
- // 3: init hertz server
49
- h := server. Default ()
50
- h. POST ( " /api/lark_callback " , lark_hertz. ListenCallback (larkCli, lark_hertz. WithIgnoreCheckSignature ( true ) ))
44
+ // create card action handler.
45
+ cardHandler := larkcard. NewCardActionHandler ( " v " , " " , func (ctx context. Context , cardAction *larkcard. CardAction ) ( interface {}, error ) {
46
+ fmt. Println (larkcore. Prettify (cardAction ))
51
47
52
- h.Spin ()
48
+ // return card
49
+ // return getCard(),nil
53
50
54
- // 4: deploy server to cloud, and set lark callback url to `<host>/api/lark_callback`
51
+ // return custom resp
52
+ // return getCustomResp(),nil
53
+
54
+ // return nil
55
+ return nil , nil
56
+ })
57
+
58
+ // register handler
59
+ h := server.Default (server.WithHostPorts (" :9999" ))
60
+
61
+ h.POST (" /webhook/event" , lark_hertz.NewEventHandlerFunc (handler))
62
+ h.POST (" /webhook/card" , lark_hertz.NewCardActionHandlerFunc (cardHandler))
63
+
64
+ // start server
65
+ h.Spin ()
55
66
}
56
67
```
57
68
0 commit comments