為什麼需要聊天機器人?
在這個數位化時代,聊天機器人已經成為企業與客戶互動的重要工具。無論是客服自動回覆、會議提醒、群組管理,還是訊息轉發,聊天機器人都能大幅提升工作效率,讓重複性的工作自動化處理。
想像一下:
- 🤖 自動客服:24小時回答常見問題,不用擔心客戶半夜找不到人
- 📅 智能助理:自動提醒會議、生日、重要事項
- 👥 群組管理:自動歡迎新成員、分享重要訊息、過濾垃圾訊息
- 🔄 訊息轉發:將重要訊息自動轉發到相關群組或個人
什麼是 Wechaty?
Wechaty 是一個對話式 RPA (機器人流程自動化) SDK,專為聊天機器人開發者設計。它就像是聊天機器人界的「萬能翻譯機」,讓你寫一次程式碼,就能在多個平台上使用。
Wechaty 的核心優勢:
- 跨平台支援:一套程式碼可以同時支援微信、WhatsApp、飛書等多個平台
- 多語言支援:支援 JavaScript、Python、Go、Java 等7種程式語言
- 開源免費:完全開源,有活躍的社群支持
- 簡單易學:最少只需要6行程式碼就能建立一個基礎機器人
- 功能強大:支援發送訊息、管理群組、處理好友請求等完整功能
適合誰使用?
- 程式新手:想要學習機器人開發的初學者
- 小企業主:需要自動化客服或群組管理
- 開發者:想要快速建立聊天機器人原型
- 創業團隊:需要低成本的自動化解決方案
建構步驟與模組
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('🚀 智能客服機器人啟動!'))
運行你的機器人
執行基礎機器人:
node bot.js
執行智能客服機器人:
node smart-bot.js
登入流程
- 執行程式後,終端機會顯示一個網址
- 在瀏覽器中打開該網址,會看到 QR Code
- 用微信掃描 QR Code
- 在微信中確認登入
- 成功!你的機器人就上線了
💡 測試建議: - 先對機器人發送「你好」測試基本功能 - 對智能客服機器人發送「營業時間」、「幫助」等關鍵字 - 在群組中 @ 機器人測試群組功能
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 小時為你工作
當你的機器人測試成功後,就可以部署到伺服器上,讓它持續運行。以下是幾種部署方式的詳細說明:
總結
通過這份完整指南,你已經學會了:
- 🎯 理解 Wechaty 的核心概念:跨平台聊天機器人開發框架
- ⚙️ 建立開發環境:從 Node.js 安裝到 Wechaty 配置
- 🤖 編寫第一個機器人:基礎回覆到智能客服
- 🚀 部署到生產環境:從本地測試到雲端運行
現在,你已經具備了建立專業聊天機器人的所有技能!開始你的機器人開發之旅吧!
如果有什麼想法,還請多多分享,祝福大家開發順利!
留言
張貼留言