/** \brief Received MRCP message */ static apt_bool_t on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) { uni_speech_t *uni_speech = mrcp_application_channel_object_get(channel); ast_log(LOG_DEBUG, "On message receive\n"); if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { return uni_recog_mrcp_response_signal(uni_speech,message); } if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { if(message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) { uni_speech->is_inprogress = FALSE; if (uni_speech->speech_base->state != AST_SPEECH_STATE_NOT_READY) { uni_speech->mrcp_event = message; ast_speech_change_state(uni_speech->speech_base,AST_SPEECH_STATE_DONE); } else { uni_speech->mrcp_event = NULL; ast_speech_change_state(uni_speech->speech_base,AST_SPEECH_STATE_NOT_READY); } } else if(message->start_line.method_id == RECOGNIZER_START_OF_INPUT) { ast_set_flag(uni_speech->speech_base,AST_SPEECH_QUIET); } } return TRUE; }
/** \brief Received MRCP message */ static apt_bool_t on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) { uni_speech_t *uni_speech = mrcp_application_channel_object_get(channel); if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { ast_log(LOG_DEBUG, "(%s) Received MRCP response method-id: %d status-code: %d req-state: %d\n", uni_speech->name, (int)message->start_line.method_id, message->start_line.status_code, (int)message->start_line.request_state); return uni_recog_mrcp_response_signal(uni_speech,message); } if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { if(message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) { ast_log(LOG_DEBUG, "(%s) Recognition complete req-state: %d\n", uni_speech->name, (int)message->start_line.request_state); uni_speech->is_inprogress = FALSE; if (uni_speech->speech_base->state != AST_SPEECH_STATE_NOT_READY) { uni_speech->mrcp_event = message; ast_speech_change_state(uni_speech->speech_base,AST_SPEECH_STATE_DONE); } else { ast_log(LOG_DEBUG, "(%s) Unexpected RECOGNITION-COMPLETE event\n",uni_speech->name); } } else if(message->start_line.method_id == RECOGNIZER_START_OF_INPUT) { ast_log(LOG_DEBUG, "(%s) Start of input\n",uni_speech->name); ast_set_flag(uni_speech->speech_base, AST_SPEECH_QUIET | AST_SPEECH_SPOKE); } else { ast_log(LOG_DEBUG, "(%s) Received unhandled MRCP event id: %d req-state: %d\n", uni_speech->name, (int)message->start_line.method_id, (int)message->start_line.request_state); } } return TRUE; }