in lex_common/src/lex_common.cpp [117:157]
ErrorCode LexInteractor::PostContent(
const LexRequest & request,
LexResponse & response)
{
Aws::LexRuntimeService::Model::PostContentRequest post_content_request;
post_content_request.WithBotAlias(lex_configuration_->bot_alias.c_str())
.WithBotName(lex_configuration_->bot_name.c_str())
.WithAccept(request.accept_type.c_str())
.WithUserId(lex_configuration_->user_id.c_str());
post_content_request.SetContentType(request.content_type.c_str());
auto io_stream = Aws::MakeShared<Aws::StringStream>(kAllocationTag);
if (!request.audio_request.empty()) {
std::copy(request.audio_request.begin(),
request.audio_request.end(), std::ostream_iterator<unsigned char>(*io_stream));
} else {
*io_stream << request.text_request;
}
post_content_request.SetBody(io_stream);
AWS_LOGSTREAM_DEBUG(__func__, "PostContentRequest " << post_content_request);
auto post_content_result = lex_runtime_client_->PostContent(post_content_request);
ErrorCode result_code;
if (post_content_result.IsSuccess()) {
auto & result = post_content_result.GetResult();
AWS_LOGSTREAM_DEBUG(__func__, "PostContentResult succeeded: " << result.GetMessage());
result_code = CopyResult(result, response);
} else {
bool is_retryable = post_content_result.GetError().ShouldRetry();
result_code = is_retryable ? RETRY_POST_CONTENT : FAILED_POST_CONTENT;
AWS_LOGSTREAM_ERROR(__func__,
"Aws Lex Error Has Occurred during LexRuntimeService->PostContent" << std::endl <<
"PostContentResult failed: " << std::endl <<
post_content_result.GetError() << std::endl <<
"Request which caused error: " << std::endl <<
post_content_request
);
}
return result_code;
}