跳到主要內容

Wechaty 對話式 RPA SDK:從零開始建構聊天機器人完整指南

為什麼需要聊天機器人?

在這個數位化時代,聊天機器人已經成為企業與客戶互動的重要工具。無論是客服自動回覆會議提醒群組管理,還是訊息轉發,聊天機器人都能大幅提升工作效率,讓重複性的工作自動化處理。

想像一下: 

- 🤖 自動客服:24小時回答常見問題,不用擔心客戶半夜找不到人 

- 📅 智能助理:自動提醒會議、生日、重要事項 

- 👥 群組管理:自動歡迎新成員、分享重要訊息、過濾垃圾訊息 

- 🔄 訊息轉發:將重要訊息自動轉發到相關群組或個人

什麼是 Wechaty?

Wechaty 是一個對話式 RPA (機器人流程自動化) SDK,專為聊天機器人開發者設計。它就像是聊天機器人界的「萬能翻譯機」,讓你寫一次程式碼,就能在多個平台上使用

Wechaty 的核心優勢:

  1. 跨平台支援:一套程式碼可以同時支援微信、WhatsApp、飛書等多個平台
  2. 多語言支援:支援 JavaScript、Python、Go、Java 等7種程式語言
  3. 開源免費:完全開源,有活躍的社群支持
  4. 簡單易學:最少只需要6行程式碼就能建立一個基礎機器人
  5. 功能強大:支援發送訊息、管理群組、處理好友請求等完整功能

適合誰使用?

  • 程式新手:想要學習機器人開發的初學者
  • 小企業主:需要自動化客服或群組管理
  • 開發者:想要快速建立聊天機器人原型
  • 創業團隊:需要低成本的自動化解決方案

建構步驟與模組

1. 環境準備(約需10分鐘)

在開始建構你的第一個聊天機器人之前,我們需要先準備好開發環境。別擔心,這些工具都是免費的!

安裝 Node.js

Node.js 是執行 JavaScript 程式的環境,就像手機需要作業系統一樣。

步驟: 1. 前往 Node.js 官網 2. 下載 LTS 版本(目前建議 v18 或更新版本) 3. 下載完成後,雙擊安裝檔案,按照指示完成安裝 4. 安裝完成後,開啟終端機(Windows 用戶請開啟「命令提示字元」) 5. 輸入 node --version 確認安裝成功

預期結果: 應該會顯示類似 v18.17.0 的版本號

檢查 npm

npm 是 Node.js 的套件管理工具,會隨著 Node.js 一起安裝,用來下載和管理程式庫。

  • 在終端機輸入 npm --version
  • 應該會顯示類似 9.6.7 的版本號
選擇性:安裝程式碼編輯器

雖然不是必需,但建議安裝一個好用的編輯器: - Visual Studio Code(推薦):免費、功能強大 - Sublime Text:輕量級選擇 - Atom:GitHub 開發的編輯器

2. 快速安裝 Wechaty(約需2分鐘)

現在讓我們安裝 Wechaty!這個過程很簡單:

建立專案資料夾
mkdir my-wechat-bot    # 建立專案資料夾
cd my-wechat-bot       # 進入資料夾
npm init -y            # 初始化 npm 專案
安裝 Wechaty
npm install wechaty

安裝過程中你會看到: - 下載進度條 - 各種套件名稱快速滾動 - 最終顯示「安裝完成」的訊息

如果遇到錯誤怎麼辦? - 網路問題:可以嘗試使用淘寶鏡像:npm install wechaty --registry=https://registry.npm.taobao.org - 權限問題:Windows 用戶可能需要以「系統管理員身分」執行命令提示字元 - 版本衝突:清除快取後重試:npm cache clean --force

3. 建立你的第一個機器人(約需15分鐘)

現在是最有趣的部分!讓我們建立一個會自動回覆的機器人。

建立基礎機器人檔案

在你的專案資料夾中建立一個新檔案:bot.js

// 匯入 Wechaty
import { WechatyBuilder } from 'wechaty'

// 建立機器人實例
const bot = WechatyBuilder.build({
  name: 'my-first-bot', // 給你的機器人取個名字
})

// 當需要掃描 QR Code 登入時
bot.on('scan', (qrcode, status) => {
  console.log('請用微信掃描以下網址的 QR Code 登入:')
  console.log(`https://wechaty.js.org/qrcode/${encodeURIComponent(qrcode)}`)
  console.log(`狀態: ${status}`)
})

