135 lines
3.1 KiB
Go
135 lines
3.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/coze-dev/coze-go"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
token = "pat_3Qryy0Dgo1nA0eZ9CoTlC4GDQECphJcD7ZVWF5iSQ1qXMahca8xeWU08NFv9i8XY"
|
|
api = "https://api.coze.cn"
|
|
)
|
|
|
|
type OutlineResp struct {
|
|
Sections []struct {
|
|
Contents []struct {
|
|
Items []struct {
|
|
Items []string `json:"items"`
|
|
Title string `json:"title"`
|
|
} `json:"items"`
|
|
Subtitle string `json:"subtitle"`
|
|
Title string `json:"title"`
|
|
} `json:"contents"`
|
|
Subtitle string `json:"subtitle"`
|
|
Title string `json:"title"`
|
|
} `json:"sections"`
|
|
Subtitle string `json:"subtitle"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
type ThemeResp struct {
|
|
Data []struct {
|
|
ID int `json:"id"`
|
|
Keywords string `json:"keywords"`
|
|
Thumbnail string `json:"thumbnail"`
|
|
Title string `json:"title"`
|
|
Type string `json:"type"`
|
|
} `json:"data"`
|
|
}
|
|
|
|
type PptResp struct {
|
|
FileUrl string `json:"file_url"`
|
|
}
|
|
|
|
func WorkflowOutline(ctx context.Context, keyword string) (resData OutlineResp, err error) {
|
|
|
|
workflowId := "7514159115984617524"
|
|
auth := coze.NewTokenAuth(token)
|
|
// Init the Coze client through the access_token.
|
|
cozeCli := coze.NewCozeAPI(auth, coze.WithBaseURL(api), coze.WithHttpClient(&http.Client{
|
|
Timeout: time.Second * 5000,
|
|
}))
|
|
|
|
// if your workflow need input params, you can send them by map
|
|
data := map[string]interface{}{
|
|
"keyword": keyword,
|
|
}
|
|
|
|
req := &coze.RunWorkflowsReq{
|
|
WorkflowID: workflowId,
|
|
Parameters: data,
|
|
IsAsync: false,
|
|
}
|
|
|
|
resp, err := cozeCli.Workflows.Runs.Create(ctx, req)
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
json.Unmarshal([]byte(resp.Data), &resData)
|
|
return
|
|
}
|
|
|
|
func WorkflowTheme(ctx context.Context, keyword string) (res ThemeResp, err error) {
|
|
|
|
workflowId := "7514593043828539407"
|
|
auth := coze.NewTokenAuth(token)
|
|
// Init the Coze client through the access_token.
|
|
cozeCli := coze.NewCozeAPI(auth, coze.WithBaseURL(api), coze.WithHttpClient(&http.Client{
|
|
Timeout: time.Second * 5000,
|
|
}))
|
|
|
|
// if your workflow need input params, you can send them by map
|
|
data := map[string]interface{}{
|
|
"keyword": keyword,
|
|
}
|
|
|
|
req := &coze.RunWorkflowsReq{
|
|
WorkflowID: workflowId,
|
|
Parameters: data,
|
|
IsAsync: false,
|
|
}
|
|
|
|
resp, err := cozeCli.Workflows.Runs.Create(ctx, req)
|
|
fmt.Println(resp, req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = json.Unmarshal([]byte(resp.Data), &res)
|
|
return
|
|
}
|
|
|
|
func WorkflowPpt(ctx context.Context, outline string, themeId int) (res PptResp, err error) {
|
|
|
|
workflowId := "7514654025384951820"
|
|
auth := coze.NewTokenAuth(token)
|
|
// Init the Coze client through the access_token.
|
|
cozeCli := coze.NewCozeAPI(auth, coze.WithBaseURL(api), coze.WithHttpClient(&http.Client{
|
|
Timeout: time.Second * 5000,
|
|
}))
|
|
|
|
// if your workflow need input params, you can send them by map
|
|
data := map[string]interface{}{
|
|
"outline": outline,
|
|
"themeId": themeId,
|
|
}
|
|
|
|
req := &coze.RunWorkflowsReq{
|
|
WorkflowID: workflowId,
|
|
Parameters: data,
|
|
IsAsync: false,
|
|
}
|
|
fmt.Println(themeId)
|
|
resp, err := cozeCli.Workflows.Runs.Create(ctx, req)
|
|
fmt.Println(resp, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = json.Unmarshal([]byte(resp.Data), &res)
|
|
return
|
|
}
|