แจ้งเตือนทาง Telegram ด้วย Yii Framework

1. วิธีการติดตั้งแอป Telegram หรือ วิธีหา botToken และ chat_id

1.1. ติดตั้งแอป Telegram และสมัครใช้งาน ในมือถือหรือคอมพิวเตอร์
1.2. ค้นหา BotFather ใน Google หรือแอป Telegram ก็ได้
1.3. คลิกลิงก์ Contact @BotFather
1.4. คลิก “start” ปุ่มสีฟ้า ในแอป Telegram
1.5. พิมพ์ข้อความในช่องแชท “/newbot”
1.6. ตั้งชื่อ Bot ในช่องแชท เช่น “ต้นแจ้งเตือน Bot”
1.7. ตั้ง usernameBot ในช่องแชท เช่น b0912345678bot
1.8. Copy BotToken หลังข้อความ “HTTP API:”
1.9. คลิกลิงก์ “t.me/b0xxxxxxxxxbot”
1.10. คลิก “start” ปุ่มสีฟ้า ใน Chat “ต้นแจ้งเตือน Bot”
1.11. วาง Token แล้วส่งให้ Chat “ต้นแจ้งเตือน Bot”

2. วิธีหา chat_id ของคุณ

2.1 ไปที่ URL นี้ (แทนที่ YOUR_BOT_TOKEN ด้วย Token ของคุณ)

https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates

เช่น

https://api.telegram.org/bot123456789:ABCdefGHIjklMNOpqRstUVWxyz/getUpdates

2.2. คุณต้องคัดลอกข้อมูล JSON ที่ได้จาก URL นี้มาให้ผมดู หรือคุณสามารถค้นหาเองได้โดยมองหาส่วนที่มี "chat" และ "id" เช่น

{
  "ok": true,
  "result": [
    {
      "update_id": 123456789,
      "message": {
        "message_id": 1,
        "from": {
          "id": 987654321,
          "is_bot": false,
          "first_name": "YourName",
          "username": "yourusername"
        },
        "chat": {
          "id": 987654321,
          "first_name": "YourName",
          "username": "yourusername",
          "type": "private"
        },
        "date": 1710000000,
        "text": "Hello"
      }
    }
  ]
}

จากตัวอย่างด้านบน chat_id ของคุณคือ 987654321

2.3. ถ้า chat_id กลุ่มอาจจะเป็น เช่น -123456789 เช่น

"chat": {
   "id": -123456789,
   "title": "My Group",
   "type": "supergroup"
}

3. ถ้ายังไม่ได้ติดตั้ง yii2-httpclient.ให้ติดดตั้งหรือ Run cmd

composer require yiisoft/yii2-httpclient

4. สร้างไฟล์ common/components/Telegram.php และเขียนโค้ด

<?php
namespace common\components;

use Yii;
use yii\base\Component;
use yii\httpclient\Client;

class Telegram extends Component
{
    public function sendMessage($message, $botToken, $chatId, $options = [])
    {
        $url = "https://api.telegram.org/bot{$botToken}/sendMessage";
        
        $data = array_merge([
            'chat_id' => $chatId,
            'text' => $message,
            'parse_mode' => 'HTML' // 🔥 กำหนดค่าเริ่มต้นเป็น HTML
        ], $options);

        $client = new Client();
        $response = $client->createRequest()
            ->setMethod('POST')
            ->setUrl($url)
            ->setData($data)
            ->send();

        return $response->isOk;
    }
}

5. เพิ่ม Telegram เข้าไปใน components ของ common/config/main.php

return [
    'components' => [
        'telegram' => [
            'class' => 'common\components\Telegram',
        ],
    ],
];

6. โค้ดที่หน้า view หรือ controllers

Yii::$app->telegram->sendMessage(
  '<a href="https://www.youtube.com">URL</a> \nสวัสดีครับ',
  'botToken' => '123456789:ABCdefGHIjklMNOpqRstUVWxyz',  // ใส่ Token ของคุณ
  'YOUR_CHAT_ID',  // ใส่ Chat ID ที่ต้องการส่งข้อความหา
  ['parse_mode' => 'HTML']
);

Comments

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *