iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0

今天要來講講機器人是怎麼運作的

Client-Server 架構

這是一種網路架構,網頁大部分都是使用此架構
瀏覽器是客戶端(client),客戶端(client)主動向伺服器(server)發送請求(request)
伺服器(server)會執行一些程式,之後把頁面被動回應(response)給客戶端(client)

伺服器(server)需要一個 IP 位置,這樣子瀏覽器才知道要把請求(request)發到哪個地方
IP 位置就像是住家的地址一樣,而請求(request)就像是一封信

機器人的運作原理

https://ithelp.ithome.com.tw/upload/images/20210911/201329164DYNbONV9j.png
現在你發了一段訊息給機器人
但是並不是機器人直接回你訊息

詳細情況如下圖:
https://ithelp.ithome.com.tw/upload/images/20210911/20132916sarvrWzvtM.png
Icon 來源:https://www.flaticon.com/packs/programming-29

  1. 一開始你的訊息會被傳送到 TG 伺服器
  2. TG 伺服器會通知機器人:欸!有一則新訊息
  3. 機器人會發一個指令給 TG 伺服器
  4. TG 伺服器照著指令的需求,回應訊息給你

機器人接收訊息的兩種模式

機器人可以放在伺服器,也可以用客戶端的方式運作
https://ithelp.ithome.com.tw/upload/images/20210911/201329167PVK5cYetW.png
https://ithelp.ithome.com.tw/upload/images/20210911/20132916KSBHE468qO.png

  1. Webhook
    伺服器方式被動接收訊息,需要有 IP 位置,通常會放在網站伺服器(Web Hosting)上,要自己架設網站伺服器不是件容易的事,所以官方還提供了另一種做法
  2. Long Polling
    客戶端方式主動跟 TG 伺服器要訊息,可以直接在自己電腦上運作,不需要架(租)伺服器也能讓機器人順利運作,缺點就是電腦要一直開著,當然你也可以使用雲端服務(IaaS、PaaS、SaaS)

機器人發送訊息的三種方式

  1. HTTP GET

    https://api.telegram.org/bot{Token}/{Method}?{Parameter1}={Value1}&{Parameter2}={Value2}
    

    直接以網址參數的方式傳送指令,GET 沒有 Body,只傳送 Headers (你可以當作不會傳送檔案過去),通常是用來取資料用,優點是可以直接用瀏覽器執行,缺點是有 2KB 的限制,雖然不太可能用到這長的指令,但還是比較建議使用 POST

  2. HTTP POST
    https://ithelp.ithome.com.tw/upload/images/20210911/20132916ntmFdkLoTF.png

    {"method":"Method","Parameter1":"Value1","Parameter2":"Value2"}
    

    POST 是以 Body 傳送資料(檔案),程式通常都是以這種方式溝通,網頁裡的表單也經常是以這種方式傳送,資料不會顯示在網址列,可以傳送的資料大小比 GET 大得多:1MB ~ 2GB

  3. 直接 Print
    https://ithelp.ithome.com.tw/upload/images/20210911/20132916J2XLkuyGPY.png
    這個方式只有在 webhook 模式下才能使用,因為只有伺服器可以直接回應訊息

官方說明文件

https://core.telegram.org/bots/faq
https://core.telegram.org/bots/api


上一篇
【PHP Telegram Bot】Day01 - 開賽
下一篇
【PHP Telegram Bot】Day03 - 向 @BotFather 申請一隻機器人吧!
系列文
用 PHP 打造專屬於自己的 Telegram 聊天機器人吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言