MCPcopy Create free account
hub / github.com/bytebase/bytebase / sendMessage

Method sendMessage

backend/plugin/webhook/feishu/app.go:240–270  ·  view source on GitHub ↗

https://open.feishu.cn/document/server-docs/im-v1/message/create

(ctx context.Context, userID string, messageCard *WebhookCard)

Source from the content-addressed store, hash-verified

238
239// https://open.feishu.cn/document/server-docs/im-v1/message/create
240func (p *provider) sendMessage(ctx context.Context, userID string, messageCard *WebhookCard) error {
241 const url = "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id"
242 content, err := json.Marshal(messageCard)
243 if err != nil {
244 return errors.Wrapf(err, "failed to marshal message card")
245 }
246 data := sendMessageRequest{
247 ReceiveID: userID,
248 MsgType: "interactive",
249 Content: string(content),
250 }
251 bytes, err := json.Marshal(data)
252 if err != nil {
253 return errors.Wrapf(err, "failed to marshal payload")
254 }
255 body, err := p.do(ctx, http.MethodPost, url, bytes)
256 if err != nil {
257 return errors.Wrapf(err, "failed to do send message request")
258 }
259
260 var resp generalResponse
261 if err := json.Unmarshal(body, &resp); err != nil {
262 return errors.Wrapf(err, "failed to unmarshal response")
263 }
264
265 if resp.Code != 0 {
266 return errors.Errorf("failed to send message, code %d, msg %q", resp.Code, resp.Msg)
267 }
268
269 return nil
270}
271
272const maxRetries = 3
273

Callers 1

postDirectMessageFunction · 0.45

Calls 3

doMethod · 0.95
UnmarshalMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected