iT邦幫忙

2021 iThome 鐵人賽

DAY 18
5
Modern Web

JavaScript Easy Go!系列 第 18

#18 用免費 Serverless 及 JavaScript 寫 Telegram 聊天機器人!

用免費 Serverless 及 JavaScript 寫 Telegram 聊天機器人!

聊天機器人的簡單架構

基本上許多的聊天機器人都是用 Webhook 的機制來實現的。

Webhook 是什麼?

其實就只是個伺服器的網址。

舉例來說,你想要在當有人傳訊息給你的機器人帳號時,Telegram 來提醒你說你收到了一個訊息!
那 Telegram 要怎麼告訴你呢?
答案就是你弄一個伺服器跟指向伺服器的網址,然後把網址給 Telegram 並告訴它「如果有人傳訊息給我,就發送到這個網址來!」
這個網址就是 Webhook。

收訊息的機制

  1. 使用者傳訊息給你的機器人帳號
  2. 聊天平台將收到的訊息轉寄給你的伺服器

在第 2 步就會需要用到 Webhook 才知道你的伺服器在哪。

寄訊息的機制

  1. 依照官方 API 將訊息送至平台
  2. 平台將訊息寄至使用者

其實聊天機器人的互動非常簡單,只需要數個一般的 HTTP 請求就可以完成,當然如果像是 Discord 等平台其實還有用到 WebSocket 等技術,但其實也只是因為需要像是 heartbeat 檢查等功能,為了避免發送一堆 HTTP 請求標頭浪費網路資源。

hearbeat 就是每隔一陣子(通常是幾秒)發個請求確認對方伺服器是否還開著,如果對方有回傳就是還活者,反之則推定死亡未上線。

接下來幾天

在接下來的環節,我們會使用 Telegram 作為示範訊息平台,並以 Cloudflare Worker 作為處理訊息的伺服器。

所以,請先註冊好 Telegram 以及 Cloudflare 的帳號喔!


每日鐵人賽熱門 Top 10 (1001)

以 10/01 20:00 ~ 10/02 20:00 文章觀看數增加值排名

  1. +133 Day23運算子(JavaScript)
    • 作者: jed0210
    • 系列:網頁設計入門筆記
  2. +132 Proxmox VE 安裝容器:Rocky Linux 8.4 及其它應用 (WordPress, Nextcloud, Odoo)
    • 作者: Jason Cheng (節省哥)
    • 系列:突破困境:企業開源虛擬化管理平台
  3. +126 Day 1 無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題
    • 作者: 用圖片高效學程式
    • 系列:無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題
  4. +116 動態記憶體分配
    • 作者: EN
    • 系列:微自幹的作業系統輕旅行
  5. +115 [Day 17] 我的資料哪有這麼平衡!第二季 (class weights)
    • 作者: 佑佑來了
    • 系列:AI Facial Expression Recognition: Data, Model, Application
  6. +107 [Day1] Flutter - 簡介
    • 作者: 魚板伯爵
    • 系列:30天 - Flutter 日常
  7. +104 Day30-30天的心得與作者的心聲
    • 作者: Eating_o
    • 系列:30Day 從一介凡人羽化成資料科學初學者
  8. +102 從零開始的8-bit迷宮探險【Level 1】一切都是從紅白機開始的
    • 作者: 雪花冰
    • 系列:從零開始的8-bit迷宮探險!Swift SpriteKit 遊戲開發實戰
  9. +102 DAY 20-數位簽章-ECDSA
    • 作者: chen_yanlong
    • 系列:學密碼學也猜不到你的手機密碼
  10. +101 讓程式碼化為 API Doc
    • 作者: Chris
    • 系列:Vue.js 進階心法

最近開始玩 CTF
仔細看才發現加密好複雜...


上一篇
#17 Automation (5)
下一篇
#19 Telegram Bot 起手式
系列文
JavaScript Easy Go!31

尚未有邦友留言

立即登入留言