// 當成功登入時
bot.on('login', (user) => {
  console.log(`🎉 機器人登入成功!歡迎 ${user.name()}`)
})

// 當收到訊息時
bot.on('message', async (message) => {
  console.log(`收到訊息: ${message.text()}`)
  
  // 忽略機器人自己發送的訊息
  if (message.self()) return
  
  // 簡單的自動回覆
  if (message.text() === '你好') {
    await message.say('你好!我是機器人助手 🤖')
  }
})

// 啟動機器人
bot.start()
  .then(() => console.log('🚀 機器人啟動成功!'))
  .catch(error => console.error('❌ 啟動失敗:', error))
進階範例:智能客服機器人

讓我們建立一個更實用的客服機器人 smart-bot.js

import { WechatyBuilder } from 'wechaty'

const bot = WechatyBuilder.build({ name: 'smart-customer-service' })

// 常見問題和回答
const faqDatabase = {
  '營業時間': '我們的營業時間是週一到週五 9:00-18:00',
  '聯絡方式': '客服電話:02-1234-5678\n客服信箱:service@example.com',
  '退貨政策': '商品到貨7天內可無條件退貨,請保持商品完整包裝',
  '運費': '單筆訂單滿1000元免運費,未滿則收取60元運費',
  '付款方式': '支援信用卡、ATM轉帳、貨到付款'
}

bot.on('scan', (qrcode, status) => {
  console.log('🔗 登入網址:https://wechaty.js.org/qrcode/' + encodeURIComponent(qrcode))
})

bot.on('login', (user) => {
  console.log(`✅ ${user.name()} 登入成功`)
})

bot.on('message', async (message) => {
  if (message.self()) return // 忽略自己的訊息
  
  const messageText = message.text()
  const contact = message.from()
  
  console.log(`📨 ${contact?.name()}: ${messageText}`)
  
  // 關鍵字匹配回覆
  for (const [keyword, answer] of Object.entries(faqDatabase)) {
    if (messageText.includes(keyword)) {
      await message.say(`📋 ${answer}`)
      return
    }
  }
  
  // 如果沒有匹配到關鍵字
  if (messageText === '幫助' || messageText === 'help') {
    const helpText = `🤖 我可以回答以下問題:\n\n${Object.keys(faqDatabase).map(key => `• ${key}`).join('\n')}\n\n請輸入關鍵字或直接詢問!`
    await message.say(helpText)
  } else if (messageText.length > 0) {
    await message.say('🤔 抱歉,我不太理解您的問題。請輸入「幫助」查看我能回答的問題清單。')
  }
})

// 處理群組訊息
bot.on('message', async (message) => {
  if (message.room() && message.mentionSelf()) {
    // 如果在群組中被 @ 到
    await message.say('👋 您好!我是群組助手,有什麼可以幫助您的嗎?')
  }
})

bot.start().then(() => console.log('🚀 智能客服機器人啟動!'))
運行你的機器人
  1. 執行基礎機器人

    node bot.js

  2. 執行智能客服機器人

    node smart-bot.js

登入流程
  1. 執行程式後,終端機會顯示一個網址
  2. 在瀏覽器中打開該網址,會看到 QR Code
  3. 用微信掃描 QR Code
  4. 在微信中確認登入
  5. 成功!你的機器人就上線了

💡 測試建議: - 先對機器人發送「你好」測試基本功能 - 對智能客服機器人發送「營業時間」、「幫助」等關鍵字 - 在群組中 @ 機器人測試群組功能

4. Wechaty 核心模組與 API

Wechaty 提供了一系列強大的類別和 API,以實現更複雜的機器人功能:

  • Wechaty 類別:這是主要的機器人類別,負責控制特定的 wechaty-puppet(協議提供者),並提供登入、登出、訊息接收等核心事件與方法。
  • Contact 類別:封裝了所有微信聯絡人(包括好友和非好友)。您可以用它來查詢聯絡人、同步資料、發送訊息,並獲取聯絡人的姓名、別名、性別、地區和頭像等資訊。ContactSelf 類別是 Contact 的延伸,專用於機器人本身的聯絡人資訊,如設定頭像或獲取自身的 QR Code。
  • Message 類別:封裝了所有微信消息。透過此類別,您可以獲取訊息的發送者 (from)、接收者 (to)、所在的群組 (room)、文字內容 (text),並可以回覆 (say) 或轉發 (forward) 訊息。
  • Room 類別:封裝了所有微信群組。您可以利用它來建立群組、查詢群組、發送訊息、管理群組成員(新增/刪除)、設定群組主題、以及獲取群組的 QR Code 供他人掃碼加入。RoomInvitation 類別則用於處理接受群組邀請的事件。
  • Friendship 類別:處理好友請求的發送、接收和確認事件。

