当向" embeddedassistant.googleapis.com"进行GRPC调用时,服务器不会回复。当我查看Google API网络界面时,我看到Google服务器端收到了请求。 我使用正确的配置设置请求(当我设置错误的配置时,我会收到来自服务器的错误消息)。我在这里找不到任何东西?
std::string Converse(const std::string& user) {
AudioInConfig audio_in_config;
audio_in_config.set_encoding(google::assistant::embedded::v1alpha1::AudioInConfig_Encoding_FLAC);
audio_in_config.set_sample_rate_hertz(16000);
AudioOutConfig audio_out_config;
audio_out_config.set_encoding(google::assistant::embedded::v1alpha1::AudioOutConfig_Encoding_MP3);
audio_out_config.set_sample_rate_hertz(16000);
audio_out_config.set_volume_percentage(50);
ConverseState converse_state;
const char * conversation_state = "a";
converse_state.set_conversation_state(conversation_state);
ConverseConfig config;
config.set_allocated_audio_in_config(&audio_in_config);
config.set_allocated_audio_out_config(&audio_out_config);
config.set_allocated_converse_state(&converse_state);
ConverseRequest request;
request.set_allocated_config(&config);
ConverseResponse reply;
ClientContext context;
auto status = stub_->Converse(&context, request, &reply);
config.release_audio_in_config();
config.release_audio_out_config();
config.release_converse_state();
request.release_config();
// Act upon its status.
if (status.ok()) {
return reply.result().conversation_state();
} else {
std::cout << "Error: " << status.error_code() << ": " << status.error_message()
<< std::endl;
return "RPC failed";
}
return "";
}
答案 0 :(得分:0)
为什么要将conversation_state设置为&#34; a&#34;。它应该是以字节为单位或为空。您还需要根据情况发送捕获的音频数据。您可以通过在代码中包含C ++中的ALSA声音API来实现。
先前ConverseResponse中返回的conversation_state值。如果没有先前的ConverseResponse,则忽略(不设置字段)。如果有先前的ConverseResponse,请不要省略此字段;这样做将结束该对话(这个新请求将开始一个新的对话)。
你可以从这里看到: - https://developers.google.com/assistant/sdk/reference/rpc/google.assistant.embedded.v1alpha1