package immoderation import ( "context" "encoding/json" "errors" "strings" "time" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" green "github.com/alibabacloud-go/green-20220302/v3/client" "github.com/alibabacloud-go/tea/dara" ) type AliyunConfig struct { AccessKeyID string AccessKeySecret string RegionID string Endpoint string Service string Timeout time.Duration } type CheckResult struct { RequestID string Latency time.Duration } func CheckAliyunText(ctx context.Context, config AliyunConfig) (*CheckResult, error) { if strings.TrimSpace(config.AccessKeyID) == "" || strings.TrimSpace(config.AccessKeySecret) == "" { return nil, errors.New("AccessKey ID或AccessKey Secret未配置") } clientConfig := &openapi.Config{AccessKeyId: dara.String(config.AccessKeyID), AccessKeySecret: dara.String(config.AccessKeySecret), RegionId: dara.String(config.RegionID), Protocol: dara.String("https")} if endpoint := strings.TrimSpace(config.Endpoint); endpoint != "" { clientConfig.Endpoint = dara.String(endpoint) } client, err := green.NewClient(clientConfig) if err != nil { return nil, err } if config.Timeout <= 0 { config.Timeout = 1500 * time.Millisecond } ctx, cancel := context.WithTimeout(ctx, config.Timeout) defer cancel() params, _ := json.Marshal(map[string]string{"content": "内容审核连通性测试", "dataId": "admin-config-check"}) started := time.Now() resp, err := client.TextModerationPlusWithContext(ctx, &green.TextModerationPlusRequest{Service: dara.String(config.Service), ServiceParameters: dara.String(string(params))}, &dara.RuntimeOptions{}) latency := time.Since(started) if err != nil { return nil, err } if resp == nil || resp.Body == nil || dara.Int32Value(resp.Body.Code) != 200 { return nil, errors.New("阿里云内容审核返回失败") } return &CheckResult{RequestID: dara.StringValue(resp.Body.RequestId), Latency: latency}, nil }