Usar bot de Telegram para enviar notificaciones a usuario

  • Autor Autor OscarAlderete
  • Fecha de inicio Fecha de inicio
O

OscarAlderete

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Recientemente estoy rehaciendo mi web, la antigua estaba hecha con Angular JS (la primitiva versión 1) y la 'nueva' la estoy haciendo con la 17 -eso les dará 1 idea d cuándo comencé a rehacerla pues NG ya va x su versión 18 desde mayo-.
Como enviar emails ya suena 1 poco rancio, decidí usar PHP pues es default en mi viejo hosting y usé un bot d Telegram para gestionar el envío d messages.

Pueden ver 1 video con la demo d la funcionalidad:


Básicamente una llamada curl al endpoint d tu Telegram bot, en mi caso uso PHP y akí está la clase ke lo gestiona -es así d simple- y la lógica sirve = para Python, Node, whatever. Si eres programador puedes inferir entonces ke incluso puedes enviar messages desde un terminal si kisieras automatizar procesos desde un desktop:


<?php

namespace App\Http\Controllers;

use FFI\Exception;
use Illuminate\Http\Request;
use App\Models\Post;

class BotController extends Controller
{
public function send(Request $request)
{
$message = $request->message;

$res = $this->ping($message);

// var_dump($res);

return response()->json([
'result' => $res['ok'],
]);
}

private function ping(string $message)
{
// payload
$payload = [
'chat_id' => 'your-user-chat-id',
'text' => $message,
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.telegram.org/bot' . $yourBotId . '/sendMessage');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_POST, true);

$headers = [
'Content-Type: application/json; charset=utf-8',
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);

if (curl_errno($ch)) {
$result = 'Error: ' . curl_error($ch);
}

curl_close($ch);

return json_decode($result, true);
}

}
 
Debes tener en cuenta que un bot no puede interactuar con una persona que le haya abierto previamente una conversación al bot, por lo que esas personas deben interactuar primero con el bot.

Por lo que la funcionalidad como tal, tiene matices. Hay otra forma de hacerlo pero no es tan breve de hacerlo ni tan sencillo.

Pero como idea es buena 🙂
 
@OscarAlderete osea el mismo bot se envia un mensaje?
tengo algo asi, para enviar imagene a mi canal cada 1 hora!

Saludos!
 
Debes tener en cuenta que un bot no puede interactuar con una persona que le haya abierto previamente una conversación al bot, por lo que esas personas deben interactuar primero con el bot.

Por lo que la funcionalidad como tal, tiene matices. Hay otra forma de hacerlo pero no es tan breve de hacerlo ni tan sencillo.

Pero como idea es buena 🙂
Lo que entiendo es que ese bot no es para que le envie a las personas, solo para que le notifique que han llenado el formulario de su web
 
Lo que entiendo es que ese bot no es para que le envie a las personas, solo para que le notifique que han llenado el formulario de su web
Si, lo usa como bandeja de entrada XD
 
Hola, durante la semana me enviaron 1 par d consultas desde la página d contacto d mi web. Estas son las respuestas:

1. Cómo obtengo los valores del 'chat_id' y del 'bot_id'?
Para entender mejor la lógica del script has de tener alguna experiencia desarrollando bots. Si tienes esa experiencia seguramente sabes que un bot es básicamente 1 endpoint al ke Telegram envía toda 'conversación' del bot con los usuarios y ke tiene la capacidad d responder a todos o individualmente, parte d esa metadata enviada es el 'chat_id'. La documentación d Telegram recomienda como buena práctica guardar ese dato en 1 DB.
Respecto al 'bot_id' lo obtienes al dar d alta tu bot.

2. Ese código sirve para crear un Telegram bot?
No necesariamente, ese código sirve para hacer una llamada post a un endpoint desde PHP pasándole parámetros. Teóricamente podrías invocarlo usando JavaScript/TypeScript pero eso sería muy mala práctica pues expondrías datos sensibles como el endpoint de tu bot, y los IDs. Por eso es necesario hacer esa llamada desde el backend ya sea con PHP, Python, RoR, Node o cualkiera sea tu stack.
T sugiero revises la documentación d Telegram, el 1er bot ke hice fue hace años -cuando Uber aterrizó en España y una asociación d taxistas d la Comunidad Valenciana (esos años trabajaba para una agencia web d ahí) nos pidió hacerle 1 app ke permitiera a los turistas contratar sus servicios usando sus móviles, ke esos años era algo novedoso-. Hasta donde recuerdo, aquellos tiempos toda la documentación estaba en inglés, ahora debería haber alguna versión en español pero mi recomendación para todos es aprender inglés, si eres programador o quieres serlo, eso es un must. Por lo demás, poner a funcionar un bot d Telegram es significativamente + sencillo ke usar esa 💩💩💩 d API ke tiene whatsapp.
 
Si, lo usa como bandeja de entrada XD
Hay algún problema con eso? Programar significa resolver problemas, el mío era ke no kiero enviar emails desde la página d contacto d mi website -eso ya suena a cosas d mi abuela-, algo + moderno y funcional es enviarte 1 push notification, así ke en vez d montar 1 app con Firebase y todo ese tinglado me tomé 1 atajo y a 1 bot ke tengo funcionando le agregué esa funcionalidad.
Y no es 1 bandeja d entrada, es la misma técnica ke se suele usar con otros servicios como Slack. D hecho parte d la inspiración para hacer ese código es la interacción con 1 bot d Slack que hice el año pasado para el CRM a medida ke le hice a 1 empresa d logística internacional.
 
Hay algún problema con eso? Programar significa resolver problemas, el mío era ke no kiero enviar emails desde la página d contacto d mi website -eso ya suena a cosas d mi abuela-, algo + moderno y funcional es enviarte 1 push notification, así ke en vez d montar 1 app con Firebase y todo ese tinglado me tomé 1 atajo y a 1 bot ke tengo funcionando le agregué esa funcionalidad.
Y no es 1 bandeja d entrada, es la misma técnica ke se suele usar con otros servicios como Slack. D hecho parte d la inspiración para hacer ese código es la interacción con 1 bot d Slack que hice el año pasado para el CRM a medida ke le hice a 1 empresa d logística internacional.
No bro, no hay problema.
Yo lo veo bien, seria bueno poder hacer click al numero del usuario, mirate la api a ver si es posible.
 
Atrás
Arriba