20150925_Telegram_00

텔레그램(Telegram) CLI를 사용하여, 자동으로 메시지 보내기

와탭은 사내 메신저로 Telegram (https://telegram.org/)을 사용하고 있습니다.

저희는 Telegram의 장점 중 아래와 같은 이유로 사용하고 있습니다.

  • 무료
  • 다양한 OS 및 장비 지원
  • 안정성
  • 자유롭고 빠른 이미지 및 파일 전송

 

20150925_Telegram_00

Telegram 경우, API 및 소스가 공개되어 있습니다. 이를 통하여 개발된, 오픈 소스 중 Telegram messenger CLI ( https://github.com/vysheng/tg ) 를 사용하여, 서버의 MySQL 데이터를 Telegram 연동해서 자동화 하는 예제를 작성해 보고자 합니다.

Telegram 가입

Telegram을사용하려면, 에 먼저 가입을 합니다.Telegram 모바일 앱이나, Windows 또는 Mac 프로그램을 사용하셔도 됩니다. 최초 사용이라면, 핸드폰으로 인증이 필수 입니다. 다음에 Telegram CLI를 설치할 때, Telegram 으로 인증 코드를 받아야 설치 할수 있습니다.

Telegram CLI 설치

Telegram CLI는 명령창 ( Command-Line Interface ) 에서 실행하는, 메신저 입니다. Telegram 을 Mobile 또는 PC 에 설치하듯이, 서버에 설치를 하도록 합니다. 여기서는 편의상 Database Server 에 같이 설치 하도록 하겠습니다. Database Server는 Ubuntu 14.04 를 사용하고 있다고 가정합니다.

소스 받기 :

빌드 툴 설치 :

빌드 :

텔레그램 인증 :

핸드폰 번호를 입력하고, 핸드폰으로 온 인증코드를 입력합니다.

CLI를 통해서 Telegram 에 로그인이 되면, Telegram 의 CLI 상태에 진입합니다.

Telegram CLI 명령 연습하기

CLI 명령어는 아래 문서에서 찾을수 있습니다.

https://github.com/vysheng/tg/wiki/Telegram-CLI-Commands

연락처 보기 명령:

다른 사람에게 메시지 보내기:

  • Tip 1. 이름과 성 사이의 띄워쓰기는 _ ( Underscore ) 를 넣어주시면 됩니다.
  • Tip 2. 수신인을 Group 으로 지정하면, 1번 메시지를 보낸것만으로 다량의 사용자에게 전달할수 있습니다.

CLI 종료

이로서 Telegram에 메시지를 보낼수 있는 준비가 다 되었습니다.

CLI 에 메시지 전달하는 스크립트 만들기

CLI는 매번 명령을 치고 화면을 보고 있으므로, 자동화에는 적합하지 않습니다.

단순한 메시지만 전달하고 종료하는 Bash Script 를 하나 작성해 보도록 하겠습니다.

Bash Script 작성하기 :

작성한 Bash Script 로 메시지 보내기 :

Python 으로 MySQL 데이터 조회하기

Python 개발 환경 설치 :

Python Code 작성 :

Python 으로 DB 정보를 조회하였습니다

조회한 데이터를 Telegram으로 보내도록 코드 수정

주기적으로 메시지 보내기 ( Crontab )

마지막 줄에 위와 같이 적으면, 3시간 마다 20분에 스크립트를 실행합니다.

맺음말

위 예제 코드에서는 3시간 마다, 서버의 DataBase 버전 정보를 Telegram으로 보내는 단순한 코드를 작성해 보았습니다.

20150925_Telegram_01

 

추가로 개발하면 할수 있는 것들

  • 좀 더 상세한 SQL 문 ( 예를 들면, 시간에 따라 변하는 가입자수 ) 을 작성한다면 메시지가 올때마다 데이터가 변화는 모습을 볼수 있을 것입니다.
  • 좀 더 많은 Python 코드를 작성한다면, 이미지 등도 전달 할수 있을 것입니다.

적절하게 수정해서, 주기적으로 서버의 상태를 조회하고 Telegram로 받아보세요.

감사합니다.

“텔레그램(Telegram) CLI를 사용하여, 자동으로 메시지 보내기”에 대한 3개의 생각

  1. 안녕하세요 회사에서 만든 단말 NMS로 문제 생기면 알바 분들에게 전송하는 텔레그램 서버를 만들어 보고자 하는데요.
    # ./bin/telegram-cli -k tg-server.pub 이거 실행하면
    > telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0′ failed.
    SIGNAL received
    h./bin/telegram-cli(print_backtrace+0x2c)[0x80a998c]
    ./bin/telegram-cli(termination_signal_handler+0x7d)[0x80a9a2d]
    [0xb7772c8c]
    [0xb7772cb0]
    /lib/i386-linux-gnu/libc.so.6(gsignal+0x47)[0xb7324607]
    /lib/i386-linux-gnu/libc.so.6(abort+0x143)[0xb7327a33]
    /lib/i386-linux-gnu/libc.so.6(+0x27757)[0xb731d757]
    /lib/i386-linux-gnu/libc.so.6(+0x27807)[0xb731d807]
    ./bin/telegram-cli[0x80fdd6c]
    ./bin/telegram-cli[0x80ce0b4]
    ./bin/telegram-cli[0x80d1afa]
    ./bin/telegram-cli[0x80fceec]
    /usr/lib/i386-linux-gnu/libevent-2.0.so.5(event_base_loop+0x6f4)[0xb771f234]
    ./bin/telegram-cli(net_loop+0xc2)[0x80ab1f2]
    ./bin/telegram-cli(loop+0x1d7)[0x80ac917]
    ./bin/telegram-cli(inner_main+0x17)[0x80a8eb7]
    ./bin/telegram-cli(main+0x365)[0x80a7f25]
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb730fa83]
    ./bin/telegram-cli[0x80a8051]

    이런 메시지가 나오는데 어떻게 해야 하는지 모르겠네요.. 전화번호도 요구하지 않고요
    좀 도와주세요…

  2. https://github.com/vysheng/tg/issues/925 와 비슷한 오류로 보입니다.

    실행시 나오는 오류 메세지 중에 설정 파일이 있는 위치
    “config dir=[/root/.telegram-cli]”
    를 확인하시고, 해당 폴더도 삭제하시고, 재설치 시도해보시면 좋을듯 합니다.

    최근 버전을 다시 깔아봤는데, 전 괜찮은걸 보면, 환경 문제 있듯합니다.

    root@TestHost-05:~/tg# ./bin/telegram-cli -k tg-server.pub
    change_user_group: can’t find the user telegramd to switch to
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type show_license'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type
    show_license’ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/root/.telegram-cli]
    [/root/.telegram-cli] created
    [/root/.telegram-cli/downloads] created
    phone number: 82102*******
    code (‘CALL’ for phone code): 30701

  3. 같은 오류네요ㅠㅠ tgl/mtproto-utils.c의 101,115번째 줄을 주석처리해도, 아예 지워버려도 계속 똑같은 오류입니다ㅠㅠ
    pi@raspberrypi:~/tg $ bin/telegram-cli -k tg-server.pub -W
    Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
    Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type show_license'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type
    show_license’ for details.
    Telegram-cli uses libtgl version 2.1.0
    Telegram-cli includes software developed by the OpenSSL Project
    for use in the OpenSSL Toolkit. (http://www.openssl.org/)
    I: config dir=[/home/pi/.config/telegram-cli]
    > telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0′ failed.
    SIGNAL received

댓글은 닫혔습니다.