2017-06-04 59 views
0

當GRPC調用「embeddedassistant.googleapis.com」時,服務器不迴應。當我檢查Google API網絡界面時,我看到在google服務器端收到的請求。 我設置了正確的配置請求(當我設置錯誤的配置,我得到服務器的錯誤信息)。有什麼我在這裏失蹤?谷歌助理gRPC呼叫掛起

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

你有沒有看看這個雙向流GRPC例如:https://github.com/grpc/grpc/blob/v1.3.2/ examples/cpp/route_guide/route_guide_client.cc#L169,它適用於不同的API,但它可以幫助您找出控制流。 – proppy

回答

0

爲什麼要將conversation_state設置爲「a」。它應該是字節或空的。您還需要發送根據情況捕獲的音頻數據。您可以通過在代碼中使用C++包含ALSA聲音API來實現這一點。

在之前的ConverseResponse中返回的conversation_state值。如果之前沒有ConverseResponse,請忽略(不要設置字段)。如果之前有ConverseResponse,請不要忽略此字段;這樣做會結束該對話(並且這個新請求將開始新的對話)。

你可以從這裏看到: - https://developers.google.com/assistant/sdk/reference/rpc/google.assistant.embedded.v1alpha1