gpt4 book ai didi

swift - 如何验证 Assistant SDK 的 gRPC 调用?

转载 作者:搜寻专家 更新时间:2023-10-31 22:42:32 24 4
gpt4 key购买 nike

我正在使用 Swift gRPC 库(奇怪的是它没有在 gRPC 的网站上列出,但有一个 GitHub repo 用于它)来构建适用于 macOS 的 Google Assistant SDK 的实现。我已经获得了我的 OAuth2 凭据和 token ,并且正在尝试发出开始对话的初始请求,但是它没有这样做。

我总是收到错误 Google_Assistant_Embedded_V1Alpha1_EmbeddedAssistantClientError error 1.)gRPC.CallError error 1.

我运行 Wireshark 来尝试调试问题,我看到我的计算机正在尝试建立连接,但最终终止了连接。我认为这可能是由于 TLS 问题,但我不确定是否确实如此或如何解决。

我注意到服务初始化函数有一个重载,您可以在其中指定证书,但我不知道该放什么(或者是否需要使用该函数)

typealias AssistantService = Google_Assistant_Embedded_V1Alpha1_EmbeddedAssistantService
typealias AssistantCall = Google_Assistant_Embedded_V1Alpha1_EmbeddedAssistantConverseCall
typealias AudioInConfig = Google_Assistant_Embedded_V1alpha1_AudioInConfig
typealias AudioOutConfig = Google_Assistant_Embedded_V1alpha1_AudioOutConfig
typealias ConverseRequest = Google_Assistant_Embedded_V1alpha1_ConverseRequest
typealias ConverseConfig = Google_Assistant_Embedded_V1alpha1_ConverseConfig

var service: AssistantService?
var currentCall: AssistantCall?

public init() {
service = AssistantService(address: Constants.ASSISTANT_API_ENDPOINT)
let token = "Bearer \(UserDefaults.standard.string(forKey: Constants.AUTH_TOKEN_KEY)!)"
service?.metadata = Metadata(["authorization" : token])
}

func initiateRequest() {
var request = ConverseRequest()
request.config = ConverseConfig()

var audioInConfig = AudioInConfig()
audioInConfig.sampleRateHertz = 16000
audioInConfig.encoding = .linear16
request.config.audioInConfig = audioInConfig


var audioOutConfig = AudioOutConfig()
audioOutConfig.sampleRateHertz = 16000
audioOutConfig.encoding = .linear16
audioOutConfig.volumePercentage = 50
request.config.audioOutConfig = audioOutConfig

do {
currentCall = try service?.converse(completion: { result in
print("Result code \(result.statusCode)")
print("Result description \(result.description)")
print("Metadata \(String(describing: result.initialMetadata))")
print("Status message \(result.statusMessage ?? "Error")")
print("Obj description \(String(describing: result))")
print("result \(result)")
})

try currentCall?.send(request) { err in
print("Error in initial request: \(err)")
}
} catch {
print("Initial error \(error)")
}
}

这就是它的 Wireshark 的样子,如果有帮助的话: enter image description here

最佳答案

我必须添加找到的 roots.pem 文件 here到我的项目并按如下方式使用它:

let u = Bundle.main.url(forResource: "roots", withExtension: "pem")!
let certificate = try! String(contentsOf: u)
let token = "Bearer \(UserDefaults.standard.string(forKey: Constants.AUTH_TOKEN_KEY)!)"
service = AssistantService(address: Constants.ASSISTANT_API_ENDPOINT, certificates: certificate, host: nil)
service?.metadata = Metadata(["authorization" : token])

关于swift - 如何验证 Assistant SDK 的 gRPC 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43797913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com