mod_rayo: fix record complete URI when recording to HTTP
This commit is contained in:
parent
53307c8f35
commit
6a842ab21d
|
@ -85,22 +85,23 @@ static void complete_record(struct rayo_component *component, const char *reason
|
||||||
{
|
{
|
||||||
switch_core_session_t *session = NULL;
|
switch_core_session_t *session = NULL;
|
||||||
const char *uuid = component->parent->id;
|
const char *uuid = component->parent->id;
|
||||||
char *uri = switch_mprintf("file://%s", RECORD_COMPONENT(component)->local_file_path);
|
const char *uri = RECORD_COMPONENT(component)->local_file_path;
|
||||||
iks *recording;
|
iks *recording;
|
||||||
switch_size_t file_size = 0;
|
switch_size_t file_size = 0;
|
||||||
/* TODO this doesn't work with HTTP */
|
|
||||||
|
/* TODO this doesn't work with HTTP, improve core RECORD_STOP event so that file size and duration is reported */
|
||||||
#if 0
|
#if 0
|
||||||
switch_file_t *file;
|
switch_file_t *file;
|
||||||
|
|
||||||
if (switch_file_open(&file, RECORD_COMPONENT(component)->local_file_path, SWITCH_FOPEN_READ, SWITCH_FPROT_UREAD, RAYO_POOL(component)) == SWITCH_STATUS_SUCCESS) {
|
if (switch_file_open(&file, uri, SWITCH_FOPEN_READ, SWITCH_FPROT_UREAD, RAYO_POOL(component)) == SWITCH_STATUS_SUCCESS) {
|
||||||
file_size = switch_file_get_size(file);
|
file_size = switch_file_get_size(file);
|
||||||
switch_file_close(file);
|
switch_file_close(file);
|
||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_INFO, "Failed to open %s.\n", RECORD_COMPONENT(component)->local_file_path);
|
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_INFO, "Failed to open %s.\n", uri);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "Recording %s done.\n", RECORD_COMPONENT(component)->local_file_path);
|
switch_log_printf(SWITCH_CHANNEL_UUID_LOG(uuid), SWITCH_LOG_DEBUG, "Recording %s done.\n", uri);
|
||||||
|
|
||||||
if (RECORD_COMPONENT(component)->stop_beep && (session = switch_core_session_locate(uuid))) {
|
if (RECORD_COMPONENT(component)->stop_beep && (session = switch_core_session_locate(uuid))) {
|
||||||
switch_ivr_displace_session(session, RECORD_BEEP, 0, "");
|
switch_ivr_displace_session(session, RECORD_BEEP, 0, "");
|
||||||
|
@ -110,15 +111,19 @@ static void complete_record(struct rayo_component *component, const char *reason
|
||||||
/* send complete event to client */
|
/* send complete event to client */
|
||||||
recording = iks_new("recording");
|
recording = iks_new("recording");
|
||||||
iks_insert_attrib(recording, "xmlns", RAYO_RECORD_COMPLETE_NS);
|
iks_insert_attrib(recording, "xmlns", RAYO_RECORD_COMPLETE_NS);
|
||||||
iks_insert_attrib(recording, "uri", uri);
|
if (strlen(uri) > strlen(SWITCH_PATH_SEPARATOR) && !strncmp(uri, SWITCH_PATH_SEPARATOR, strlen(SWITCH_PATH_SEPARATOR))) {
|
||||||
|
/* convert absolute path to file:// URI */
|
||||||
|
iks_insert_attrib_printf(recording, "uri", "file://%s", uri);
|
||||||
|
} else {
|
||||||
|
/* is already a URI (hopefully) */
|
||||||
|
iks_insert_attrib(recording, "uri", uri);
|
||||||
|
}
|
||||||
iks_insert_attrib_printf(recording, "duration", "%i", RECORD_COMPONENT(component)->duration_ms);
|
iks_insert_attrib_printf(recording, "duration", "%i", RECORD_COMPONENT(component)->duration_ms);
|
||||||
iks_insert_attrib_printf(recording, "size", "%"SWITCH_SIZE_T_FMT, file_size);
|
iks_insert_attrib_printf(recording, "size", "%"SWITCH_SIZE_T_FMT, file_size);
|
||||||
rayo_component_send_complete_with_metadata(component, reason, reason_namespace, recording, 1);
|
rayo_component_send_complete_with_metadata(component, reason, reason_namespace, recording, 1);
|
||||||
iks_delete(recording);
|
iks_delete(recording);
|
||||||
|
|
||||||
RAYO_UNLOCK(component);
|
RAYO_UNLOCK(component);
|
||||||
|
|
||||||
switch_safe_free(uri);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue