1 Star 0 Fork 0

科大讯飞/ase-sdk-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

ase-sdk-go

Installation

go get github.com/iflytek/ase-sdk-go

Usage

非流式

package main

import (
	"fmt"
	"time"

	"github.com/iflytek/ase-sdk-go"
)

func main() {
	cli, err := ase.NewClient(
		"appid",
		"apikey",
		"secret",
		"host",
		"/example",
		ase.WithOnceTimeout(time.Second*3),
		ase.WithOnceRetryCount(3),
		ase.WithTLS(),
	)
	if err != nil {
		panic(err)
	}

	headers := ase.RequestHeader{}
	headers.SetAppID(appid)
	headers.SetStatus(ase.StatusForOnce)
	
	req := new(ase.Request)
	req.SetHeaders(headers)
	req.SetParameters(map[string]interface{}{})
	req.SetPayloads(map[string]interface{}{})

	resp, err := cli.Once(req)
	if err != nil {
		panic(err)
	}

	fmt.Printf("response: %s\n", string(resp))
}

流式

package main

import (
	"encoding/json"
	"sync"
	"time"

	ase "github.com/iflytek/ase-sdk-go"
)

func main() {
	cli, err := ase.NewClient(
		"appid",
		"apikey",
		"secret",
		"host",
		"/example",
		ase.WithTLS(),
		ase.WithStreamReadTimeout(time.Second*5),
		ase.WithStreamWriteTimeout(time.Second*5),
	)
	if err != nil {
		panic(err)
	}

	var wg sync.WaitGroup
	wg.Add(1)
	go func() {
		defer wg.Done()
		
		for {
			msg, err := cli.Receive()
			if err != nil {
				panic(err)
			}

			var resp ase.Resp
			if err = json.Unmarshal(msg, &resp); err != nil {
				panic(err)
			}

			if resp.Header.Status == ase.StatusLastFrame {
				_ = cli.Destroy()
				return
			}	
        }
	}()

	// mock inputs
	for i := 0; i < 100; i++ {
		var status int
		if i == 0 {
			status = ase.StatusFirstFrame
		} else if i == 99 {
			status = ase.StatusLastFrame
		} else {
			status = ase.StatusContinue
		}

		headers := ase.RequestHeader{}
		headers.SetAppID(appid)
		headers.SetStatus(status)
		
		req := new(ase.Request)
		req.SetHeaders(headers)
		req.SetParameters(map[string]interface{}{})
		req.SetPayloads(map[string]interface{}{})

		if err = cli.Send(req); err != nil {
			panic(err)
		}
	}
	
	wg.Wait()
}


空文件

简介

暂无描述 展开 收起
Go
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/iflytek/ase-sdk-go.git
git@gitee.com:iflytek/ase-sdk-go.git
iflytek
ase-sdk-go
ase-sdk-go
main

搜索帮助