mirror of https://github.com/chaitin/PandaWiki.git
48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package usecase
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/silenceper/wechat/v2/officialaccount"
|
|
offMessage "github.com/silenceper/wechat/v2/officialaccount/message"
|
|
|
|
"github.com/chaitin/panda-wiki/domain"
|
|
"github.com/chaitin/panda-wiki/log"
|
|
"github.com/chaitin/panda-wiki/pkg/bot/wechat_official_account"
|
|
)
|
|
|
|
func (u *AppUsecase) GetWechatOfficialAccountResponse(ctx context.Context, oa *officialaccount.OfficialAccount, KbID, openID, content string) (string, error) {
|
|
// 需要权限
|
|
userinfo, err := oa.GetUser().GetUserInfo(openID)
|
|
if err != nil {
|
|
u.logger.Error("GetUserInfo failed", log.Error(err))
|
|
}
|
|
u.logger.Info("userinfo", log.Any("userinfo", userinfo))
|
|
|
|
// use ai--> 并且传递用户消息
|
|
getQA := u.getQAFunc(KbID, domain.AppTypeWechatOfficialAccount)
|
|
|
|
// 发送消息给用户
|
|
result, err := wechat_official_account.Wechat(ctx, getQA, userinfo, content)
|
|
if err != nil {
|
|
u.logger.Error("wp wechat failed", log.Error(err))
|
|
return "", err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// oa: 微信公众号实例
|
|
// openID: 用户的 OpenID
|
|
// content: 要发送的文本消息内容
|
|
func (u *AppUsecase) SendCustomerServiceMessage(oa *officialaccount.OfficialAccount, openID, content string) error {
|
|
msg := offMessage.NewCustomerTextMessage(openID, content)
|
|
// send to user
|
|
err := oa.GetCustomerMessageManager().Send(msg)
|
|
if err != nil {
|
|
return fmt.Errorf("发送用户消息失败到 %s: %w", openID, err)
|
|
}
|
|
u.logger.Info("成功发送给用户消息", log.String("content", content))
|
|
return nil
|
|
}
|