我正在使用 Swift gRPC 库(奇怪的是它没有在 gRPC 的网站上列出,但有一个GitHub存储库)来构建适用于 macOS 的 Google Assistant SDK 的实现。我已经获得了我的 OAuth2 凭据和令牌,并且正在尝试发出初始请求以开始对话,但是它没有这样做。
我总是得到错误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)")
}
}