Telegram Empresas
Telegram Empresas permite que tu chat privado con otro usuario (humano) sea gestionado por un bot. Esto incluye enviar y recibir mensajes en tu nombre. Típicamente, esto es útil si manejas tu negocio en Telegram, y ese otro usuario es un cliente.
Si aún no estás familiarizado con Telegram Empresas, revisa los docs oficiales de Telegram antes de continuar.
Naturalmente, grammY tiene soporte completo para esto.
Gestión de mensajes de empresa
Un bot puede gestionar un chat privado entre dos usuarios a través de Telegram Empresas—una cuenta que esté suscrita a la suscripción empresarial de Telegram. La gestión de chats privados se realiza a través de un objeto business connection que se parece a esto.
Recepción de mensajes de negocios
Una vez establecida una conexión de negocios, el bot recibirá mensajes de ambos participantes del chat.
bot.on("business_message", async (ctx) => {
// Acceder al objeto mensaje.
const message = ctx.businessMessage;
// Los accesos directos funcionan como se esperaba.
const msg = ctx.msg;
});
2
3
4
5
6
En este punto, no está claro quién de los dos participantes del chat envió un mensaje. Podría ser un mensaje de tu cliente… ¡pero también podría ser un mensaje enviado por ti mismo (no por tu bot)!
Por lo tanto, tenemos que diferenciar entre los dos usuarios. Para ello, tenemos que inspeccionar el objeto de conexión de negocios antes mencionado. La conexión comercial nos dice quién es el usuario de la cuenta comercial, es decir, el identificador de usuario suyo (o de uno de sus empleados).
bot.on("business_message", async (ctx) => {
// Obtener información sobre la conexión empresarial.
const conn = await ctx.getBusinessConnection();
const employee = conn.user;
// Comprueba quién envió este mensaje.
if (ctx.from.id === employee.id) {
// Has enviado este mensaje.
} else {
// Su cliente ha enviado este mensaje.
}
});
2
3
4
5
6
7
8
9
10
11
También puede omitir la llamada a get
para cada actualización haciendo esto.
Envío de mensajes
Tu bot puede enviar mensajes a este chat sin ser miembro del chat. Funciona como se espera con ctx
y todas sus variantes. grammY comprueba si el atajo ctx
está disponible, para poder enviar el mensaje al chat gestionado por el negocio.
bot.on("business_message").filter(
async (ctx) => {
const conn = await ctx.getBusinessConnection();
return ctx.from.id !== conn.user.id;
},
async (ctx) => {
// Responda automáticamente a todas las preguntas de los clientes.
if (ctx.msg.text.endsWith("?")) {
await ctx.reply("Soon.");
}
},
);
2
3
4
5
6
7
8
9
10
11
12
Esto parecerá como si hubieras enviado el mensaje tú mismo. No hay forma de decirle a tu cliente si el mensaje fue enviado manualmente o a través de tu bot. (Aunque verá un pequeño indicador de ello). (Pero es probable que tu bot sea mucho más rápido respondiendo que tú. Lo sentimos).
Yendo más allá
Hay algunas cosas más a tener en cuenta a la hora de integrar tu bot con Telegram Empresas. Aquí cubriremos brevemente algunos aspectos.
Edición o eliminación de mensajes de empresa
Cuando usted o su cliente editen o borren mensajes en su chat, su bot será notificado de ello. Más concretamente, recibirá las actualizaciones edited
o deleted
. Tu bot puede gestionarlas de forma normal utilizando bot
y sus innumerables consultas de filtro.
Sin embargo, tu bot NO puede editar o borrar mensajes en el chat. Del mismo modo, tu bot NO puede reenviar mensajes desde el chat, o copiarlos en otro lugar. Todo esto queda en manos de los humanos.
Trabajando con conexiones empresariales
Cuando el bot esté conectado a una cuenta de empresa, recibirá una actualización de business
. Esta actualización también se recibirá cuando el bot se desconecte o la conexión se edite de otra forma.
Por ejemplo, un bot puede o no enviar mensajes a los chats que gestiona. Puedes detectar esto utilizando la parte de consulta :
.
bot.on("business_connection:can_reply", async (ctx) => {
// La conexión permite enviar mensajes.
});
2
3
Tiene mucho sentido almacenar objetos de conexión de negocio en tu base de datos. De esta manera, puedes evitar llamar a ctx
para cada actualización sólo para averiguar quién envió un mensaje.
Además, una actualización de business
contiene un user
. Este identificador de chat se puede utilizar para iniciar una conversación con el usuario que conectó el bot.
bot.on("business_connection:is_enabled", async (ctx) => {
const id = ctx.businessConnection.user_chat_id;
await ctx.api.sendMessage(id, "¡Gracias por ponerte en contacto!");
});
2
3
4
Esto funciona incluso si el usuario aún no ha iniciado tu bot.
Gestionar Chats Individuales
Si conectas un bot para gestionar tu cuenta, las aplicaciones de Telegram te ofrecerán un botón para gestionar este bot en cada chat gestionado. Este botón envía /start
al bot.
Este comando de inicio tiene un payload especial con deep linking definido por Telegram. Tiene el formato biz
donde XXXXX
será el identificador del chat gestionado.
bot.command("start", async (ctx) => {
const payload = ctx.match;
if (payload.startsWith("bizChat")) {
const id = payload.slice(7); // quitar `bizChat`
await ctx.reply(`Let's manage chat #${id}!`);
}
});
2
3
4
5
6
7
Esto proporciona un contexto importante a su bot y le permite gestionar chats empresariales individuales directamente desde la conversación con cada cliente.