';
}
// Same .tc-room skeleton as renderRoomRow (avatar/info/top/bottom) so a group row matches the
// 1:1 rows visually — data-type="group" + data-gid instead of data-cid/data-uid is what the
// click-delegation in renderRooms() switches on. No online/typing indicator (doesn't apply to
// a group), and the avatar is a rounded square instead of a circle as the only visual cue
// distinguishing a group from a person, mirroring common chat-app convention.
function renderGroupRow(group) {
var gid = group.gid;
var name = group.name || '';
var lastMsg = group.lastMessage;
var preview = '';
if (lastMsg) {
preview = parseDisplayText(lastMsg.msm);
if (!preview) {
if (lastMsg.urlima && lastMsg.urlima.indexOf('public://') >= 0) preview = '📷';
else if (lastMsg.urlaudi && lastMsg.urlaudi.indexOf('public://') >= 0) preview = '🎵';
}
if (String(lastMsg.whosend) === String(userId)) preview = 'You: ' + preview;
} else {
preview = 'No messages yet';
}
var timeStr = group.updated ? fmtTime(unixToDbTimestamp(group.updated)) : '';
var unread = group.unreadCount > 0;
var active = activeGid === gid;
return '
';
}
var body = '';
if (msg.urlima === '_loading_') {
body += '
📷 Sending…
';
} else if (msg.urlima && msg.urlima.indexOf('public://') >= 0) {
var src = msg.urlima.replace('public://', FILES_BASE);
body += '';
}
if (msg.urlaudi && msg.urlaudi.indexOf('public://') >= 0) {
var asrc = msg.urlaudi.replace('public://', FILES_BASE);
body += '';
}
if (meta && meta.type === 'loc') {
body += locationLinkHtml(meta.lat, meta.lng);
} else if (!isSalt && text) {
body += '
' + linkifyText(escHtml(text)) + '
';
}
var time = fmtTime(msg.timestamp || '');
return '
'
+ metaHtml + body
+ '' + escHtml(time) + ''
+ '
';
}
// ── Render group messages ────────────────────────────────────────────────────
function renderGroupMessages(gid) {
var msgs = allGroupMsgs[gid] || [];
var $el = $('#tc-msgs');
var order = msgs.slice().reverse();
$el.html(order.map(renderGroupMsg).join(''));
$el.scrollTop($el[0].scrollHeight);
}
// Same shape as renderMsg(), plus a sender-name label on incoming bubbles — unlike a 1:1
// conversation, "not me" doesn't tell you who actually sent it. Reuses the identical
// urlima/urlaudi rendering, so images/audio sent from the Android app (or sendGroupImage()
// here) display correctly. Audio still has no send control in this web widget.
function renderGroupMsg(msg) {
var isMe = String(msg.whosend) === String(userId);
var side = isMe ? 'tc-out' : 'tc-in';
var parsed = parseInlineMeta(msg.msm || '');
var text = parsed.text;
var meta = parsed.meta;
var isSalt = (text.length === 18 && text.indexOf(' ') < 0);
var senderHtml = '';
if (!isMe) {
senderHtml = '
' + escHtml(msg.senderName || msg.whosend) + '
';
}
var metaHtml = '';
if (meta && meta.type === 'fwd') {
metaHtml = '
';
}
// ── Send (opc 11) ────────────────────────────────────────────────────────────
function sendMessage() {
var text = $.trim($('#tc-input').val());
if (!text || !activeCid) return;
$('#tc-input').val('').focus();
isTyping = false;
post({ opc: '11', userid: userId, cid: activeCid, msm: text, fid: '0' })
.then(function (resp) {
if (!resp) return;
var ok = (resp.resp === 3 || resp.resp === '3' ||
resp.resp === 11 || resp.resp === '11');
if (!ok) return;
var msg = {
id: resp.lastmid || String(Date.now()),
whosend: String(userId),
msm: text,
urlima: '',
urlaudi: '',
timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
};
if (!allMsgs[activeCid]) allMsgs[activeCid] = [];
allMsgs[activeCid].unshift(msg);
renderMessages(activeCid);
if (socket && socket.connected) {
socket.emit('send-message', {
id: resp.lastmid,
chatId: activeCid,
from: String(userId),
to: String(activeUid),
message: text,
type: 'text'
});
}
});
}
// ── Send group message ───────────────────────────────────────────────────────
// Purely socket-based — group-message-send both persists (tc_group_message, via the
// signaling server) and delivers, unlike 1:1's HTTP-then-socket-notify split. The server
// echoes the message back to the sender too (see group-message-send in signaling-server-2.js),
// so onGroupSocketMessage() is what actually appends it here — no optimistic local insert.
function sendGroupMessage() {
var text = $.trim($('#tc-input').val());
if (!text || !activeGid) return;
if (!socket || !socket.connected) return;
$('#tc-input').val('').focus();
isTyping = false;
socket.emit('group-message-send', {
gid: parseInt(activeGid, 10),
from: userId,
message: text,
type: 'text',
localId: 'web-' + Date.now() + '-' + Math.random().toString(36).substr(2, 8)
});
}
// ── Send group image (group-message-send, type:"image") ─────────────────────
// Unlike 1:1 (HTTP upload then socket notify), groups have no HTTP upload endpoint —
// the server expects the raw file as a base64 string on the same socket event used for
// text (see group-message-send in signaling-server-2.js), and does its own resize/compress
// (sharp, 1024x1024 max, jpeg75) server-side before writing it and echoing "group-message"
// back to every member including the sender. That echo is what onGroupSocketMessage() uses
// to both confirm this optimistic placeholder (matched by localId) and actually display it.
function sendGroupImage(file) {
if (!activeGid) return;
if (!socket || !socket.connected) return;
if (pendingGroupImage) return; // one at a time — button is disabled meanwhile anyway
var gid = activeGid;
var localId = 'web-img-' + Date.now() + '-' + Math.random().toString(36).substr(2, 8);
pendingGroupImage = { gid: gid, localId: localId };
if (!allGroupMsgs[gid]) allGroupMsgs[gid] = [];
allGroupMsgs[gid].unshift({
id: localId, localId: localId, whosend: String(userId), senderName: myName,
msm: '', urlima: '_loading_', urlaudi: '', created: Math.floor(Date.now() / 1000)
});
renderGroupMessages(gid);
$('#tc-img-btn').attr('disabled', 'disabled');
// Safety net — if the server/socket never answers at all (disconnect mid-flight etc.),
// don't leave "Sending…" stuck forever (see the 1:1 image-send bug this mirrors).
var timeoutId = setTimeout(function () { onGroupMessageError({}); }, 20000);
compressImageIfNeeded(file, function (uploadFile) {
var reader = new FileReader();
reader.onload = function () {
clearTimeout(timeoutId);
if (!pendingGroupImage || pendingGroupImage.localId !== localId) return; // already cleared
var base64 = (reader.result || '').split(',')[1] || '';
if (!base64 || !socket || !socket.connected) { onGroupMessageError({}); return; }
socket.emit('group-message-send', {
gid: parseInt(gid, 10),
from: userId,
message: '',
type: 'image',
filedata: base64,
localId: localId
});
};
reader.onerror = function () {
clearTimeout(timeoutId);
onGroupMessageError({});
};
reader.readAsDataURL(uploadFile);
});
}
// Clears whatever group image send is currently in flight — used both for explicit
// "group-message-error" replies (bad file, not a member, rate-limited) and the
// client-side timeout above. Doesn't distinguish by localId: only one send is ever
// in flight at a time (the button is disabled meanwhile), so there's nothing to match.
function onGroupMessageError(data) {
if (!pendingGroupImage) return;
var gid = pendingGroupImage.gid;
var localId = pendingGroupImage.localId;
pendingGroupImage = null;
$('#tc-img-btn').removeAttr('disabled');
if (allGroupMsgs[gid]) {
allGroupMsgs[gid] = allGroupMsgs[gid].filter(function (m) { return m.localId !== localId; });
}
if (activeGid === gid && isOpen) renderGroupMessages(gid);
if (data && data.error) { console.warn('group image send failed:', data.error); }
}
// Resizes/re-encodes as JPEG when a file exceeds COMPRESS_THRESHOLD. Skips GIFs —
// redrawing to canvas would flatten an animated GIF to a single static frame.
// Falls back to the original file untouched if decoding/encoding fails for any reason.
function compressImageIfNeeded(file, callback) {
if (file.size <= COMPRESS_THRESHOLD || file.type === 'image/gif') {
callback(file);
return;
}
var img = new Image();
var url = URL.createObjectURL(file);
img.onload = function () {
URL.revokeObjectURL(url);
var scale = Math.min(1, COMPRESS_MAX_DIM / Math.max(img.width, img.height));
var canvas = document.createElement('canvas');
canvas.width = Math.round(img.width * scale);
canvas.height = Math.round(img.height * scale);
canvas.getContext('2d').drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob(function (blob) {
callback(blob || file, !!blob);
}, 'image/jpeg', COMPRESS_QUALITY);
};
img.onerror = function () {
URL.revokeObjectURL(url);
callback(file);
};
img.src = url;
}
// ── Send image (opc 11I) ─────────────────────────────────────────────────────
function sendImage(file) {
if (!activeCid) return;
var tempId = '_img_' + Date.now();
if (!allMsgs[activeCid]) allMsgs[activeCid] = [];
allMsgs[activeCid].unshift({
id: tempId, whosend: String(userId), msm: '', urlima: '_loading_',
urlaudi: '', timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
});
renderMessages(activeCid);
// .attr()/.removeAttr(), not .prop() — this site's jQuery predates 1.6 (which is
// when .prop() was introduced), and every other call in this file sticks to
// pre-1.6-safe APIs already.
$('#tc-img-btn').attr('disabled', 'disabled');
compressImageIfNeeded(file, function (uploadFile, wasCompressed) {
var form = new FormData();
form.append('opc', '11I');
form.append('userid', String(userId));
form.append('cid', activeCid);
form.append('image', uploadFile, wasCompressed ? 'upload.jpg' : file.name);
fetch(API_URL, { method: 'POST', body: form })
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (resp) {
allMsgs[activeCid] = allMsgs[activeCid].filter(function (m) { return m.id !== tempId; });
if (resp && (resp.resp === 3 || resp.resp === '3') && resp.urlima) {
var msg = {
id: resp.lastmid || String(Date.now()),
whosend: String(userId),
msm: '',
urlima: resp.urlima,
urlaudi: '',
timestamp: new Date().toISOString().replace('T', ' ').substr(0, 19)
};
allMsgs[activeCid].unshift(msg);
if (socket && socket.connected) {
socket.emit('send-message', {
id: resp.lastmid,
chatId: activeCid,
from: String(userId),
to: String(activeUid),
message: '',
urlima: resp.urlima,
type: 'image'
});
}
}
renderMessages(activeCid);
})
.catch(function () {
allMsgs[activeCid] = allMsgs[activeCid].filter(function (m) { return m.id !== tempId; });
renderMessages(activeCid);
})
.then(function () { $('#tc-img-btn').removeAttr('disabled'); });
});
}
// ── Inline meta parser ────────────────────────────────────────────────────────
function parseInlineMeta(raw) {
if (!raw) return { text: '', meta: null };
if (raw.substr(0, FWD_MARKER.length) === FWD_MARKER) {
var end = raw.indexOf(META_ETX);
if (end < 0) return { text: raw, meta: null };
var sender = raw.substring(FWD_MARKER.length, end);
return { text: raw.substring(end + 1), meta: { type: 'fwd', sender: sender } };
}
if (raw.substr(0, REPLY_MARKER.length) === REPLY_MARKER) {
var rend = raw.indexOf(META_ETX);
if (rend < 0) return { text: raw, meta: null };
var parts = raw.substring(REPLY_MARKER.length, rend);
var sep = parts.indexOf(META_SEP);
var rsender = sep >= 0 ? parts.substring(0, sep) : parts;
var orig = sep >= 0 ? parts.substring(sep + 1) : '';
return { text: raw.substring(rend + 1), meta: { type: 'reply', sender: rsender, orig: orig } };
}
// Shared location — same "lat" + META_SEP + "lng" encoding the Android app writes
// (see LOC_MARKER / sendLocationMessage() in ActivityChat.java). No trailing text.
if (raw.substr(0, LOC_MARKER.length) === LOC_MARKER) {
var lend = raw.indexOf(META_ETX);
if (lend < 0) return { text: raw, meta: null };
var coords = raw.substring(LOC_MARKER.length, lend);
var lsep = coords.indexOf(META_SEP);
var lat = lsep >= 0 ? coords.substring(0, lsep) : coords;
var lng = lsep >= 0 ? coords.substring(lsep + 1) : '';
return { text: raw.substring(lend + 1), meta: { type: 'loc', lat: lat, lng: lng } };
}
return { text: raw, meta: null };
}
function parseDisplayText(msm) {
var p = parseInlineMeta(msm || '');
var t = p.text;
if (p.meta && p.meta.type === 'loc') return '📍 ' + LOC_LABEL;
if (t.length === 18 && t.indexOf(' ') < 0) return '';
return (p.meta ? (p.meta.type === 'fwd' ? '↪ ' : '↩ ') : '') + t;
}
// ── Badge & notifications ─────────────────────────────────────────────────────
function updateBadge() {
var n = Object.keys(unreadCids).length;
Object.keys(allGroups).forEach(function (k) {
if (allGroups[k].unreadCount > 0) n++;
});
var $b = $('#tc-badge');
if (n > 0) { $b.text(n).removeClass('tc-hidden'); }
else { $b.addClass('tc-hidden'); }
}
function showNotif(title, body) {
if (!('Notification' in window)) return;
if (Notification.permission === 'granted') {
new Notification(title, {
body: body || '',
icon: 'https://www.taleoi.com/sites/default/files/taleoi.ico'
});
} else if (Notification.permission === 'default') {
Notification.requestPermission();
}
}
// ── HTTP ──────────────────────────────────────────────────────────────────────
function post(params) {
var form = new FormData();
Object.keys(params).forEach(function (k) { form.append(k, String(params[k])); });
return fetch(API_URL, { method: 'POST', body: form })
.then(function (r) { return r.ok ? r.json() : null; })
.catch(function () { return null; });
}
// ── Helpers ───────────────────────────────────────────────────────────────────
// Group timestamps (tc_group.updated, tc_group_message.created) are unix seconds, unlike
// 1:1's "YYYY-MM-DD HH:MM:SS" strings — converts to that same shape (local time) so both can
// share fmtTime() and the plain string comparison renderRooms() sorts by.
// Formatted with UTC getters, not local — fmtTime() (below) always treats this
// "YYYY-MM-DD HH:MM:SS" shape as UTC (appending 'Z' before parsing), matching the raw
// DB timestamp strings 1:1 chat passes it directly. Using local getters here would hand
// fmtTime() an already-local time it then re-shifts by the viewer's UTC offset again.
function unixToDbTimestamp(unixSec) {
if (!unixSec) return '0';
var d = new Date(unixSec * 1000);
function pad(n) { return (n < 10 ? '0' : '') + n; }
return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + ' '
+ pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());
}
function fmtTime(ts) {
if (!ts) return '';
// DB timestamps are plain "YYYY-MM-DD HH:MM:SS" in UTC (MySQL TIMESTAMP column).
// Without a trailing 'Z', the JS Date parser treats a date-TIME string (unlike a
// date-only string) as local time, not UTC — silently shifting displayed times by
// the viewer's UTC offset. The 'Z' forces correct UTC interpretation.
var d = new Date(ts.replace(' ', 'T') + 'Z');
if (isNaN(d.getTime())) return '';
var now = new Date();
if (d.toDateString() === now.toDateString()) {
return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
}
return (d.getMonth() + 1) + '/' + d.getDate();
}
function escHtml(s) {
return String(s == null ? '' : s)
.replace(/&/g, '&').replace(//g, '>')
.replace(/"/g, '"').replace(/'/g, ''');
}
function escAttr(s) { return escHtml(s); }
// Wraps http(s) URLs in a message's already-escaped text with clickable links. Must run
// AFTER escHtml() — matching against the escaped string is safe since escaping never
// introduces whitespace inside a URL run, and the entities it does introduce (e.g. "&"
// for a literal "&" in a query string) are exactly what a browser expects inside an href
// attribute anyway. target="_blank" + rel="noopener noreferrer" so following a link never
// navigates away from (or exposes window.opener to) the page the chat widget is floating on.
function linkifyText(escapedText) {
return escapedText.replace(/https?:\/\/[^\s<]+/g, function (url) {
var trail = '';
var m = url.match(/[.,!?:;)\]}'"]+$/);
if (m) { trail = m[0]; url = url.slice(0, -trail.length); }
if (!url) return trail;
return '' + url + '' + trail;
});
}
// A shared location (LOC_MARKER — see parseInlineMeta()) renders as a tappable card
// linking to Google Maps, matching how the Android app opens a geo: intent for the
// same coordinates. Uses an https:// maps URL instead since geo: isn't reliably
// clickable in desktop browsers.
function locationLinkHtml(lat, lng) {
var mapUrl = 'https://www.google.com/maps?q=' + encodeURIComponent(lat) + ',' + encodeURIComponent(lng);
return ''
+ '📍 ' + escHtml(LOC_LABEL) + '';
}
})(jQuery);
co| Page 10 | taleoi.com
Con mucho entusiasmo queremos compartir parte de la experiencia vivida por nuestros compañeros en el Centro de Interés ExpresArte, en las líneas de dibujo técnico y pintura al óleo.
Durante esta...
NEM: Educación ambiental que se convierte en acción
El compromiso con el cuidado del medio ambiente también se construye desde las aulas. En la Institución Educativa INEM José Eustasio Rivera de...
En el corazón de Leticia, Amazonas, se encuentra una institución que durante décadas ha acompañado la formación de generaciones de jóvenes: la Institución Educativa INEM José Eustasio Rivera.
El INEM...
En el marco del 31 de agosto, Día Internacional de los Afrodescendientes, la Policía Nacional reafirma su compromiso con el respeto por la diversidad cultural, la inclusión y la garantía de los...
Leticia, Amazonas. En el marco de las estrategias de prevención y acercamiento con la comunidad, la Seccional de Carabineros y Protección Ambiental de la Policía Nacional participó en el espacio...
Leticia, Amazonas. En el marco de las acciones adelantadas contra el tráfico de estupefacientes, la Policía Nacional de Colombia, a través de las Seccionales de Investigación Criminal e Inteligencia...
Reedwood CA., agosto 28 de 2026- La IA está transformando la ciberseguridad a una velocidad extraordinaria. Check Point Research ya está detectando ataques impulsados por IA en la práctica, revelando...
La Policía Nacional de Colombia, a través de la Seccional de Investigación Criminal e Inteligencia, desarrolla planes preventivos y de control orientados a prevenir el hurto de vehículos y...
Leticia, Amazonas. La Policía Nacional de Colombia, a través de la Seccional de Carabineros y Protección Ambiental, participó en un espacio de la Radio Policía Leticia 98.9 FM, donde compartió con la...
La Policía Nacional de Colombia, mediante labores de patrullaje, vigilancia y el apoyo del sistema de cámaras de videovigilancia, logró la captura en flagrancia de un ciudadano por el delito de hurto...
Leticia, Amazonas. En el marco de las actividades de registro, control y solicitud de antecedentes, la Policía Nacional de Colombia logró la captura de un ciudadano requerido mediante Notificación...
Junio 07 de 2021
CRÓNICA
“Experiencias Amazónicas”
Fue para la década de los setenta cuando estando en el Amazonas pertenecí al Benemérito Cuerpo de...
Administración Municipal, a través de la Mesa Territorial de Acompañamiento Social, fortalece el trabajo articulado en el barrio Nia Nemechi
La Administración Municipal de Leticia, a través de la Mesa Territorial de Acompañamiento Social, llevó a cabo una jornada de atención y articulación institucional en el barrio Nia Nemechi, con el propósito de acercar la oferta institucional a la ...read more
La Administración Municipal de Leticia, a través de la Mesa Territorial de Acompañamiento Social, llevó a cabo una jornada de atención y articulación institucional en el barrio Nia Nemechi, con el propósito de acercar la oferta institucional a la comunidad y fortalecer las acciones de acompañamiento social dirigidas a las familias del sector.
Durante la jornada, las entidades que integran la Mesa Territorial de Acompañamiento Social desarrollaron actividades de orientación, atención y diálogo con la comunidad, identificando necesidades, brindando información sobre las rutas de acceso a los diferentes servicios institucionales y coordinando acciones para dar respuesta a las problemáticas priorizadas.
Esta iniciativa refleja el compromiso de la Administración Municipal con el fortalecimiento del trabajo interinstitucional y la construcción de soluciones conjuntas que contribuyan al bienestar de la población, promoviendo una atención integral, oportuna y cercana a los ciudadanos.
La Administración Municipal de Leticia reafirma su compromiso de continuar llegando a los diferentes barrios del municipio con estrategias que fortalezcan el tejido social, promuevan la participación ciudadana y mejoren la calidad de vida de las comunidades, trabajando de la mano con las instituciones que conforman la Mesa Territorial de Acompañamiento Social.
Así se vivieron las Fiestas San Pedrinas en Leticia
Con una amplia participación de la comunidad, visitantes y turistas, Leticia vivió con entusiasmo una nueva edición de las tradicionales Fiestas San Pedrinas, una celebración que destacó la riqueza cultural, el folclor y la identidad de la región ...read more
Con una amplia participación de la comunidad, visitantes y turistas, Leticia vivió con entusiasmo una nueva edición de las tradicionales Fiestas San Pedrinas, una celebración que destacó la riqueza cultural, el folclor y la identidad de la región amazónica.
Durante la programación se llevaron a cabo desfiles, presentaciones artísticas, muestras culturales, actividades deportivas, encuentros familiares y eventos musicales que llenaron de alegría las calles y escenarios de la ciudad. Cada jornada estuvo marcada por el talento de artistas locales, el compromiso de las organizaciones participantes y el acompañamiento de la ciudadanía.
Las Fiestas San Pedrinas se consolidaron como un espacio para fortalecer las tradiciones, promover la integración comunitaria y dinamizar el turismo y la economía local, permitiendo que propios y visitantes disfrutaran de una agenda llena de cultura, música y entretenimiento.
La Administración Municipal agradece a todas las entidades, artistas, gestores culturales, organismos de seguridad, voluntarios y ciudadanos que hicieron posible el éxito de esta celebración, reafirmando el compromiso de seguir promoviendo espacios que enaltecen las costumbres y el patrimonio cultural de Leticia.
Alerta naranja en el sector salud por afectaciones derivadas del retraso en el pago al personal asistencial
La Administración Municipal de Leticia informa a la comunidad que, en atención a la situación que atraviesa la red pública de salud y a las afectaciones ocasionadas por el retraso en el pago de salarios al personal asistencial, se mantiene un esta...read more
La Administración Municipal de Leticia informa a la comunidad que, en atención a la situación que atraviesa la red pública de salud y a las afectaciones ocasionadas por el retraso en el pago de salarios al personal asistencial, se mantiene un estado de alerta que busca garantizar la continuidad de la prestación de los servicios esenciales de salud para la población.
La medida responde a la necesidad de coordinar acciones interinstitucionales que permitan mitigar el impacto generado por la disminución de la capacidad operativa del sistema de salud, priorizando la atención de urgencias, hospitalización, cuidados intensivos y demás servicios indispensables para la protección de la vida y la salud de los habitantes del municipio.
La Administración Municipal hace un llamado a las entidades competentes para adelantar las gestiones necesarias que permitan superar la situación financiera que afecta al personal del sector salud y garantizar el cumplimiento oportuno de sus obligaciones laborales.
De igual manera, se invita a la ciudadanía a hacer un uso responsable de los servicios de urgencias, acudir a los canales oficiales de información y atender las recomendaciones emitidas por las autoridades de salud mientras se normaliza la prestación de los servicios.
La Alcaldía de Leticia continuará realizando seguimiento permanente a la evolución de esta situación y mantendrá informada a la comunidad sobre las decisiones que se adopten en coordinación con las autoridades departamentales y la E.S.E. Hospital San Rafael de Leticia.
Policía Nacional acompaña el Mercado Campesino para fortalecer la economía local y el desarrollo rural en Leticia
La Policía Nacional, a través del Departamento de Policía Amazonas, participa activamente en el Mercado Campesino, una iniciativa liderada por el SENA Regional Amazonas, la Alcaldía de Leticia, por medio de la Secretaría de Competitividad, Medio A...read more
La Policía Nacional, a través del Departamento de Policía Amazonas, participa activamente en el Mercado Campesino, una iniciativa liderada por el SENA Regional Amazonas, la Alcaldía de Leticia, por medio de la Secretaría de Competitividad, Medio Ambiente y Turismo, en articulación con las Fuerzas Militares y demás entidades aliadas.
Esta jornada, que se desarrolla en el Parque Santander, tiene como propósito promover la comercialización de productos agrícolas cultivados por las familias campesinas del departamento, impulsando la economía local, fortaleciendo el desarrollo rural y resaltando la riqueza productiva de la región amazónica.
La Policía Nacional se vincula a esta actividad brindando acompañamiento institucional y acciones de prevención para garantizar un ambiente seguro y de convivencia, permitiendo que productores y ciudadanos participen con tranquilidad en este espacio de integración comunitaria.
Con su presencia, la Institución reafirma su compromiso con el bienestar de la comunidad, apoyando iniciativas que contribuyen al crecimiento económico, la seguridad y el fortalecimiento del tejido social en el departamento del Amazonas.
La Policía Nacional invita a la ciudadanía a visitar el Mercado Campesino, apoyar a los productores locales y seguir construyendo, entre todos, una región más próspera, segura y comprometida con el desarrollo sostenible.
La Policía Nacional en el Amazonas acompaña a la comunidad para que la pasión por el fútbol se viva en paz durante el Mundial 2026
Con el propósito de fortalecer la convivencia ciudadana y promover espacios seguros para las familias, la Policía Nacional en el departamento del Amazonas acompaña a la comunidad durante las jornadas de transmisión de los partidos del Mundial de F...read more
Con el propósito de fortalecer la convivencia ciudadana y promover espacios seguros para las familias, la Policía Nacional en el departamento del Amazonas acompaña a la comunidad durante las jornadas de transmisión de los partidos del Mundial de Fútbol 2026, desarrollando acciones preventivas que fomentan el respeto, la tolerancia y la sana convivencia.
A través de actividades de vigilancia, acompañamiento y campañas de sensibilización en establecimientos comerciales, espacios públicos y lugares de encuentro, los uniformados invitan a la ciudadanía a disfrutar de cada encuentro deportivo con responsabilidad, evitando el consumo excesivo de bebidas embriagantes, las riñas, el uso de pólvora y cualquier comportamiento que afecte la tranquilidad de la comunidad.
La institución hace un llamado a los aficionados para que celebren con respeto, acaten las normas de convivencia y resuelvan las diferencias mediante el diálogo, recordando que el deporte es un escenario de unión que fortalece los valores de la solidaridad, el juego limpio y el respeto por los demás.
La Policía Nacional reafirma su compromiso de trabajar de la mano con la comunidad para garantizar la seguridad y el bienestar de todos los habitantes del Amazonas, invitando a vivir la emoción del Mundial 2026 en un ambiente de paz, respeto y responsabilidad.
Policía Nacional capturó a dos personas por el presunto delito de tráfico, fabricación o porte de estupefacientes en el aeropuerto Vásquez Cobo
En desarrollo de las estrategias orientadas a combatir el tráfico de sustancias estupefacientes y fortalecer la seguridad en los terminales aéreos, la Policía Nacional en el departamento del Amazonas logró la captura de dos ciudadanos por el presu...read more
En desarrollo de las estrategias orientadas a combatir el tráfico de sustancias estupefacientes y fortalecer la seguridad en los terminales aéreos, la Policía Nacional en el departamento del Amazonas logró la captura de dos ciudadanos por el presunto delito de tráfico, fabricación o porte de estupefacientes.
El procedimiento fue realizado en las instalaciones del Aeropuerto Internacional Vásquez Cobo, mediante labores de registro y control adelantadas por uniformados de la Policía Nacional, con el apoyo del guía canino y su ejemplar especializado en la detección de sustancias narcóticas.
Durante la inspección, el canino realizó una marcación positiva sobre el equipaje de los ciudadanos, lo que permitió a los uniformados efectuar una verificación detallada, hallando una sustancia con características similares a un estupefaciente, motivo por el cual se materializó la captura de los presuntos implicados.
Los capturados y los elementos incautados fueron puestos a disposición de la autoridad competente, donde deberán responder por el presunto delito de tráfico, fabricación o porte de estupefacientes, conforme a lo establecido en la legislación vigente.
La Policía Nacional reafirma su compromiso con la seguridad y convivencia ciudadana, e invita a la comunidad a continuar denunciando cualquier actividad relacionada con el tráfico de drogas a través de la línea de emergencia 123 o los canales oficiales de la Institución.
se registra una explosión en la zona externa de la Unidad de Cuidados Intensivos en leticia Aamazonas
La E.S.E. Hospital San Rafael de Leticia informa que, en el marco de un ejercicio de simulación, se plantea un escenario hipotético en el que se registra una explosión en la zona externa de la Unidad de Cuidados Intensivos (UCI).
La E.S.E. Hospital San Rafael de Leticia informa que, en el marco de un ejercicio de simulación, se plantea un escenario hipotético en el que se registra una explosión en la zona externa de la Unidad de Cuidados Intensivos (UCI).
Conforme a los protocolos establecidos para la atención de emergencias, se activa el Plan Hospitalario de Emergencias, se inicia la evacuación de pacientes y personal asistencial de las áreas comprometidas y se coordina la respuesta con el Cuerpo de Bomberos, los organismos de socorro y las autoridades competentes.
El objetivo de este ejercicio es evaluar la capacidad de respuesta institucional, fortalecer los mecanismos de coordinación y garantizar la preparación del personal frente a eventos de alto impacto.
La institución recuerda que este comunicado corresponde exclusivamente a una simulación y no refleja una situación real ocurrida en sus instalaciones.
Grupo Anti-contrabando fortalece acciones de inspección, vigilancia y sensibilización durante las festividades sanpedrinas
Con el propósito de promover el consumo responsable de licor legal y fortalecer la lucha contra el contrabando, el Grupo Anti-contrabando de la Oficina de Rentas Departamental desarrolló jornadas de inspección, vigilancia y sensibilización durante...read more
Con el propósito de promover el consumo responsable de licor legal y fortalecer la lucha contra el contrabando, el Grupo Anti-contrabando de la Oficina de Rentas Departamental desarrolló jornadas de inspección, vigilancia y sensibilización durante la celebración de las festividades sanpedrinas.
Las actividades se llevaron a cabo en establecimientos comerciales, puntos de venta y espacios de alta afluencia de público, donde se verificó el cumplimiento de la normatividad vigente relacionada con la comercialización de bebidas alcohólicas. Asimismo, se brindó orientación a comerciantes y consumidores sobre la importancia de adquirir productos legales, debidamente autorizados y con los mecanismos de identificación exigidos por las autoridades.
Durante las jornadas, el equipo técnico destacó los riesgos que representa el consumo de licor de procedencia ilegal, tanto para la salud pública como para las finanzas del departamento, ya que el contrabando y la adulteración afectan los recursos destinados a sectores fundamentales como la salud, la educación y el deporte.
La Oficina de Rentas Departamental reiteró su compromiso con la protección de los consumidores y el fortalecimiento de la cultura de la legalidad, invitando a la ciudadanía a verificar la autenticidad de las bebidas alcohólicas antes de adquirirlas y a denunciar cualquier actividad relacionada con el contrabando o la comercialización de productos adulterados.
Estas acciones hacen parte de la estrategia permanente de inspección, vigilancia y control que adelanta la Administración Departamental para combatir el comercio ilegal y garantizar que los productos que llegan a los consumidores cumplan con las condiciones de calidad, seguridad y legalidad establecidas por la normativa vigente.
Poder aéreo rescata perrito en condiciones críticas en el Amazonas
El poder aéreo volvió a convertirse en un puente de esperanza en el Amazonas. En esta oportunidad, la Fuerza Aeroespacial Colombiana, a través del Grupo Aéreo del Amazonas, empleó sus capacidades de movilidad aérea para rescatar y trasladar a un canino conocido como "Patitas", el cual presentaba una fractura en una de sus extremidades y requería atención veterinaria especializada.
El poder aéreo volvió a convertirse en un puente de esperanza en el Amazonas. En esta oportunidad, la Fuerza Aeroespacial Colombiana, a través del Grupo Aéreo del Amazonas, empleó sus capacidades de movilidad aérea para rescatar y trasladar a un c...read more
El poder aéreo volvió a convertirse en un puente de esperanza en el Amazonas. En esta oportunidad, la Fuerza Aeroespacial Colombiana, a través del Grupo Aéreo del Amazonas, empleó sus capacidades de movilidad aérea para rescatar y trasladar a un canino conocido como "Patitas", el cual presentaba una fractura en una de sus extremidades y requería atención veterinaria especializada.
Esta misión fue posible gracias al trabajo articulado entre el Grupo Aéreo del Amazonas y la Fundación Adopta un Peludo, organización que gestionó la atención de “Patitas” tras conocer su estado de salud. La coordinación entre ambas entidades permitió realizar su evacuación de manera oportuna desde el área no municipalizada de Tarapacá, una de las zonas más apartadas y de difícil acceso del departamento del Amazonas.
Mediante el empleo del poder aéreo, el canino, fue trasladado hasta la ciudad de Leticia, superando las limitaciones geográficas propias de la región. Posteriormente, la Fundación Adopta un Peludo continuó su traslado hacia Bogotá, D.C. Donde “Tarzan” como ahora es conocido, recibirá el tratamiento y el proceso de rehabilitación necesarios para su recuperación.
Con este tipo de acciones, la Fuerza Aeroespacial Colombiana ratifica que servir a la Nación también significa contribuir al bienestar de los seres vivos que hacen parte de nuestro entorno. A través de sus capacidades de movilidad aérea y del trabajo articulado con diferentes organizaciones, continúa llevando esperanza y brindando oportunidades para nuestros caninos, incluso en los lugares más apartados en el extremo sur del país.
Alcaldía de Leticia declara Alerta Amarilla Hospitalaria durante el puente festivo
Alcaldía de Leticia declara Alerta Amarilla Hospitalaria durante el puente festivo
La Alcaldía de Leticia informa a la ciudadanía que, mediante el Decreto No. 0095 del 26 de junio de 2026, declaró la Alerta Amarilla Hospitalaria en el muni...read more
Alcaldía de Leticia declara Alerta Amarilla Hospitalaria durante el puente festivo
La Alcaldía de Leticia informa a la ciudadanía que, mediante el Decreto No. 0095 del 26 de junio de 2026, declaró la Alerta Amarilla Hospitalaria en el municipio, como medida preventiva para fortalecer la capacidad de respuesta de la red hospitalaria y de las entidades del Sistema de Gestión del Riesgo durante el puente festivo.
La medida estará vigente durante el desarrollo de las tradicionales Fiestas Sanpedrinas y las demás actividades programadas para este fin de semana, con el propósito de garantizar una atención oportuna ante cualquier eventualidad que pueda presentarse.
De manera articulada con las autoridades de salud, organismos de socorro, Policía Nacional y demás entidades competentes, se desplegarán acciones de prevención, vigilancia, inspección y control, las cuales se extenderán hasta la medianoche durante los eventos y festividades previstas en el municipio.
La Administración Municipal hace un llamado a propios y visitantes para celebrar con responsabilidad, respetar las normas de convivencia, atender las recomendaciones de las autoridades y evitar conductas que puedan afectar la seguridad, la salud y el bienestar colectivo.
La Alcaldía de Leticia reitera su compromiso con la protección de la vida y la integridad de la comunidad, e invita a la ciudadanía a disfrutar de las festividades en un ambiente de respeto, autocuidado y sana convivencia.
La alcaldía y la Patrulla Púrpura de la Policía Nacional fortalece la prevención de las violencias contra la mujer en centro de reclusión
La alcaldía de Leticia y la policia nacional a través de la Patrulla Púrpura del Departamento de Policía Amazonas, participó en un taller de sensibilización dirigido a mujeres privadas de la libertad, desarrollado en articulación con la Casa de la...read more
La alcaldía de Leticia y la policia nacional a través de la Patrulla Púrpura del Departamento de Policía Amazonas, participó en un taller de sensibilización dirigido a mujeres privadas de la libertad, desarrollado en articulación con la Casa de la Mujer y la Familia, la Secretaría de Desarrollo Social de la Alcaldía de Leticia y la Defensoría del Pueblo.
La jornada tuvo como objetivo fortalecer los conocimientos de las participantes sobre los diferentes tipos de violencia basada en género, las rutas de atención disponibles y los derechos que las amparan, promoviendo herramientas que contribuyan a la prevención de las violencias y al ejercicio pleno de sus derechos.
Durante la actividad, los funcionarios brindaron orientación sobre los mecanismos institucionales de protección y atención, resaltando la importancia de denunciar cualquier hecho de violencia y de acceder oportunamente a los servicios de apoyo ofrecidos por las entidades competentes.
Con estas acciones, la Policía Nacional reafirma su compromiso con la protección de los derechos de las mujeres, el trabajo interinstitucional y la construcción de entornos más seguros, incluyentes y libres de violencia para toda la comunidad del departamento del Amazonas.
La fe florece en Loma Linda durante la fiesta patronal de San Pedro y San Pablo
Con profunda alegría y espíritu de comunión, la comunidad del Resguardo Indígena de Loma Linda celebró la fiesta patronal en honor a San Pedro y San Pablo, una jornada de fe que reunió a familias, líderes comunitarios y fieles de la región para fo...read more
Con profunda alegría y espíritu de comunión, la comunidad del Resguardo Indígena de Loma Linda celebró la fiesta patronal en honor a San Pedro y San Pablo, una jornada de fe que reunió a familias, líderes comunitarios y fieles de la región para fortalecer los lazos de fraternidad y esperanza.
La celebración eucarística fue presidida por monseñor John Mario Mesa Palacio, obispo de la diócesis, quien acompañó a la comunidad en este importante acontecimiento religioso, resaltando en su homilía el llamado a vivir el Evangelio con fidelidad, unidad y compromiso, siguiendo el ejemplo de los apóstoles San Pedro y San Pablo como pilares de la Iglesia.
La Santa Eucaristía, celebrada en la parroquia Sagrada Familia de Nazareth, fue un espacio de encuentro, oración y acción de gracias, en el que la comunidad expresó su devoción y renovó su compromiso de caminar unida en la fe, preservando sus valores espirituales y culturales.
Durante la jornada se vivieron momentos de profunda participación comunitaria, en un ambiente de fraternidad, alegría y esperanza, reflejando la riqueza espiritual del Resguardo Indígena de Loma Linda y el compromiso de sus habitantes con la construcción de una comunidad fundamentada en el amor de Dios.
Con esta celebración patronal, la Iglesia reafirma su cercanía con las comunidades indígenas, promoviendo el diálogo, el respeto por sus tradiciones y el fortalecimiento de la fe como camino para la reconciliación, la paz y el desarrollo integral de los pueblos.
Policía Nacional recuperó una boa constrictor en el barrio Victoria Regia de Leticia
En el marco de las acciones de protección y conservación de la fauna silvestre, la Seccional de Carabineros y Protección Ambiental de la Policía Nacional logró la recuperación de un ejemplar de boa constrictor en el barrio Victoria Regia, del muni...read more
En el marco de las acciones de protección y conservación de la fauna silvestre, la Seccional de Carabineros y Protección Ambiental de la Policía Nacional logró la recuperación de un ejemplar de boa constrictor en el barrio Victoria Regia, del municipio de Leticia.
La intervención se realizó tras la alerta de la comunidad, permitiendo que los uniformados acudieran al lugar y recuperaran el reptil de manera segura, salvaguardando tanto la integridad de los habitantes como el bienestar del animal.
Una vez recuperado, el ejemplar fue dejado a disposición de la autoridad ambiental competente, la cual realizará la valoración correspondiente y adelantará el proceso para su posterior liberación en un hábitat adecuado, garantizando su conservación y bienestar.
La Policía Nacional invita a la ciudadanía a proteger la fauna silvestre y recuerda que, en caso de encontrar animales en zonas urbanas, es importante evitar manipularlos y dar aviso oportuno a las autoridades competentes para su atención especializada.
Estas acciones hacen parte del compromiso institucional con la protección de los recursos naturales y la preservación de la biodiversidad del departamento del Amazonas.
El Ejército Nacional, mediante un esfuerzo multinacional, afecta las finanzas de la Estructura Residual 48 Comandos de Frontera
En el marco de las operaciones militares desarrolladas de manera coordinada con fuerzas de seguridad de países aliados, el Ejército Nacional logró afectar de manera significativa las finanzas de la Estructura Residual 48 Comandos de Frontera, orga...read more
En el marco de las operaciones militares desarrolladas de manera coordinada con fuerzas de seguridad de países aliados, el Ejército Nacional logró afectar de manera significativa las finanzas de la Estructura Residual 48 Comandos de Frontera, organización dedicada a actividades ilícitas que generan inestabilidad en las zonas de frontera.
Este resultado es producto de un esfuerzo multinacional orientado a debilitar las capacidades logísticas, financieras y criminales de este grupo armado organizado residual, mediante el desarrollo de operaciones de inteligencia, control territorial e interdicción.
Con estas acciones se impactan las fuentes de financiamiento ilegal de la estructura, limitando su capacidad para sostener actividades delictivas como el narcotráfico, la extorsión y otras economías ilícitas que afectan la seguridad y el bienestar de la población.
El Ejército Nacional reafirma su compromiso de continuar trabajando de manera articulada con las autoridades nacionales e internacionales para combatir las organizaciones criminales transnacionales, fortalecer la seguridad en las zonas de frontera y contribuir a la protección de la población y la consolidación de la estabilidad en el territorio.