使用PHP Webhook方式打造Telegram Bot

一、找BotFather拿到bot token
在telegram中私聊BotFather建立自己的bot,给bot取名,名字必须要以bot结尾。建好后自己的bot就有一个唯一的token,类似下面的一串字符

164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8

二、确认bot响应文件的位置
在写好bot响应文件后,要把bot放在网络上的一个位置,并且这个位置必须要加密的,即以https开头的一串网址。比如响应文件的名称为telbot.php,把它放在下面这个网址的位置:

https://my.webhost.com/164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/telbot.php

上面网址中的红色设置和bot的token一样是为了确定这个唯一的位置,当然也可以任意设置。
三、告诉Telegram响应文件的位置
Telegram用下面网址的形式来设定webhook响应方式

https://api.telegram.org/bot[myauthorization-token]/setwebhook?url=[myboturl]

按照上面的网址形式,把自己创建的bot的token以及响应文件的位置填入,然后在浏览器中运行一下即可设置成功。比如:

https://api.telegram.org/bot164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/setwebhook?url=https://my.webhost.com/164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/telbot.php

设置成功后,页面会显示下面的内容:

{"ok":true,"result":true,"description":"Webhook is already set"}
四、在Telegram中给自己的bot发消息进行验证

php响应文件例子

<?php
define('BOT_TOKEN', 'YOURBOT:TOKEN');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');

// read incoming info and grab the chatID
$content = file_get_contents("php://input");
$update = json_decode($content, true);
$chatID = $update["message"]["chat"]["id"];
$got_message = $update["message"]["text"];

// compose reply
$reply = $got_message;

// send reply
$sendto =API_URL."sendmessage?chat_id=".$chatID."&text=".$reply;
file_get_contents($sendto);
?>

上例中$content得到bot传递来的json串,$update为解析json串后得到的数组,再将数组中的有用信息提取出来,即$chatID和$got_message。上例中将得到的字符串赋值给$reply,再发送回去。因此上面这个简单的bot就是“回声机器人”了。

当然bot获取和发送的信息不只有字符串一种,更多的功能请参照Telegram Bot API

参与评论