Code Monkey home page Code Monkey logo

telegram-lalin's Introduction

Telegram Lalín

Versión en español

Integración das canles de telegram cos servizos web do Concello de Lalín. Widget para incorporar os contidos dunha canle de Telegram nunha web.

O proxecto emprega como base o framework slim e o API de Telegram para PHP.

Contidos soportados:

  • Texto
  • Imaxes, ás imaxes son descargadas do servidor de Telegram.
  • Textos con ligazóns: da primeira ligazón atopada descárgase a información embebida en tags OpenGraph, tamén a imaxe.
  • Ligazóns: descárgase a información embebida en tags OpenGraph xunto coa imaxe asociada.
  • Audios (EXPERIMENTAL), os audios son descargados do servidor de Telegram e engadidos coa tag audio.
  • Vídeos (EXPERIMENTAL), os vídeos son descargados do servidor de Telegram e engadidos coa tag video.

Contidos PENDENTES (TO-DO):

  • Audios.
  • Vídeos.
  • Múltiples imaxes agrupadas nun post.
  • Notas de voz
  • Soporte para axustar o ancho do widget
  • Crear estrutura de templates para que os desenvolvedores poidan personalizar a visualización dos post (text, audio, video, link,...).

Se precisas das funcionalidades pendentes reporta unha issue no repositorio do proxecto.

Instalación

  1. Crear unha base de datos MariaDB/MySQL e cargar o ficheiro schema.sql
  2. Crear un bot no Telegramm co BotFather e gardar o API-Key
  3. Engadir o bot como administrador da canle da que se desexan recibir as actualizacións
  4. Editar o ficheiro src/settings.php.dist e renomealo a settings.php. Configurar os valores para a conexión a base de datos, API-KEY de Telegram, nome do bot, nomes das canles das que se aceptan actualizacións, token interno para consultar actualizacións empregando cron, ...
  5. Configurar o cron para que faga polling ao servidor de Telegram e reciba as actualización
  6. Integrar no sitio cun iframe coa URL co seguinte patrón: http://servidor.com/ruta-ao-codigo/messages/nome_canle1

Exemplo de configuración do ficheiro settings.php:

return [
    'settings' => [
        'displayErrorDetails' => false, // set to false in production
        'addContentLengthHeader' => false, // Allow the web server to send the content-length header

        // Renderer settings
        'renderer' => [
            'templates' => __DIR__ . '/../templates/',
            'cache' => __DIR__ . '/../cache/',
        ],

        'db' => [
            'host' => 'localhost',
            'database' => 'nome_basedatos',
            'dsn' => 'mysql:host=localhost;dbname=nome_basedatos',
            'user' => 'usuario',
            'password' => 'contrasinal',
        ],

        'bot' => [
            'api_key' => 'api_key_xerado_por_bot_father',
            'username' => 'NomeDoBotQueCreamosBot',
            'files' => __DIR__ . '/../public/files',
            'channels_allow' => ['nome_canle1', 'nome_canle2']
        ],

        'token' => 'TOKEN-ALEATORIO-CONFIGURADO-NO-SETTINGS.PHP',

        // Monolog settings
        'logger' => [
            'name' => 'slim-app',
            'path' => isset($_ENV['docker']) ? 'php://stdout' : __DIR__ . '/../logs/app.log',
            'level' => \Monolog\Logger::DEBUG,
        ],
    ],
];

Detalle da liña do cron para facer peticións aos servidores de Telegram na procura de actualizacións. Configurar a periodicidade ca que se queren realizar as peticións.

*/15 * * * * wget -O /dev/null http://tg.lalin.gal/update/TOKEN-ALEATORIO-CONFIGURADO-NO-SETTINGS.PHP

NOTA: o API de telegram tamén pode recibir as actualizacións directamente dende Telegram configurando webhooks, porén é preciso que o noso servidor esté configurado para empregar HTTPS.

Exemplo de código iframe

<iframe src="http://servidor.com/messages/nome_canle1"
    width="100%" height="400" frameborder="0"></iframe>

Se precisamos adaptar o tamaño do contido podemos establecer na URL o ancho dos contidos:

<iframe src="http://servidor.com/messages/nome_canle1/350"
    width="100%" height="400" frameborder="0"></iframe>

telegram-lalin's People

Contributors

vifito avatar

Stargazers

Daniel Primo avatar Rafa Gaioso avatar Toni Martínez avatar  avatar

Watchers

Concello de Lalín - Novas Tecnoloxías avatar

Forkers

delineas data-gal

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.