5. 機器人部署:讓它 24 小時為你工作

當你的機器人測試成功後,就可以部署到伺服器上,讓它持續運行。以下是幾種部署方式的詳細說明:

總結

通過這份完整指南,你已經學會了:

  1. 🎯 理解 Wechaty 的核心概念:跨平台聊天機器人開發框架
  2. ⚙️ 建立開發環境:從 Node.js 安裝到 Wechaty 配置
  3. 🤖 編寫第一個機器人:基礎回覆到智能客服
  4. 🚀 部署到生產環境:從本地測試到雲端運行

現在,你已經具備了建立專業聊天機器人的所有技能!開始你的機器人開發之旅吧!

如果有什麼想法,還請多多分享,祝福大家開發順利!

留言

這個網誌中的熱門文章

[CSS] z-index 在不同瀏覽器繼承問題

今天會討論到這個課題,是因為要實做一個Popup dialog,所以我們希望的結果如下圖。 可是在IE7 卻發生了這樣的情況。 Popup不論怎麼設定z-index都無法浮在最上層,我們看一下html架構發生什麼事情。

[教學] 快快樂樂刪除CodeIgniter index.php

預設的CI網址預設都設定為index.php同一層級,因此所有的程式都必須指定index.php導向才能開始,例如 http://localhost/ci/index.php/welcome/test http://localhost/ci/welcome/test 本文將說明如何將惱人的index.php消除,還你一個漂亮的URL。 設定開始: 接下來說明如何使用rewrite方式將惱人的index.php去除。 rewrite不清楚的人,煩請先自行google 首先要先確定Apache的 mod_rewrite 有 開啟 ,如果沒有開啟請設定好之後重新啟動apache。 接著,在根目錄底下建立一個新檔案,檔名為 .htaccess ,裡面程式碼如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 接著到 application/config/config.php ,開啟檔案修改 $config['index_page'] = ""; 注意: /index.php/$1 要根據你目錄,例如 http://localhost/index.php ,網站根目錄為 /ci/index.php 則要寫成 /ci/index.php/$1 接著至CI目錄下,尋找 config\config.php , 修改一下裡面的檔案,修改如下: $config['index_page'] = ""; 存檔後,如此一來大功告成。 參考資料 官方網站說明

[教學] Mojito 安裝與入門,install mojito for beginner.

mojito ,最近終於從 YDN 對外公開此專案,這個套件主要用於解決前端多重裝置及瀏覽器端的問題,後端服務採取 node.js ,因此使用上必定要先準備以下幾個元素 準備素材 c++ complier git Node.js > 0.4.x NPM > 1.0.x 安裝方式 git clone git://github.com/yahoo/mojito.git cd mojito/source sudo npm install -g . npm install . 以上四個簡單的步驟,就可以把 mojito module 完整安裝到服務器上,接著就可以開始進入 mojito 的世界 使用方式 mojito 提供了完整的 command line 給開發者使用,接著先建立一個基本 hello world 專案,跟著以下步驟完成第一個專案。首先建立一個 mojito application, mojito create app hello cd hello 切換到目錄之後,再接著建立自己的 mojit,這邊的 mojit 就像是一個應用(application)可能會包含許多個獨立網站體,擁有獨立架構的 MVC ,包含內部設定等,詳細資料可以參考官方的 說明 ,建立 mojit mojito create mojit HelloMojit 輸入指令後,會看到顯示結果如下, creating mojit called 'HelloMojit' (using "default" archetype) ✔ mojit: HelloMojit created! ✔ mojito done. 接著修改 application.json 這個 mojit 設定檔案,讓剛才新建立的 hellp application 指定底下有一個 mojit -> HelloMojit ,讓應用可以去執行 mojit controller ,修改如下, [ { "settings": [ "master" ], "appPort": 8666, "specs": { ...